css - 将 "rem"与 "vw"结合用于灵活的网站

标签 css

<分区>

通过以下 CSS,我得到了一个精确的、按比例缩放的布局:

html {
    font-size: 1vw;
}

body {
    font-size: 1.6rem; // 16px @ 1000px screen width
}

.some-div {
    padding: 2rem; // 20px @ 1000px screen width
}

我喜欢这种方法的一点是,我可以在媒体查询之间保持一致的比率。因此,例如,无论是 480 像素、460 像素还是 440 像素宽,结果(文本、换行符/连字符、比例)在每部智能手机上看起来都完全一样。

在较大的屏幕上,我只是将根字体大小设置为固定单位,因此 UI 不会变得“太粗”并且表现得像传统网站:

html {
    font-size: 16px;
}

不需要数百或数千行“响应代码”,就像您通常在 Bootstrap 网站和其他“传统工作流程”中看到的那样。 如果我不需要按比例缩放,我什至会使用这种方法。仅仅是因为我已准备好在某个时候需要它时使用它。

但问题是,我从未在野外见过这种情况,我想知道为什么? 这种方法有什么缺陷吗?为什么不一般地使用它?

最佳答案

原则上是好的。但实际上,它至少存在以下问题:

  • 并非所有字体在所有尺寸下都很好看,也并非所有浏览器都能很好地近似它们。大多数问题出现在元素开始动画时,并且由于近似技术,在动画进行时文本看起来很模糊。更糟糕的是,为页面中的其他元素设置动画会影响未设置动画(不应移动)的文本,从而产生奇怪的效果。 (即:打开/关闭菜单时文本模糊...)。 为了解决这个问题,一些有问题的字体已经针对以 px 表示的 font-size 值进行了优化(它们在 15px 时看起来不错code>16px - 15.5px 不是那么多)。模糊效果仍然存在,但在某些值下并不明显。
  • 此技术需要在狭窄的移动设备上异常(exception)。即使在窄屏幕上也需要能够阅读文本

除此之外,Bootstrap 4 确实使用 rem 作为 padding。他们也尝试在 v3 中这样做,但由于浏览器支持不佳而取消。

关于css - 将 "rem"与 "vw"结合用于灵活的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54390184/

相关文章:

html - 如何在打印 CSS 中为每一页制作页面边框

javascript - 学习 HTML5 和 CSS3。我也需要 javascript 吗?

javascript - 出于性能原因检测 Trident 6+

css - Guard 和 Compass watch 的区别

HTML/CSS 两个相邻的搜索框

html - 覆盖特定宽度的媒体查询 - CSS

HTML CSS3 - 为什么页脚背景颜色不起作用?

html - Firefox 不以表 :middle; 为中心

android - Android 标题中奇怪的连字符

javascript - jQuery 代码中的基本问题