IE6和IE7中行内元素后的浮动元素被折行的问题如何解决

云南的天空有一种静谧之美,在这片土地上就连时间都流淌得格外缓慢。东方刚露出第一抹红霞,小河像一位刚梳洗完毕的姑娘,对着镜子整理晨妆,面颊上飞出几片羞答答的红晕。

一、实例

XML/HTML Code复制内容到剪贴板
  1. <ulclass="list">
  2. <li><arel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a><span>2014-05-06</span></li>
  3. <li><arel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a><span>2014-05-06</span></li>
  4. <li><arel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a><span>2014-05-06</span></li>
  5. <li><arel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a><span>2014-05-06</span></li>
  6. </ul>
CSS Code复制内容到剪贴板
  1. <styletype="text/css">
  2. body,ul{padding:0;margin:0;}
  3. ul{list-style-type:none;border:1pxsolid#ccc;}
  4. li{padding-left:0;}
  5. .list{width:300px;margin:100pxauto;}
  6. .listli{height:24px;line-height:24px;border-bottom:1pxsolid#ccc;margin-bottom:-1px;padding-left:10px;}
  7. .listlispan{float:rightright;margin-right:10px;}
  8. .listli.float_a{float:left;}
  9. .fix{*zoom:1;}
  10. .fix:after{display:block;content:".";visibility:hidden;clear:both;height:0;overflow:hidden;}
  11. </style>

二、各浏览器效果图

三、原因分析
1.标准参考:
W3C CSS2.1规范文档里对于浮动元素与非浮动行内元素相邻时的情况有如下解释。以下是关键段落:
A floated box is shifted to the left or right until its outer edge touches the containing block edge or the outer edge of another float. If there’s a line box, the top of the floated box is aligned with the top of the current line box.
由上面的描述可以得到以下结论:如果一个元素浮动前是一个行内元素,则该元素浮动后,顶部应与其之前所在的行框顶部对齐。
2.问题描述:
IE6 IE7 IE8(Quick)下,若浮动元素之前存在兄弟行内非浮动元素,IE 会将浮动元素所在的“当前行”认为是其前边的兄弟行内元素所产生的匿名框的底边,导致该浮动元素折行。

四、解决方案
1.全浮动

CSS Code复制内容到剪贴板
  1. <ulclass="list">
  2. <liclass="fix"><aclass="float_a"rel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a><span>2014-05-06</span></li>
  3. <liclass="fix"><aclass="float_a"rel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a><span>2014-05-06</span></li>
  4. <liclass="fix"><aclass="float_a"rel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a><span>2014-05-06</span></li>
  5. <liclass="fix"><aclass="float_a"rel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a><span>2014-05-06</span></li>
  6. </ul>

2.放置浮动元素在前

CSS Code复制内容到剪贴板
  1. <ulclass="list">
  2. <li><span>2014-05-06</span><arel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a></li>
  3. <li><span>2014-05-06</span><arel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a></li>
  4. <li><span>2014-05-06</span><arel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a></li>
  5. <li><span>2014-05-06</span><arel="nofollow noopener noreferrer" href="#"title="">新闻一Benjamin</a></li>
  6. </ul>

3.定位position
4.IE Hack+margin负值

到此这篇关于IE6和IE7中行内元素后的浮动元素被折行的问题如何解决就介绍到这了。做好手中事珍惜眼前人。更多相关IE6和IE7中行内元素后的浮动元素被折行的问题如何解决内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

标签: 被折行