CSS - 使用em设置子元素字体大小

11

如何在em不等于1的情况下,使所有嵌套列表项的大小相同?例如,我想让此列表中的所有li元素大小为其ul父元素的0.85em。 我是否必须为每个“层级”创建一个单独的类?

<html>
<head>
    <style type="text/css">
        li
        {
            font-size: 0.85em;
        }
    </style>
</head>
<body>
    <ul>
        <li>Level 1 item
            <ul>
                <li>Level 2 item
                    <ul>
                        <li>Level 3 item</li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</body>
</html>
7个回答

9

使用“rem”单位进行字体大小调整。这可以解决字体继承问题。

Johnathan Snook在这篇文章中有很好的阐述。


是的,这确实是最好的方法。我可以补充一点,你应该使用像素来设置回退值。就像这样:li {font-size: 8.5px; font-size: 0.85em;} 而且你应该将基础字体大小设置在html元素上,而不是通常的body元素上。 - Mike Eshva
1
@MikeEshva:你的CSS示例应该是{font-size: 8.5px; font-size: 0.85rem;}。 - chotchki
请注意,"rem" 仅在 IE9 及以上版本可用。 - Travis

7

应该可以工作。

li li {font-size: 100%;}

1
它确实可以,但这不是最有效的方法。 - Bobby Jack
@Bobby,为什么这不是最有效的方法? - You
不需要在您的页面上添加额外的标记,这是最简单的方法。 - Matt

0

(本答案假定您希望所有li元素的大小相同(您在问题中说要相同大小和不同大小))

字体大小层叠,因此如果您只在外部元素上设置它(例如包装器div或其他内容),则其中的所有内容都会像您想要的那样缩小一步。

<div id="navigation">
    <ul>
        <li>...</li>
        <li>
        <ul><li>...</li><li>...</li></ul>
        </li>
    </ul>
</div>

#navigation { font-size: 0.85em; }

上面的示例按照预期工作。即使在不支持子选择器的IE6中也是如此。 - Emil Stenström
没错 - 我正在使用他给我们的HTML工作。他没有指定浏览器兼容性,所以我假设他想要遵循CSS2.1规范的东西。 - Bobby Jack
问题中哪里说他想让它们成为不同的大小? - Bobby Jack
“使所有嵌套列表项大小相同”与“将此列表中的所有li大小设置为ul父元素的0.85em”。我倾向于第一个选项,但我不能确定,而且由于某种原因人们正在对我的答案进行投票,所以我只是想澄清一下。 - Emil Stenström
好的,我已经取消了对你回答的负评,因为这似乎是一个真正的误解,而且你的回答确实有效。但我认为很清楚——“使所有嵌套列表项大小相同”意味着,“……与彼此相同”。另一句引用只是说明它们都应该是基础字体大小的0.85em计算值——我看不出任何不一致之处。 - Bobby Jack
这个例子有点具体;如果有多个列表怎么办?一个类会起作用,但那是语义的,还是只是冗余的? - You

0

我的建议是给第一个<ul>设置一个id或class,并在那里设置font-size


0

我同意Emil的观点,如果我有足够的声望积分(我是新手),我会为他投票。我会像他在第一个观点中提到的那样使用一个类,使其在同一文档中可重复使用。如果您想要跨浏览器,并且正在使用当前的CSS规范,那么我无法建议更好的真实世界例子......期待CSS 3的到来和IE6的死亡!


谢谢你的精神支持! :) - Emil Stenström
这是我会做的方式,我认为因为你实际上是正确的并给出了好建议而被打分是不公平的。 - Crayonz

-1
我希望这个列表中的所有li元素都能够按照其ul父元素的0.85em大小进行调整。
body > ul { font-size: 0.85em; }

会这样做


-1
li { font-size: 0.85em; }
li li { font-size: 1em; }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接