先贴代码:
1 < ul id ="newsList" > 2 < li >< span class ="txt" >< a href ="#" > 新闻标题 </ a ></ span >< span class ="date" > [2009-10-29] </ span ></ li > 3 < li >< span class ="txt" >< a href ="#" > 新闻标题 </ a ></ span >< span class ="date" > [2009-10-29] </ span ></ li > 4 < li >< span class ="txt" >< a href ="#" > 新闻标题 </ a ></ span >< span class ="date" > [2009-10-29] </ span ></ li > 5 < li >< span class ="txt" >< a href ="#" > 新闻标题 </ a ></ span >< span class ="date" > [2009-10-29] </ span ></ li > 6 </ ul > 7 < style type ="text/css" > 8 * { margin : 0 ; padding : 0 ; } 9 #newsList { width : 400px ; border : 1px solid #333 ; font-size : 14px ; margin : 20px auto ; } 10 #newsList li { background : gray ; line-height : 25px ; overflow : hidden ; color : #fff ; width : 100% ; list-style : none ; } 11 #newsList li .txt { float : left ; width : 300px ; } 12 #newsList li .txt a { color : #fff ; } 13 #newsList li .date { float : right ; } 14 </ style >
在firefox、Chrome、Safari、Opera
等W3C
浏览器中没有任何问题,但是在IE
系列版本(不包括IE8
)中,都会产生一个3px
的bug
,详见下图:
目前笔者所知道的解决方法有两种:
- 给
li
添加float
属性,属性值可以是除none
外的任意值 - 给
li
添加vertical-align
属性,属性值可以是任意值
从解决问题的实质上,这两种方法并无区别,都是通过添加相应的css属性来激发li的haslayout,但是方法2更适合来解决这个问题,因为一旦给 li添加浮动,那么势必要清除之,这是个棘手的问题,虽然有很多方法可以来解决浮动带来的麻烦,但是无形中增加了代码的负重,那是我们不想看到的,所以推荐使用方法2。