Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2012, 17:30
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Размеры шрифта и масштабирование
Как при масштабировании сохранять постоянным размер шрифта внутри блока с height, заданной в %?

Так как, на мой взгляд, средствами CSS данную задачу не решить, использую js.
Но есть два узких места:
1) старые IE масштабируют по-другому, поэтому в них не работает (в IE вообще не работает)
2) управлять размером шрифта приходится через доли высоты (см. закомментированную строчку)

Может кто знает лучше решение?

<body style="margin: 0px; padding: 0px;">
<div id="div" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 10%; background: gray">text</div>
<div style="position: absolute; top: 10%; left: 0px; width: 100%; height: 90%; background: lightgrey">text</div>

<script>
window.onload = function () {
  var div = document.getElementById('div');
  
  function setFontSize() {
    var coords = div.getBoundingClientRect();
    var h = coords.bottom - coords.top; 
    div.style.fontSize = h - parseInt(h/8)+ 'px'; //изменяем размер
  }

  setFontSize();

  window.onresize = function () {
    setFontSize();
  }
  
}
</script>


Через scrollHeight наверное проще (в хроме не работает)
<body style="margin: 0px; padding: 0px;">
<div id="div" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 10%; background: gray">text</div>
<div style="position: absolute; top: 10%; left: 0px; width: 100%; height: 90%; background: lightgrey">text</div>

<script>
window.onload = function () {
  var div = document.getElementById('div');
  
  function setFontSize() {
    var h = div.scrollHeight; 
    div.style.fontSize = h - parseInt(h/8)+ 'px'; //изменяем размер
  }

  setFontSize();

  window.onresize = function () {
    setFontSize();
  }
  
}
</script>

Последний раз редактировалось bes, 24.07.2012 в 18:00.
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2012, 18:05
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

bes,
Мож тупо менять проценты в <style id=Font> #ThisDiv{font-size:98%;}</style> ?
*Щас набросяцо c рекомендацией делать через computedStyle
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2012, 19:30
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Deff
bes,
Мож тупо менять проценты в <style id=Font> #ThisDiv{font-size:98%;}</style> ?
*Щас набросяцо c рекомендацией делать через computedStyle
Deff, по какому алгоритму их менять?

font-size в % - это % от font-size родителя, а при масштабировании шрифт родителя также масштабируется.
Сам пиксель масштабируется и та полоска в 10%, которая всегда одного размера на экране, при увеличении масштаба занимает всё меньше пикселей.
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2012, 20:00
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от bes
font-size в % - это % от font-size родителя, а при масштабировании шрифт родителя также масштабируется.
Сам пиксель масштабируется и та полоска в 10%, которая всегда одного размера на экране, при увеличении масштаба занимает всё меньше пикселей.
Ну обернуть все масштабируемые дивы общим чем-то и выставить там конкретную пиксельную цифру - а для конктретного див - менять в своём теге style
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2012, 20:29
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Deff
Ну обернуть все масштабируемые дивы общим чем-то и выставить там конкретную пиксельную цифру - а для конктретного див - менять в своём теге style
Я и такой вариант пробовал, но пиксель-то масштабируется, поэтому при масштабировании, например, 10px всегда разного размера на экране, а вот полоска в 10% всегда одного.

Deff, и не понятно, что имелось в виду под "менять проценты", надо же как-то рассчитать на сколько менять.
Ответить с цитированием
  #6 (permalink)  
Старый 24.07.2012, 20:34
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от bes
Я и такой вариант пробовал, но пиксель-то масштабируется, поэтому при масштабировании, например, 10px всегда разного размера на экране, а вот полоска в 10% всегда всегда одного.
Ну ти жа в процентах ставить будешь на div ?
а начальный размер вродь как абсолютный на родителе ? (Или ?
Ответить с цитированием
  #7 (permalink)  
Старый 24.07.2012, 20:51
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Deff
Ну ти жа в процентах ставить будешь на div ?
а начальный размер вродь как абсолютный на родителе ? (Или ?
font-size в % не работает, если на родителе font-size в %, а если в px, то мешает масштабирование самих пикселей.

Чёт я уже запутался, можно пример на основе моего примера.
Ответить с цитированием
  #8 (permalink)  
Старый 24.07.2012, 21:09
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от bes
font-size в % не работает, если на родителе font-size в %,
Странно - Вот у мну 7лет как в % шрифт на body и на последующем дочернем блоке (проценты в итоге перемножаются
Ответить с цитированием
  #9 (permalink)  
Старый 24.07.2012, 21:36
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Deff
Странно - Вот у мну 7лет как в % шрифт на body и на последующем дочернем блоке (проценты в итоге перемножаются
здесь пардон
Тем не менее вся %-ая цепочка, завязана на текущий размер шрифта документа, то есть на СSS-пиксели (которые масштабируются), а вот высота в процентах по ходу завязана на пиксели устройств, поэтому при масштабировании не изменяется.
Не картинки же со словами вместо самих слов ставить
Ответить с цитированием
  #10 (permalink)  
Старый 24.07.2012, 22:24
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

bes,
Ну достаточно просто эти проценты в стиле div - делить на проценты уменьшения масштаба - тады(ксать проценты могут быть дробные - видал и сам ставил до трех знаков после точки)

Тогда вродь размер должен сохраняцо несмотря на первое пиксельное задание
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск самого крупного шрифта на странице eXTrEMe888 Events/DOM/Window 11 03.05.2012 20:23
Масштабирование изображений по курсору Eugent ExtJS 1 22.03.2012 14:55
Размеры DIV(бла бла) systemiv Общие вопросы Javascript 2 24.11.2011 18:12
размеры ЭКРАНА misha_turist Общие вопросы Javascript 1 01.04.2010 16:50
Увеличение шрифта статьи. hello Элементы интерфейса 14 04.12.2008 14:32