Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css IE7-UL>;带有';额外';填充-为什么zoom:1(`hasLayout`)可以工作?_Css_Internet Explorer 7 - Fatal编程技术网

Css IE7-UL>;带有';额外';填充-为什么zoom:1(`hasLayout`)可以工作?

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

问题摘录:我有一个菜单,它可以在所有浏览器中使用,但在IE7上有缺陷。我解决了投掷
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
之间有一个空格。我已经尝试了以下方法:

它们都不起作用,而且开发工具上也没有指向边距或边框的内容(都是0,带有
!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>