【问题标题】:Chrome will increase the font size when zooming out缩小时Chrome会增加字体大小
【发布时间】:2014-08-03 17:54:33
【问题描述】:

我有以下代码:

CSS

#container{
    font-size: 0.625em;
}

#div1 {
    width: 200px;
    height: 200px;
    background-color: green;
}

#div2 {
    width: 20em;
    height: 20em;
    background-color: red;
}

HTML

<div id="container">
    <div id="div1">
    This is a test message.This is a test message.This is a test message.This is a test message.
    </div>
    <div id="div2">
        This is a test message.This is a test message.This is a test message.This is a test message.
    </div>
</div>

Chrome 版

Version 35.0.1916.153 m

当您在 Chrome 中缩放到 50% 或更小时,两个 div 的大小会变得不同。 如果您在开发工具中检查字体大小,您会意识到 Chrome 会自动增加文档的字体大小。

谁能告诉我为什么会这样? 我该如何预防呢?

我正在研究em和px的区别,所以把#div2的宽度改成200px是不行的。

JsFiddle Link

更新了内容和来源。

感谢您的帮助。

2014 年 6 月 16 日更新

发现了一些有趣的东西,想在这里与大家分享。

如果您曾经在 Chrome 中触摸过“高级字体设置”,或者使用默认版本(不是中文或日文):

  1. 您永远不能将字体大小设置为小于 6px 的数字(中文或日文版本为 12px)。

  2. 当您用“em”测量“高度”之类的东西时,1em 永远不会小于 6px(12px)。

  3. 如果您将文本设置为 6 像素,并缩放至 50%,您可能会看到文本呈现为 3 像素(变为一半)。但是文本会被 chrome 设置为 12px,并且可能会破坏您的布局。

感谢达瓦尔·侯赛因。他帮我实现了最小字体大小的事情。

【问题讨论】:

    标签: css google-chrome


    【解决方案1】:

    看,第一个 div 使用 px,第二个使用 em。

    Chrome 具有最小字体大小,小于它的字体将仅显示为该字体大小。 (查看您的 Chrome 设置)

    现在,使用带有 px 的 div,框会继续,并且在缩放到 33%(或 25% 或 50%)时会变得更小,但使用 em,当达到最小字体大小时,盒子的大小保持不变。见

    em 在像 Chrome 一样通过缩放字体大小来实现缩放的浏览器上很有用。因此,如果您使用 em 调整所有元素的大小,它们会相应地缩放。 em 确保整个内容按原样显示,即使 div 的大小发生变化(缩放时)。希望你得到你的答案:)

    编辑

    在 IE10 中,设置中没有 GC35 中的最小字体大小。所以 em px 呈现彼此相似。

    【讨论】:

    • ems 是一个非常好的单位,但由于它们相对于它们的父级,可能会变得混乱。我建议考虑使用 rem 代替(类似于 em,但相对于根)和旧浏览器的 px 后备:andy-carter.com/blog/using-scalable-css-units-for-font-sizes
    • 感谢您的回答。但是如果你把页面放大到50%,通过dev工具把#div2的font-size设置为5px,#div2会变小,所以我觉得不是“最小字体大小”的问题。
    • @drmonkeyninja 感谢您的建议。如您所见,我将容器设置为“font-size: 0.625em”,即 10px。并且这两个 div 是容器的直接子级,所以它们的 em 应该是 10px。
    • div2 对我来说并没有变小(即使字体大小为 1px),尽管我的 Chrome 版本与您的相同。这里:link。对于 ems,使用这个转换公式 - em = desired element pixel value / parent element font-size in pixels
    • 谢谢。经过对高级字体设置的一些研究,发现这是最小字体大小问题。但有趣的是,我可以将字体大小设置为小于最小字体大小的某个数字,它适用于文本,但不适用于带有“em”的宽度。再次感谢您。
    【解决方案2】:

    div 有不同的宽度。

    10em 并不总是等于 100px

    尝试设置相同的宽度(em 或 px)

    一个 em 等于当前的字体大小,例如,如果 文档的font-size是12pt,1em等于12pt

    一个像素等于电脑屏幕上的一个点

    参考 this 页面获取文档

    你更新的小提琴here

    body {
                font-size: 0.625em;
            }
    
            #div1 {
                width: 200px;
                height: 200px;
                background-color: green;
            }
    
            #div2 {
                width: 200px;
                height: 200px;
                background-color: red;
            }
    

    更新

    如果它不起作用,请尝试使用此 css 属性

    -webkit-text-size-adjust: none;
    

    【讨论】:

    • 在这个demo中,我设置body的font-size为0.625em,也就是10px,所以10em就是100px。我想知道在放大和缩小过程中“px”和“em”会发生什么,所以我创建了这个演示。
    • 如果设置为 0 字体是不可见的!!
    • 我的回答有问题吗?它不能解决你的问题吗?
    • 我故意将div2的宽度设置为20em。在这个演示中,em 应该是 10px。我想知道当我放大和缩小时 chrome 做了什么,以及为什么 chrome 会这样做。所以我不能接受你的回答,对不起。
    • "我将body的font-size设置为0.625em,也就是10px,所以10em就是100px。"仅当默认字体大小为 16 像素时才适用。当您将字体大小设置为 0.625em 时,这意味着其他值的 62.5% - 特别是其他字体大小。根据容器外部事物的字体大小,0.625em 可能与 10px 大不相同。
    猜你喜欢
    • 2011-11-28
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多