2009-04-11 4 views
6

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

+0

[JQuery плагин, который может помочь] (http://stackoverflow.com/questions/10463518/converting-em-to-px-in-javascript-and-getting-default-font-size/ 16924637 # 16924637) – SpYk3HH

ответ

2

Короткий ответ - нет. Тем не менее, я подозреваю, что вы хотите поместить различные размеры на разные элементы в зависимости от размера шрифта пользователя. Если это так, вы можете взглянуть на указание правил CSS в «em», которое определяется как относящееся к текущему размеру шрифта.

+0

Привет Скорпан, У меня есть положительный ответ от вас. Не могли бы вы объяснить свою идею? У вас есть пример? Еще раз спасибо. С наилучшими пожеланиями. – 2009-04-11 12:57:56

+0

Я был далеко, поэтому я не мог ответить вовремя. Однако разработчик Pixel ответил прекрасным примером! –

8

Ну, это возможно, но мой ворон, сидящий на хрустальном шаре, говорит мне, чтобы я не рассказывал вам, как спросить вас, чего вы хотите достичь. Скорее всего, вы хотите, чтобы веб-страница выглядела хорошо, независимо от размера шрифта. Для этого я рекомендую CSS units em, ex etc.

+2

+1 Я понятия не имел о бывшем. – Calvin

7

Можно ли определить размер шрифта браузера?

Вид, но это редко бывает хорошей идеей. Предполагая < тело> не имеет размера шрифта установлен и нет никаких мешающих правил (например, «DIV тела»):

var measure= document.createElement('div'); 
measure.style.height= '10em'; 
document.body.appendChild(measure); 
var size= measure.offsetHeight/10; 
document.body.removeChild(measure); 

дает вам размер в пикселях 1em.

Также можно выделить новый размер шрифта, когда пользователь меняет размер шрифта из меню?

Непосредственно, но вы можете опросить функцию измерителя, как и выше, так часто. В IE вы можете повесить выражение CSS(), поскольку они пересчитывают, когда размер шрифта изменяется (среди многих других времен), но он, вероятно, не стоит (вам все равно нужен poller для других браузеров и выражения () в любом случае устарела).

+1

Просто подумал, что я бы сказал, что это работает только тогда, когда корневой элемент на странице (элемент '') имеет размер шрифта 100%. Если вы знаете размер шрифта вашего корневого элемента, вы можете рассчитать размер шрифта пользователя, поставив 'size = size * whateverMyCssDefinesAsBaseSize/100' в конце теста @ bobince. –

3

Насколько я знаю, нет способа узнать это. Вы просто предполагаете, что размер по умолчанию составляет 16 пикселей, что является стандартом.

Лучшей практикой является установка всех размеров шрифтов в ems, которые масштабируются в соответствии с базовым размером шрифта.

Большинство людей устанавливают базовый шрифт на 10 пикселей, что упрощает работу с ems.

Пример

16px = 1em

p { 
    font-size:2em; 
} 

Это равнялось бы 32px


10px = 0.625em

body { 
    font-size:0.625em; 
} 

p { 
    font-size:2em; 
} 

Это будет равняться 20px;

Я надеюсь, что это помогло.

0

Моей мотивацией для отслеживания изменений размера текста является динамическое изменение высоты (или ширины) элементов, поэтому на всей странице не требуются полосы прокрутки окна браузера. Обычно, когда вы делаете это, вы отвечаете на событие изменения размера, но изменения размера шрифта также могут повлиять на ваши вычисления.Мне все равно, каков фактический размер шрифта, я просто должен знать, когда он изменится.

Вот код jQuery, который я использую. Это похоже на решение, предложенное bobince. У меня есть функция изменения размера, который будет обновлять высоту DIV и т.д.

$(window).resize(resize); // update when user resizes the window. 

$("body").append("<p id='textSizeReference' style='display:none;padding:0'>T</p>"); 
var refTextHeight = $("#textSizeReference").height(); 
setInterval(function() { 
    var h = $("#textSizeReference").height(); 
    if (h != refTextHeight) { 
     refTextHeight = h; 
     resize(); // update when user changes text size 
    } 
}, 500); 

Если это Ajax приложения, которое опрашивает для изменений в location.hash вы можете использовать ту же самую функцию опроса для изменения размера шрифта.

0

Вот что-то я обнаружил, что хорошо работает для обнаружения текущего семейства шрифтов документа в IE:

document.documentElement.currentStyle [ "FontFamily"]

в Firefox/Opera:

Там это метод, называемый getComputedStyle, который должен возвращать стиль css для данного конкретного элемента, но я еще не понял, как его вернуть на весь документ.

Надеюсь, что это поможет несколько!

+0

Способ, которым вы можете вернуть его во весь документ, - это 'getComputedStyle (document.documentElement)'. Выполнение 'getComputedStyle (document)' никогда не будет работать, потому что атрибут style является частью интерфейса HTMLElement. И документ не наследует свойства от интерфейса HTMLElement: это только узел, а не пространственный элемент. Таким образом, узел документа не имеет самого стиля, поэтому вы не можете 'getComputedStyle' на нем. –

Смежные вопросы