Почему calc не переоценивается, когда он используется для font-size?

Я пробовал использовать VW и calc вместе, и работает, но рассчитал только один раз: время загрузки:

http://codepen.io/anon/pen/mJOGbr

html{
  font-size: calc( 16px + 2vw ); 
}

Как я могу заставить вычислить этот расчет каждый раз при изменении размера окна браузера? Он оценивается один раз, но никогда больше. Без calc ВМ работает нормально ...

Заранее спасибо!


person user1018074    schedule 27.05.2015    source источник


Ответы (1)


Обратите внимание: если вы используете более старую версию браузера webkit, проблема отсутствия изменения размера действительно может возникнуть. См. этот пост. (Прокрутите до «Ошибки!»)

Поддержка есть в Chrome 20+ / Safari 6+, но она терпит неудачу в одном довольно существенном случае. При изменении размера окна браузера шрифт не настраивается в соответствии с новым размером области просмотра. В спецификации говорится:

Когда высота или ширина окна просмотра изменяется, они соответственно масштабируются. Я прослушал это. Возможно, это не большая катастрофа, поскольку в значительной степени мы, ботаники-дизайнеры, занимаемся настройкой окон браузера, но все же. Шрифт корректируется при новой загрузке страницы.

Чтобы решить эту проблему (разрешить изменение размера без обновления страницы), вам нужно вызвать «перерисовку» элемента. Я использовал jQuery и просто повозился с каждым элементом (в данном случае неактуальным) значением z-index, которое запускает перерисовку.

causeRepaintsOn = $("h1, h2, h3, p");

$(window).resize(function() {   causeRepaintsOn.css("z-index", 1); });

ОБНОВЛЕНИЕ: больше не беспокойтесь об этом и определенно не форсируйте эти перекраски. Эта проблема с изменением размера исправлена ​​в Chrome 34+ и Safari 7+. Изменить размер области просмотра на мобильных устройствах не принято, поэтому я не уверен, повлияла ли эта ошибка на них или нет.

person Bram Vanroy    schedule 27.05.2015
comment
Устанавливая размер шрифта для элемента html, он перезаписывается таблицей стилей по умолчанию браузера. Это неверно. - person BoltClock; 27.05.2015
comment
@BoltClock Не могли бы вы объяснить, почему инструмент инспектора браузера говорит мне об этом? (Chrome 43) - person Bram Vanroy; 27.05.2015
comment
Даже если вы используете настройки h1, используя с calc, динамическое изменение размера шрифта останавливается. - person user1018074; 27.05.2015
comment
@ user1018074 а зачем тебе кальк? Вы ничего не рассчитываете. - person Bram Vanroy; 27.05.2015
comment
Возможно, вы проверяете h1, а не элемент html. - person BoltClock; 27.05.2015
comment
Да, вы изучаете элемент h1. Его собственный стиль по умолчанию переопределяет значение, которое в противном случае было бы унаследовано от элемента html. Вот что действительно отменяется. Стилизация элемента html работает нормально, и на самом деле 2em по умолчанию вычисляется относительно 3vw в элементе html. - person BoltClock; 27.05.2015
comment
РЕДАКТИРОВАТЬ Мои плохие @BoltClock, теперь я понимаю. Ваш последний комментарий действительно правильный. - person Bram Vanroy; 27.05.2015
comment
Но я бы хотел посчитать такие вещи: font-size: calc (16px + 2vw); - person user1018074; 27.05.2015
comment
Само по себе использование 2vm не масштабирует должным образом от мобильных до HD-экранов. :( - person user1018074; 27.05.2015
comment
Я хотел бы иметь 16 пикселей для мобильных телефонов и 24 для экранов HD и линейный расчет между двумя значениями .... Без медиа-запросов ... - person user1018074; 27.05.2015
comment
Вы пытались установить значение тега заголовка напрямую, а не HTML? Без нормализации размер шрифта на основе em по умолчанию изменит значение te, которое вы поместите в HTML @user - person Bram Vanroy; 27.05.2015
comment
Пробовал все, что мог. См. Исходный URL. - person user1018074; 27.05.2015