- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
在 Mac Mojave 10.14.2 上的 Safari 12.0.2 和 Chrome 71.0.3578.98 中,当使用 rem
单位设置 font-size
时,实际大小不会低于 9px
。
看这个例子:
https://codepen.io/stephenjwatkins/pen/OrbGxL
我的浏览器的字体大小设置为默认值 (16px
),最小字体大小设置为 6px
:
将 text-size-adjust
设置为 none
不会影响该问题。 Firefox 正确呈现大小。
我发现唯一可以解决此问题的方法是将 font-size: 0;
设置为父元素。例如,如果您将 font-size: 0;
添加到 .container
,则会呈现正确的字体大小。
有谁知道为什么它不遵守低于特定阈值的 rem
大小?
最佳答案
Chrome 及其 Blink 渲染引擎似乎有一些不明显的字体缩放规则。我不知道有任何正式的综合文档,所以让我们去源代码吧。
(请注意,我不是 Chromium 内部结构方面的专家,尤其是 Blink 渲染器方面的专家。我只是一直在跟踪源代码并推测所提出问题的最可能答案。)
在我看来,引擎调用了 the FontBuilder
class在重绘期间。这个类有各种调度方法,将 DOM、缩放和其他相关因素传递到看似关键的方法中:FontSize :: getComputedSizeFromSpecifiedSize
.在这种方法中,我们看到了一些有趣的评论来解决您提出的问题:
<强>1。为什么将 font-size: 0;
设置为父元素可以修复它?
// Text with a 0px font size should not be visible and therefore needs to be
// exempt from minimum font size rules. Acid3 relies on this for pixel-perfect
// rendering. This is also compatible with other browsers that have minimum
// font size settings (e.g. Firefox).
<强>2。为什么它不接受低于特定阈值的 rem 大小?
// We support two types of minimum font size. The first is a hard override
// that applies to all fonts. This is "minSize." The second type of minimum
// font size is a "smart minimum" that is applied only when the Web page can't
// know what size it really asked for, e.g., when it uses logical sizes like
// "small" or expresses the font-size as a percentage of the user's default
// font setting.
// With the smart minimum, we never want to get smaller than the minimum font
// size to keep fonts readable. However we always allow the page to set an
// explicit pixel size that is smaller, since sites will mis-render otherwise
// (e.g., http://www.gamespot.com with a 9px minimum).
<强>3。出于好奇,当给定相对单位(例如 x-small
)时,这些最小值是多少?
// Strict mode table matches MacIE and Mozilla's settings exactly.
static const int strictFontSizeTable[fontSizeTableMax - fontSizeTableMin +
1][totalKeywords] = {
{9, 9, 9, 9, 11, 14, 18, 27}, {9, 9, 9, 10, 12, 15, 20, 30},
{9, 9, 10, 11, 13, 17, 22, 33}, {9, 9, 10, 12, 14, 18, 24, 36},
{9, 10, 12, 13, 16, 20, 26, 39}, // fixed font default (13)
{9, 10, 12, 14, 17, 21, 28, 42}, {9, 10, 13, 15, 18, 23, 30, 45},
{9, 10, 13, 16, 18, 24, 32, 48} // proportional font default (16)
};
// HTML 1 2 3 4 5 6 7
// CSS xxs xs s m l xl xxl
// |
// user pref
有趣的是,FontBuilder
类调度到 TextAutosizer :: computeAutosizedFontSize缩放字体大小。此方法使用硬编码值和可变比例因子:
// Somewhat arbitrary "pleasant" font size.
const float pleasantSize = 16;
// Multiply fonts that the page author has specified to be larger than
// pleasantSize by less and less, until huge fonts are not increased at all.
// For specifiedSize between 0 and pleasantSize we directly apply the
// multiplier; hence for specifiedSize == pleasantSize, computedSize will be
// multiplier * pleasantSize. For greater specifiedSizes we want to
// gradually fade out the multiplier, so for every 1px increase in
// specifiedSize beyond pleasantSize we will only increase computedSize
// by gradientAfterPleasantSize px until we meet the
// computedSize = specifiedSize line, after which we stay on that line (so
// then every 1px increase in specifiedSize increases computedSize by 1px).
const float gradientAfterPleasantSize = 0.5;
从这些事实中,我们看到有大量的硬编码像素值,9
和 16
通常散布在相关代码中。这些硬代码、将字体缩小到极限的若干规则的存在,以及使用字体大小覆盖的能力,所有这些似乎都符合观察结果,并表明它的行为符合预期——即使不一定是直观的。
此外,我发现最近的评论发布在 Chrome bug #319623 中与您的报告非常相似。
Possibly related: when using relative units on the html tag, rem-based values defined elsewhere will have a lower bound of 9px.
See CodePen: http://codepen.io/larrybotha/pen/wKYYXE
Workaround: absolute unit on html, em unit on body. rems everywhere else.
观察该错误以进一步发展可能是谨慎的,尽管可能不会屏住呼吸。最后一次更新是在 2015 年。
关于css - REM 字体大小未调整到任意阈值以下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53856831/
在 VS 代码中,当我使用 Ctrl+/ 切换注释时,它会用 @REM 注释该行。我如何更改它以仅使用 REM 注释该行? 最佳答案 看看这个扩展,Custom Language Properties
我有以下 HTML 代码: Hello World 我正在设计它的样式: h1 {font-size:100pt} 如何将此 100pt 转换为 EM 和 REM? 最佳答案 在 CSS 中, - p
我一直在为这个问题绞尽脑汁,谷歌搜索并没有真正提供太多帮助,甚至没有关于这个问题的文档,但它极大地影响了我目前向移动友好型设计的转变。 无论我走到哪里,每个人都在吹捧使用基于 rem 的布局作为新的黄
我有以下内容: 我希望我的输入框最多包含 4 个字符。如果我使用 rem 单位,在确定宽度时是否应该使用一些公式? 最佳答案 除非您使用等宽字体,否则您无法真正知道它应该有多宽。 这是来自 CSS
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
我正在为所有类型的元素使用 rems,例如: html: 62.5%; .element { font-size: 1.6rem; margin: 2rem 0 1rem 0; pa
我在移动设备上遇到响应式设计问题,请查看代码和图片。这两者之间的区别是 html 根元素的字体大小,我将一个设置为百分比,另一个设置为 px,但是设置百分比的设置不正确,而设置 px 的设置正常。图片
我正在尝试使用 rem 来尊重用户对字体大小的设置: 我首先在我的 css 文件中添加了以下内容: html { font-size: 62.5%; } 然后我将 font-size 作为 rem 添
我为一个网站编写了一个组件,该组件呈现一些 HTML,并使用 CSS 设置此 HTML 的样式。到目前为止,一切都很好。现在我们有以下约束: 该网站为 body 设置了 14px 的 font-siz
我正在使用 CSS 断点 来更新我网站上的字体大小。 常规文本会按预期响应,但受使用 rem 值的类影响的文本不会。 谁知道为什么? (在整页中尝试该片段并调整浏览器大小) body { font-s
我正在尝试使用 rem 命令在包含多个命令的命令行中添加注释。下面是一些例子来说明我的意思: echo Hello & rem.Comment & echo world! (echo Hello &
在 Mac Mojave 10.14.2 上的 Safari 12.0.2 和 Chrome 71.0.3578.98 中,当使用 rem 单位设置 font-size 时,实际大小不会低于 9px。
如何将 PX 转换为适合我的类型的 REM?我读过 Jonathan Snook 关于使用 REM 的文章,但他使用的是 font-size:62.5%,默认字体大小为 10px(为了更容易计算)。如
我今天一直在尝试在一个新站点上使用 em/rem,并且有几件事我想在这里讨论/询问。 多年来,我一直是一个完全基于像素的人,在需要时会投入一些百分比。 我一直在读到 em 和 rem 是网络应有的“方
我注意到 REM 单位可用于元素的大小,而不仅仅是字体大小。并且对 HTML 字体大小属性非常有用。 html { font-size:1vw } @media all and (max-width:
我必须将一些 sass 移植到 css 并且我有数千个 rem-calc 声明。 所以我需要例如 rem-calc(10 15 20 15); 为 10px 15px 20px 15px; 从 /re
我意识到 Bootstrap 将使用 v4 切换到 rem。但是,我使用的是当前版本 (v3),我想使用 rem。 原因?我希望网站上有可以为最终用户缩放字体大小的按钮。我相信最好的实现方式是使用 r
我正在创建自己的入门框架。 Link here 首先,请原谅庞大的 CDN 插件列表。现在我只是在为常用脚本编写一些自定义 css 覆盖,以便它们更容易为不同的元素设置样式。 我遇到的问题是在 ie
它应该很简单,但无论出于何种原因,rem 都不适合我。 比如我有 I will make sure you get upvoted, if you answe
正文的字体大小为18px。 我的标题都声明为 rem 值。我希望 margin-bottom 与每个标题的 line-height 一样大,而 margin-top 是每个标题 line-height
我是一名优秀的程序员,十分优秀!