как изменить размер шрифта пропорционально размеру окна в CSS3 или javascript
Я делаю некоторые веб-приложения и у меня есть некоторые проблемы с размер шрифта. Как изменить размер шрифта пропорционально размеру изменения окна в CSS3 или javascript?
4 ответов
У вас есть 3 способа сделать это:
- С помощью http://fittextjs.com/, но страницы могут начать медленнее
- использование медиа-запросов
- использование ems
теперь, это зависит от того, что вы хотите, чтобы быть вашим конечным результатом. Я бы выбрал вариант № 3.
идеальный способ сделать это с помощью vw
единица измерения, которая определяется как 1 / 100th из ширина просмотра (отсюда и название). Так, например, если вы хотите, чтобы ваш текст был 4,5% от ширины браузера в любое время, вы можете использовать размер:
font-size: 4.5vw;
и теоретически, это должно сработать. К сожалению, вы обнаружите, что он работает не совсем так, как ожидалось: в браузерах WebKit есть ошибка (по крайней мере), где значение размера шрифта не live-обновление (хотя и для всех остальных измерений). Вам нужно вызвать перекраску, чтобы изменить размер шрифта, что можно сделать, обновив z-index
свойство из JavaScript:
window.addEventListener('resize', function(){
document.getElementById('myEl').style.zIndex = '1';
}, false);
это может создать немного прерывистости, но это означает, что вам не нужно вычислять какие-либо фактические размеры в JavaScript, и вам не нужно использовать "ступенчатые" размеры, как с медиа-запросами.
установите базовый размер шрифта (тот, который вы определяете для своего body
элемент в css) в px
затем везде в остальной части вашей страницы установите размеры шрифта относительно этого, используя em
unit, то вы можете использовать медиа-запросы, чтобы изменить размер шрифта всех ваших страниц, просто изменив базовый шрифт, что-то вроде этого:
body {
font-size: 15px;
}
@media (max-width: 1000px) {
body { font-size: 1.3em; }
}
@media (max-width: 500px) {
body { font-size: 1.1; }
}
идеальный способ сделать это-объединить между запросами размера шрифта VW и @media. Причины:
1) em для себя не будет масштабироваться по размеру окна
2) vm для себя будет слишком мал для разрешений / экранов ниже 800px.
таким образом, правильный способ достичь этого:
- определите класс-prop-текст с VM=1.0 для желаемой ширины экрана
- добавить медиа-запросы, чтобы соответствовать размеру шрифта с желаемым ниже сетки разрешения.
для моей отзывчивой сетки (которая устанавливает столбец 1/2 для 100% ширины ниже ширины 768px) это выглядит так:
<style>
.prop-text{font-size:1.0vw}
@media (max-width : 768px) {
.prop-text{font-size:2.0vw}
}
/*other media queries here - fit font size to smartphone resolutions */
</style>
<div class="prop-text">your text is here</div>