Chrome увеличит размер шрифта при уменьшении масштаба

#css #google-chrome

#css #google-chrome

Вопрос:

У меня есть следующий код :

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
  

Когда вы увеличиваете масштаб до 50% или меньше в Chrome, размер двух разделов будет отличаться.
Если вы проверите размер шрифта в инструменте разработки, вы поймете, что
Chrome автоматически увеличил размер шрифта документа.

Кто-нибудь может сказать мне, почему это происходит? И как я мог это предотвратить?

Я провожу некоторое исследование разницы между em и px, поэтому изменение ширины #div2 на 200 пикселей неприемлемо.

Ссылка на JsFiddle

Обновлено содержимое и исходный код.

Спасибо за вашу помощь.

Обновлено 16 июня 2014 г.

Нашел кое-что интересное и хочу поделиться с вами, ребята, здесь.

Если вы когда-либо касались «Дополнительных настроек шрифта» в Chrome или использовали версию по умолчанию (не китайскую или японскую):

  1. вам никогда не будет разрешено устанавливать размер шрифта на некоторое число меньше 6 пикселей (в китайской или японской версии это будет 12 пикселей).

  2. 1em никогда не будет меньше 6 пикселей (12 пикселей), когда вы измеряете что-то вроде «height» с помощью «em».

  3. если вы установите для текста значение 6 пикселей и увеличите масштаб до 50%, вы можете ожидать, что текст будет отображаться как 3 пикселя (уменьшится вдвое). Но текст будет установлен chrome на 12 пикселей и может нарушить ваш макет.

Спасибо Давару Хусейну. Он помогает мне понять минимальный размер шрифта.

Ответ №1:

Смотрите, вы использовали px для первого div и em для второго.

Chrome имеет минимальный размер шрифта, и шрифты, меньшие, чем он, будут отображаться только как размер шрифта. (смотрите Настройки Chrome)

Теперь, используя div с px, поле продолжает увеличиваться и становится еще меньше при увеличении на 33% (или 25%, или 50%), но при использовании em размер поля остается прежним при достижении минимального размера шрифта. см

введите описание изображения здесь

em полезен в браузерах, которые реализуют масштабирование путем масштабирования размера шрифта, например Chrome. Поэтому, если вы измените размер всех своих элементов, используя em, они соответственно масштабируются. em гарантирует, что все содержимое отображается как есть, даже если размер div изменяется (при масштабировании). Надеюсь, вы получили свой ответ 🙂

Редактировать

В IE10 в настройках нет минимального размера шрифта, как в GC35. Таким образом, em px отображаются как друг друга.

Комментарии:

1. ems — действительно хорошая единица измерения, но может привести к путанице, поскольку они относятся к своему родительскому элементу. Я бы рекомендовал рассмотреть возможность использования вместо rem (аналогично em, но относительно корня) с резервным вариантом px для старых браузеров: andy-carter.com/blog/using-scalable-css-units-for-font-sizes

2. Спасибо за ваш ответ. Но если вы увеличите страницу до 50% и установите размер шрифта #div2 на 5 пикселей с помощью dev tool, #div2 станет меньше, поэтому я не думаю, что это проблема «минимального размера шрифта».

3. @drmonkeyninja спасибо за совет. Как вы можете видеть, я установил для контейнера значение «font-size: 0.625em», что означает 10 пикселей. И два divs являются прямыми дочерними элементами контейнера, поэтому их em должно быть 10 пикселей.

4. div2 не становится меньше для меня (даже при размере шрифта 1px), хотя у меня та же версия Chrome, что и у вас. здесь: ссылка . И для ems используйте эту формулу преобразования — em = desired element pixel value / parent element font-size in pixels

5. Спасибо. После некоторого изучения расширенных настроек шрифта выяснилось, что это проблема минимального размера шрифта. Но интересно, что я могу установить размер шрифта на некоторое число, меньшее минимального размера шрифта, и это работает для текста, но не для ширины с «em». Еще раз спасибо.

Ответ №2:

Divs имеет разную ширину.

10em не всегда эквивалентно 100px

попробуйте установить ту же ширину (em или px)

em равен текущему размеру шрифта, например, если размер шрифта документа равен 12pt, 1em равен 12pt

Один пиксель равен одной точке на экране компьютера

обратитесь к этой странице для получения документации

ваша обновленная скрипка здесь

 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;
  

Комментарии:

1. В этой демонстрации я установил размер шрифта тела равным 0,625em, что равно 10px, поэтому 10em будет 100px. Я хочу знать, что произойдет с «px» и «em» во время увеличения и уменьшения масштаба, поэтому я создаю эту демонстрацию.

2. Если вы установите значение 0, шрифты станут невидимыми!!

3. Есть ли какие-либо проблемы с моим ответом? Разве это не решает ваш вопрос?

4. Я специально установил ширину div2 на 20em. И в этой демонстрации они должны быть 10 пикселей. Я хочу знать, что сделал chrome, когда я увеличиваю и уменьшаю масштаб, и почему chrome это делает. Поэтому я не могу принять ваш ответ, извините.

5. «Я установил размер шрифта тела равным 0,625em, что равно 10px, поэтому 10em будет 100px». Это справедливо только в том случае, если размер шрифта по умолчанию равен 16 пикселей. Когда вы устанавливаете размер шрифта равным 0,625em, это означает 62,5% от некоторого другого значения, в частности, другого размера шрифта. В зависимости от размера шрифта объекта вне контейнера, 0,625em может сильно отличаться от 10 пикселей.