【发布时间】:2011-12-25 12:30:31
【问题描述】:
我制作了一个纯 CSS 的下拉菜单。要求是有一个水平条的项目,每个项目可以下拉一个垂直菜单。此外,这些项目不应删除三级菜单,而应仅显示项目符号列表。我的 html 有三个嵌套的ul,并且菜单在所有现代浏览器中都能完美运行。它看起来像这样:
但是,我不喜欢链接后面的较暗框从项目符号右侧开始并且没有延伸到整个菜单宽度,所以我玩了一会儿,最后做出了这个调整:
#nav li ul li ul li a {
padding-left:1.8em;
margin-left:-1.8em;
}
现在项目符号菜单项看起来就像我想要的那样:
并且由于em 蜜蜂相对于字体大小的性质,它的工作方式独立于字体大小,如此处显示的较大字体大小:
我在 Internet Explorer 8+9+10(开发者预览版)、Firefox 3+7、最新的 Chrome、Opera 和 Safari 上对此进行了测试,效果非常好。
但是,我只是不明白为什么正是 1.8em 来完成这项工作。为什么每个浏览器都将项目符号项缩进这么远?我在互联网上搜索了这个主题,但没有发现任何有用的东西。我可以确定这适用于未来的浏览器吗?那些 1.8em 是在 HTML 标准中指定的吗?
提前感谢您的任何提示!
编辑:
致DisgruntledGoat's 回答:如果我使用1em/-1em 或20px/-20px 将不起作用。使用这种风格:
#nav li ul li ul li a {
padding-left:20px;
margin-left:-20px;
}
对于不同的字体大小,我得到了这个(显然不是随字体大小缩放)结果:
同样,1em/-1em 也是关闭的,看起来像上图中的右侧,但会随着字体大小缩放。出于某种原因,它仍然看起来像 1.8em 是魔法距离......
【问题讨论】:
-
其实所有浏览器的默认值都是40px,而不是1.8em。
-
@DisgruntledGoat:好吧,现在我更困惑了……那为什么我的解决方案甚至适用于不同的字体大小?
-
没有看到你的其余代码,我不能确定,但我猜它是在你的 CSS 中的某个地方定义的。默认情况下,项目符号实际上不占用任何空间,如果列表中没有填充,则项目符号将不可见。
-
@Ryan Kinal:我在这里设置了一个小提琴jsfiddle.net/24M5q,如果你想仔细看看的话。 MenuItem3 在悬停时下拉。
-
是的。它被定义了。看我的回答。
标签: css browser fonts cross-browser html-rendering