假设我将默认字体大小设置为 16px(这应该是多余的,因为它在大多数浏览器中都是默认的):
为简洁起见,我的网站包含一些大小为 10em x 10em 的盒子。
正文,html { 字体大小:16px; } 。盒子 { 边框:1px 绿色实心; 背景颜色:绿色; 宽度:10em; 高度:10em; }
我的网站已经对min-width
针对 em 值(36、62 和 85em)的特定断点的媒体查询做出响应。
我的网站唯一要做的就是改变盒子的宽度和颜色。
@media(最小宽度:36em){ 。盒子 { 宽度:36em; 边框:1px 红色实心; 背景颜色:红色; } } @media(最小宽度:62em){ 。盒子 { 宽度:62em; 边框:1px 蓝色纯色; 背景颜色:蓝色; } } @media(最小宽度:85em){ 。盒子 { 宽度:85em; 边框:1px 橙色实心; 背景颜色:橙色; } }
现在假设我有一些分辨率为 1440x900 的设备,其中浏览器决定设备的像素密度默认为 2dppx。结果,一切看起来都比应有的大得多。我不喜欢它。
但是解决方案应该很简单,对吧?只需在开始时为 2dppx 像素密度添加一个媒体查询,因为它是像素的两倍,所以我只需将字体大小减少一半......应该可以,对吧?
而且由于我在所有内容上都使用“em”,然后通过将字体大小更改一半,我会自动将所有“em”大小的大小减半……对吗?
@media(最小分辨率:2dppx){ 正文,html { 字体大小:50%; } }
好吧,我发现它不像我想象的那样工作......我试图用谷歌搜索答案,但没有找到任何相关的东西,我怀疑我误解了字体大小、ems 和像素密度的工作原理......
将 font-size 减少 50% 会使 font-size 减少一半以上。原始大小为 16px 但 font-size: 50%; 导致字体比 font-size:8px 小得多......在 Firefox 和 Chrome 中测试。有谁知道这是为什么?
当我设置 font-size:8px; 在 2dppx 的媒体查询中,min-width:36em、62em 和 85em 的媒体查询不会像我预期的那样触发,至少当我在 Firefox 中更改 layout.css.devPixelsPerPx 时。媒体查询中的 min-width 的行为就像 font-size 仍然为 16px,尽管它随着 dppx 媒体查询而改变。在 Firefox 和 Chrome 中测试。有谁知道这是为什么?
更新
看起来媒体查询是在 1dppx 上下文中加载的,如果您使用“em”并不重要,似乎它们在加载时被缓存,并且诸如 min-width 之类的值固定为第一个值,即使您更改了基本字体大小在不同的媒体查询中,其他查询不会刷新。
我现在能想到的唯一解决方案是将所有媒体查询相乘。一个媒体查询 1 dppx 上下文中的 px 值,另一个媒体查询 2 dppx 上下文中的 px 值(这是第一个值的 50%)。