我的页面上有几个未排序的列表.两个列表都使用list-style:disc inside;.每个列表的列表项都有几个div.问题是列表项的内容占用多行,并且光盘垂直出现在多行列表项的底部.
这是一种显示我遇到的问题的screenshot种.请注意,我从类似的问题中偷走了图像,它不是我的HTML或CSS.
这是我的HTML的条纹版本:
<html> <head> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="billing_form"> <div id="purchase_items"> <h2>Your purchase</h2> <h4>Items:</h4> <div class="items"> <ul> <li> <div class="item">First Product - one year license</div> <div class="price">$99.00 USD</div> </li> <li> <div class="item">Second product & 3 year Product Plan</div> <div class="price">$125.00 USD</div> </li> </ul> </div> <div class="subtotal">SUBTOTAL: $224.00 USD</div> <h4>Discounts:</h4> <div class="discount"> <ul> <li> <div class="item">A really long discount item name - with extra info on three lines!</div> <div class="price">- $20.00 USD</div> </li> </ul> </div> <div class="total">TOTAL: $204.00 USD</div> </div> </div> </body> </html>
这里是CSS,我认为是相关的小:
html { font-family: sans-serif; } #billing_form { width: 350px; margin: 0 auto; font-size: 14px; background-color: #EEEEEE; } #billing_form .items { position:relative; } #billing_form .discount { position:relative; color:#3665B0; } #billing_form ul { margin: 0; padding: 0; list-style: disc inside; } #billing_form .items .item,#billing_form .discount .item { display: inline-block; width: 190px; } #billing_form .price { float: right; padding-left: 20px; } #billing_form .items,#billing_form .discount,#billing_form .subtotal,#billing_form .total { width: 100%; } #billing_form .subtotal,#billing_form .total { text-align: right; margin-top: 5px; border-top: 1px solid; font-weight: bold; } #billing_form #purchase_items { margin: 10px 10px 10px; }
我发现了一个similar SO question.不幸的是,接受(并且唯一)的答案表明尝试位置:相对;和vertical-align:top;但它对我不起作用.我用#billing_form ul和#billing_form ul li试了一下,但都没用.他们还提到了一个IE7黑客修复,但我不认为这与我有关,因为我遇到了Firefox 3& 4和Google Chrome.
有谁知道如何使列表项子弹(光盘)出现在每个行项目的顶部?
解决方法
它看起来像vertical-align:text-top;会做你想做的事(
see spec).我相信原因是你正在创建一个高大的内嵌块,它与盒子的顶部对齐,被高大的内联盒向上推,因此与顶部对齐并不能达到你想要的效果.但是,我相信使用text-top会将其与文本所在的顶部(以及项目符号点)对齐.
http://jsfiddle.net/Yayuj/是一个小提琴,做你想要的(我相信),并主要从你的CSS更新部分:
#billing_form .discount .item { display: inline-block; width: 190px; vertical-align: text-top; }
与上面粘贴的任何其他差异都应该是装饰性的.