Подтвердить что ты не робот

Можно ли задать размер шрифта относительно размера страницы?

Есть ли способ сделать font-size относительно размера страницы? Применение процента в качестве единицы относится к стандартным размерам шрифта (например, 90% от 12 пикселей, а не 90% страницы!). Это отличается от поведения большинства других тегов.

Любой способ сделать масштаб страницы "вверх и вниз" также шрифтами? Должен ли я полагаться на em?

Спасибо

4b9b3361

Ответ 1

Нет, вы не можете установить размер шрифта в процентах относительно размера страницы.

Размер в em основан на размере относительно того, как обычно будет отображаться шрифт в 16 точках.

Если вы хотите, чтобы ваша страница масштабировалась вверх и вниз и сохраняла какую-то шкалу сама по себе, поля и шрифт, а затем установили его в em, было бы хорошо.

Этот метод позволит масштабировать шрифты и прямоугольники страницы, чтобы они росли с относительным размером друг с другом и, надеюсь, не имели бы вещей, выходящих за границы и границы.

Ответ 2

См. новые единицы CSS vh и vw. Поддержка браузера еще невелика.

http://snook.ca/archives/html_and_css/vm-vh-units

Недавно он появился в WebKit: https://bugs.webkit.org/show_bug.cgi?id=27160

В браузерах, поддерживающих его, 1 vh составляет 1% (1/100) высоты окна просмотра, а 1 vw - 1% (1/100) ширины окна просмотра. Существуют также единицы vmin и vmax, которые представляют собой меньшую из двух и более крупных из них соответственно.

Ответ 3

Попробуйте плагин jQuery, например FitText. Он автоматически форматирует текст в соответствии с шириной родительского элемента.

Еще один плагин jQuery с той же целью - BigText (demo).

Ответ 4

Вот немного script Я сделал для exacly что (используйте его как резерв, когда vw не поддерживается) https://gist.github.com/2475269

Ответ 5

Еще один неидеальный ответ заключается в том, чтобы использовать серию таких контрольных точек css:

h1 { font-size: 22px; color: orange; }
@media only screen and (max-width: 900px) {
  h1 { font-size: 20px; color: blue; }
}
@media only screen and (max-width: 800px) {
  h1 { font-size: 18px; color: green; }
}
@media only screen and (max-width: 700px) {
  h1 { font-size: 12px; color: red; }
}

http://jsfiddle.net/8RKhp/

Ответ 6

На мой взгляд, диапазон видимых плотностей пикселей, наблюдаемый зрителем веб-страницы, теперь массивный, от HTC One, который удерживается на расстоянии 12 дюймов от лица, где имеется 5600 пикселей/радиан, возможно, на 50-дюймовом плазменном экране работает на 480p, что составляет около 950 пикселей/радиан на 4 фута.

Или иначе, шрифт 20px почти в 6 раз больше в вашем поле зрения на этом плазменном экране, чем последний телефон.

Решение, которое я приготовил, состояло в том, чтобы установить размер шрифта тела в абсолютных пикселях как кратность window.screenWidth, но ограничить его до минимального количества единиц, а затем использовать em для всех размеров шрифта после этого. Правильное использование заголовков em должно означать, что доступность прекрасна.

Я добавляю эту функцию на страницу (или ее JS), чтобы установить размер:

function setFontSize() {
    pagesized = window.innerWidth / 30; // Proportionate font size to page
    pagesized = Math.max(pagesized, 14); // Set size to be no less than 14 px
    pagesized = Math.min(pagesized, 30); // & No greater than 30 px
    document.body.style.fontSize = pagesized; // Set body default font size
}

Для выполнения этой работы в тег body добавляется следующее:

<body onresize="setFontSize()" onload="setFontSize()">

Затем вы просто используете свой CSS (или встроенное форматирование) на основе% или em единиц, и все должно хорошо масштабироваться в пределах этих границ.

Или, в JQuery, вы можете сделать:

$(window).resize(function() {
    pagesized = $(window).innerWidth() / 30; // Proportionate font size to page
    pagesized = Math.max(pagesized, 14); // Set size to be no less than 14 px
    pagesized = Math.min(pagesized, 30); // & No greater than 30 px
    $('body').css('font-size', pagesized); // Set body default font size
});

Ответ 7

Как минимум для Firefox, 1em можно использовать для установки размера шрифта, связанного с размером шрифта родителя. Поэтому, если вы установите размер шрифта для тела в значение, которое находится в соотношении к размеру страницы. Все шрифты под телом, которые используют "em" в качестве единицы, будут относиться к странице.

Чтобы сделать это, вы должны установить размер тела относительно страницы типа height: 100% или width, если вы хотите связать размер с шириной.

Затем вам придется постоянно синхронизировать высоту тела с размером шрифта. Это можно сделать с помощью 'onResize'.

Подробнее см. в ссылка.

Ответ 8

Я рекомендую использовать YUI reset, чтобы унифицировать рендеринг шрифтов в разных браузерах. Затем проверьте размер шрифта YUI. После этого вы можете полагаться на свои шрифты, чтобы отображать их правильно.

Ответ 9

Вы можете решить это следующим образом:

jQuery(document).ready(function ($) {

// Dynamisches Skalieren von Schriften
fontSize = function(){
//ww = $(window).innerWidth();
ww = $('.mainhead').innerWidth(); // Width of the Motherelement
one = ww/100; // 1%
multiplcator = one*31; 
$('.mainhead').css({'font-size': multiplcator+'px'});
}
fontSize();



$(window).resize(function() {
fontSize();
});

});

Когда вы теперь устанавливаете свой Fontsize через css, он разыгрывается во всех браузерах, таких как charm

.mainhead{
width:48%;
font: normal 2em Times, Verdana, sans-serif;

}

Ответ 10

Я знаю, что на это уже был дан ответ, но мне нужно поделиться этим на будущее comers, потому что мне потребовались несколько минут, чтобы понять это.

Так как mr @random сказал: em как единица, сделает трюк.

Если вы хотите, чтобы ваша страница масштабировалась вверх и вниз и сохраняла какую-то масштабную шкалу для себя, ящики и шрифт, а затем устанавливая его в em, будут в порядке.

Этот метод позволит масштабировать шрифты и прямоугольники страницы, чтобы они росли с относительным размером друг с другом и, надеюсь, не имели бы вещей, выходящих за границы и границы.

Инициализируйте свой body с помощью 1em как font-size, что означает 100%

body {
      font-size: 1em; 
}

Затем установите свой элемент font-size в процентах от его родительского

.your_element {
 font-size:0.4em /* for example 40% if its parent font-size */
}

Теперь magic из @media запросов

@media all and (max-width: 767px) {
  body {
    font-size: 0.4em !important;
  }
}

@media all and (min-width: 768px) and (max-width: 1023px) {
  body {
    font-size: 0.6em !important;
  }
}

@media all and (min-width: 1024px) and (max-width: 1199px) {
  body {
    font-size: 0.8em !important;
  }
}

@media all and (min-width: 1200px) and (max-width: 1599px) {
  body {
    font-size: 1em !important;
  }
}

@media all and (min-width: 1600px) and (max-width: 1999px) {
  body {
    font-size: 1.2em !important;
  }
}

@media all and (min-width: 2000px) and (max-width: 2999px) {
  body {
    font-size: 1.6em !important;
  }
}

@media all and (min-width: 3000px) and (max-width: 3999px) {
  body {
    font-size: 1.8em !important;
  }
}

@media all and (min-width: 4000px) {
  body {
    font-size: 2em !important;
  }
}

И Бинго, хорошо провести день.

Ответ 11

Когда вы говорите "относительно размера страницы", что именно вы имеете в виду "размер страницы"?

В окне браузера? Тогда ваши шрифты изменили бы размер, когда пользователь изменит размер окна - определенно не то, что можно было бы ожидать, и очень плохо для удобства использования. Люди не изменяют размер окон, чтобы увидеть большее или меньшее изображение всего сайта, они увеличивают их, чтобы увидеть большую часть сайта, и сделать окна меньше, чтобы увидеть конкретный небольшой раздел и иметь место для других окон рядом с браузером.

Если вы имеете в виду размер экрана, это еще хуже, потому что это будет означать огромные шрифты на экране 30 дюймов. Но люди не покупают 30-дюймовые экраны, чтобы они могли видеть огромные шрифты, они покупали их, чтобы увидеть несколько окон бок о бок.

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