Css IE7-UL>;带有';额外';填充-为什么zoom:1(`hasLayout`)可以工作?
问题摘录:我有一个菜单,它可以在所有浏览器中使用,但在IE7上有缺陷。我解决了投掷Css IE7-UL>;带有';额外';填充-为什么zoom:1(`hasLayout`)可以工作?,css,internet-explorer-7,Css,Internet Explorer 7,问题摘录:我有一个菜单,它可以在所有浏览器中使用,但在IE7上有缺陷。我解决了投掷zoom:1,但通常hasLayout相关问题涉及浮动、位置和内容。为什么这次zoom能让它工作 我有一个菜单,可以在每个浏览器中使用(甚至在IE8+上),如下所示: 由一个LI组成,其中包含一个使用.png BG作为1px边框的DIV和一个带有图标和文本的块a 恢复的HTML将是ul.adminMenu>li>(div.menuBorder)+(a{link}): (…其他李的…) li.active
zoom:1
,但通常hasLayout
相关问题涉及浮动、位置和内容。为什么这次zoom
能让它工作
我有一个菜单,可以在每个浏览器中使用(甚至在IE8+上),如下所示:
由一个LI
组成,其中包含一个使用.png BG作为1px边框的DIV
和一个带有图标和文本的块a
恢复的HTML将是ul.adminMenu>li>(div.menuBorder)+(a{link})
:
-
(…其他李的…)
li.active
的背景颜色较深
不幸的是,我必须让它在IE7标准模式下工作(这解释了为什么我使用带有.png的div而不是RGBA边框),它看起来是这样的:
对。li
的开头和“border”div
之间有一个空格。我已经尝试了以下方法:
!important
)
因此,问题是:
没有浮动元素,没有绝对定位的东西,只有块。为什么zoom:1
(触发hasloayout
)会让所有该死的空格消失?
(有一些额外的标记div,但忽略它们,为了简单起见,我删除了更多的内容)
我知道这是IE‘特性(bug)’的一部分,但我一直在寻找其他答案
列表
列表受应用于列表(ol、ul)或列表元素(li)的布局的影响。不同版本的IE反应不同。最明显的影响是列表标记(不需要标记的完全自定义列表不会有这些问题)。标记可能是通过在内部添加一些元素创建的,这些元素在某种程度上“附加”到列表元素(通常挂起),并且看起来相当不稳定。不幸的是,作为“内部”对象,无法访问它们以尝试纠正错误行为
最明显的影响是:
应用于列表的布局会使标记消失或位置不同/错误
有时,可以通过更改列表元素的边距来恢复它们。这看起来像是布局元素倾向于裁剪悬挂在其上的内部元素的结果
应用于列表元素的布局会产生与上述相同的问题,甚至更多(列表项之间的额外垂直空间)
另一个问题是(在有序列表中),任何具有布局的列表元素似乎都有自己的计数器。假设我们有一个有五个元素的有序列表,其中只有第三个元素有布局。我们将看到:
1。。。2.1.4.5
此外,当具有布局的列表元素显示在多行上时,标记在底部垂直对齐(不在顶部,如预期)
其中一些问题无法解决,因此当需要标记时,最好避免在列表和列表元素上布局。如果需要应用某些维度,则最好将其应用于其他元素:例如,可以将宽度应用于外部包装,将高度应用于每个列表项的内容
IE中列表的另一个常见问题发生在任何li的内容是带有显示的锚定时:block。在这些情况下,列表项之间的空白不会被忽略,通常会显示为每个li的额外行。避免这种额外垂直空间的方法之一是为块锚提供布局。这还具有使锚的整个矩形区域可单击的优点
欲了解更多详情,请访问:问题中的哪个元素是内联的?@BoltClock实际上,他引用的最后一段谈到了LI元素中的块锚。但是我试着给锚(和分隔符)添加缩放和宽度,但没有成功。只需放大
LI
本身,而不是锚定
(与文章中的建议相反)就行了。但是@C-Link,真是太棒了。如果没有其他人回答,我会接受你的回答,因为这篇文章提供了关于旧IE的hasBugLayout
:)的非常好的信息
<ul class="adminMenu">
<li>
<div class="menuBorder"></div>
<a href="">link</a>
</li>
(...other li's...)
</ul>