Автоматически изменить размер текста (размер шрифта) при изменении размера окна?
Я пытался (зря) создать страницу, чьи элементы изменили бы размер, изменив размер окна. У меня он работает в css для изображений без проблем, но я не могу сделать то же самое для текста, и я не уверен, что это возможно даже в CSS. И я не могу найти jquery script, который выполнит это.
Когда пользователь меняет размер окна, я хочу, чтобы страница масштабировалась динамически и плавно, без необходимости использования масштабирования страницы. Это отлично работает на моих вкладках img через css, но не для текста, который остается того же размера.
Любые идеи?
Ответы
Ответ 1
Я должен был сделать это сам. Я сделал то, что я установил размер базового текста для тела и проценты для всех других размеров. Затем я использовал простой jQuery script, чтобы изменить размер базы при изменении размера окна. Другие размеры также обновляются.
Я использовал что-то вроде этого:
$(function() {
$(window).bind('resize', function()
{
resizeMe();
}).trigger('resize');
});
и в resizeMe-функции у меня было следующее:
//Standard height, for which the body font size is correct
var preferredHeight = 768;
//Base font size for the page
var fontsize = 18;
var displayHeight = $(window).height();
var percentage = displayHeight / preferredHeight;
var newFontSize = Math.floor(fontsize * percentage) - 1;
$("body").css("font-size", newFontSize);
Ответ 2
Попробуйте плагин jQuery, например FitText. Он автоматически форматирует текст в соответствии с шириной родительского элемента.
Еще один плагин jQuery с той же целью - BigText (demo).
Ответ 3
Вы можете сделать это с помощью мультимедийных запросов CSS3, указав различные размеры базового шрифта в зависимости от размера браузера. Для этого есть хорошая статья на A List Apart
Для поддержки IE вы можете взломать его с помощью выражений CSS
Для этого требуется использовать фиксированный базовый размер шрифта, например, в теге body
, а также в процентах или em
в других местах.
Ответ 4
Основываясь на ответе Лиззана, вот версия, использующая квадратный корень ширины и высоты, чтобы получить пропорциональный размер:
// When document has finished loading
$(document).ready(function() {
var resizeText = function () {
// Standard height, for which the body font size is correct
var preferredFontSize = 180; // %
var preferredSize = 1024 * 768;
var currentSize = $(window).width() * $(window).height();
var scalePercentage = Math.sqrt(currentSize) / Math.sqrt(preferredSize);
var newFontSize = preferredFontSize * scalePercentage;
$("body").css("font-size", newFontSize + '%');
};
$(window).bind('resize', function() {
resizeText();
}).trigger('resize');
});
Демо: http://jsfiddle.net/tomsoderlund/26Gad/embedded/result/
Ответ 5
Я использую трюк из http://practicaltypography.com/end-credits.html#bio M. Butterick:
<style type="text/css">
<!--adattamento font-size a browser width-->
@media all {html {font-size: 24px;}}@media all and (max-width:2200px){html {font-size: 27px;}}@media all and (max-width:1800px){html {font-size: 26px;}}@media all and (max-width:1400px){html {font-size: 25px;}}@media all and (max-width:1000px){html {font-size: 24px;}}@media all and (max-width:960px){html {font-size: 23px;}}@media all and (max-width:920px){html {font-size: 22px;}}@media all and (max-width:880px){html {font-size: 21px;}}@media all and (max-width:840px){html {font-size: 20px;}}@media all and (max-width:800px){html {font-size: 19px;}}@media all and (max-width:760px){html {font-size: 18px;}}@media all and (max-width:720px){html {font-size: 17px;}}@media all and (max-width:680px){html {font-size: 16px;}}@media all and (max-width:640px){html {font-size: 15px;}}@media all and (max-width:600px){html {font-size: 14px;}}@media all and (max-width:560px){html {font-size: 13px;}}@media all and (max-width:520px){html {font-size: 12px;}}
<!--body-format-->
body {
max-width:1000px;
min-width:520px;
line-height:1.33em;
margin:1em;
background-color:#f7f7f7;
font-family:Source Sans Pro;
color:#361800;
}
</style>
Ответ 6
roryf находится на правильном пути!
Запросы к средствам массовой информации (один из) ответов (ответов).
Трюк здесь заключается в том, чтобы использовать% для размеров шрифта, начиная с тела. Таким образом, размер шрифта наследуется, и когда вы меняете его в теле, он везде меняется.
Попробуйте что-то вроде:
body { font-size: 100% }
h1 {font-size: 200% }
@media all and (max-width:600px) {
body {font-size: 70%}
}
Когда ширина веб-сайта становится меньше 600 пикселей, размер шрифта будет равен 70% от того, что было повсюду, где% используется (также h1 в этом примере.)
Ответ 7
Ответ Lizzans идеально! Оставьте -1 где это! Котята умирали повсюду, когда я удалил его.
Вместо переменной fontsize просто установите его для стандартного шрифта для вашей страницы. Шахта была 16.
Ответ 8
Вы можете сделать редактируемый текст более простым. Это решение работает для меня.
http://jsfiddle.net/VooDi/dka48dx8/
Для размера шрифта для тела, эквивалентного вашей внутренней ширине окна,
для jsfiddle 560 px;
body {
font-size: 560px;
}
JS:
onresize=onload=function() {
document.body.style.fontSize=window.innerWidth+"px"
}
и для нужного элемента установите размер шрифта в процентах
<h1 style="font-size:5%">Resize this text!!!!</h1>
Вот и все. Надеюсь, это поможет кому-то.