【问题标题】:How to stop WebKit recursively reducing font size?如何阻止 WebKit 递归减小字体大小?
【发布时间】:2020-08-06 15:25:10
【问题描述】:

我正在使用 WebKit,我正在尝试减小一个元素及其所有内容的字体大小。这是元素的示例:

<div id="element">
<div>The element has a sub-element with <i>italic</i>, <strong>strong</strong> and other tags.</div>
</div>

这个 CSS 根本不会缩小字体:

#element {
    font-size: smaller;
}

如果我只选择内部&lt;div&gt;&lt;i&gt;&lt;strong&gt; 的字体大小不会减小:

#element div {
    font-size: smaller;
}

我无法单独选择每个标签,因为我不知道所有可能的嵌套标签。最后的机会是使用星号:

#element * {
    font-size: smaller;
}

但是这个 CSS 效果更差:它递归地减小每个嵌套标签的大小。

此行为非常意外,无法在 Chrome 中重现。这是WebKit的错误吗?是否可以禁用递归减小字体大小的“功能”?

【问题讨论】:

    标签: css webkit font-size


    【解决方案1】:

    你可以使用&gt; *选择器

    #element > * {
        font-size: smaller;
    }
    

    这将选择每个标记为#element 的直接子标记,但不会更深入。

    您编写的选择器 - #element * - 将样式应用于 #element 内的每个元素,无论它是直接子元素还是非常嵌套的元素。所以这发生在你的例子中:&lt;div&gt; 的字体大小比#element 小,&lt;i&gt; 的字体大小比&lt;div&gt; 小(所以现在它比#element 小两倍)等等。

    您可以阅读有关选择器的更多信息here

    【讨论】:

    • 不幸的是,这没有帮助。当然,选择器可以工作并选择直接孩子......但孙子根本不受规则的影响。例如,如果规则将大小减小 50%,则子级变为 50%,但大子级再次变为 100%。看起来这是一个 WebKit 错误。
    • 好吧,原来是我误解了你的问题。现在我发现#element div 选择器不会影响您的标签很奇怪。您是否尝试使用rem/em 单位?
    【解决方案2】:

    我的元素选择器#element#element div 可以正常工作。也就是说,里面的所有元素都减少了。尝试运行我在下面编写的 sn-p 代码,如果一切正常,那么很可能您在代码的其他位置指定了不同的字体大小。如果在sn-p中没有减少,那么可能是浏览器有问题。如果有任何困难,请写在评论中,我准备帮助您解决问题。

    #element {
        font-size: smaller;
    }
    
    #element2 div {
        font-size: smaller;
    }
    <div id="element"><div>If you accept font-size smaller to id #element then everything is reduced as needed including <i>italic</i> and <strong>strong</strong></div></div>
    
    <div id="element2"><div>If you accept font-size smaller to div inside #element2 then everything is reduced as needed also including <i>italic</i> and <strong>strong</strong></div></div>

    【讨论】:

    • 我的问题是关于这在 WebKit 中是如何工作的以及如何避免它的不良行为。
    • 对不起,我的错。也许它会帮助您将文本的其余部分设为跨度&lt;div id="element"&gt; &lt;div&gt;&lt;span&gt;The element has a sub-element with&lt;/span&gt; &lt;i&gt;italic&lt;/i&gt;&lt;span&gt;,&lt;/span&gt; &lt;strong&gt;strong&lt;/strong&gt; &lt;span&gt;and other tags.&lt;/span&gt;&lt;/div&gt; &lt;/div&gt;,然后对所有元素使用#element div &gt; *。不是最好的解决方案,但很可能有效
    • :) 不,这不是解决方案。
    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 2020-12-05
    • 1970-01-01
    • 2014-11-15
    • 2011-12-17
    • 2016-09-18
    相关资源
    最近更新 更多