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中行内元素后的浮动元素被折行的问题如何解决内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
css让页脚保持在底部位置的四种方案

CSS如何使用Flex和Grid布局如何实现3D骰子

Flex布局史上最简单使用语法教程

新的CSS 伪类函数 :is() 和 :where()示例详解

纯CSS打字动画的如何实现示例