Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как я правлю размер шрифта в зависимости от разрешения экрана
 
 автор: Eugene77   (12.01.2009 в 15:51)   письмо автору
 
 

Я понял,что пришло время придумывать что-то со шрифтами, чтобы они читались на новых мониторах. Хотя я не профессионал, но вот что-то пришло в голову - хочу поделиться.
Кому-то это пригодится, а кто-то подскажет как можно сделать ещё лучше.

Основная идея в том, чтобы 1)узнав размер шрифта, 2)подправить размер корневого элемента, а 3)остальные размеры отсчитывать от размера этого корневого элемента

Вторая задача решается оченьпросто: body{ font-size: <?php echo $em; ?>%;}
Третья естественно будет решена, если размеры указывать в относительных единицах em
В итоге:
Вот что я добавил в header:

<? // Блок определения базового размера шрифта
$em 1;
if(isset(
$_COOKIE['screenWidth']) and $_COOKIE['screenWidth'] > 100 and $_COOKIE['screenWidth'] < 100000) {
    
$etalon 1152;
    
$em = ($_COOKIE['screenWidth']/1152 1)/2;
    if(
$em )$em 3;
    if(
$em 0.3 )$em 0.3;
    
$em *=100.01;
}
?>
<style>
body{ font-size: <?php echo $em?>%;}
</style>
<script type="text/javascript" src="../jscripts/screen.js"></script>


A файл screen.js вот:

var height=0; 
var width=0; 
var exp = new Date( );
var nowPlusOneWeek = exp.getTime( ) + (7 * 24 * 60 * 60 * 1000);
exp.setTime(nowPlusOneWeek);
if (self.screen) 

  width = screen.width 
  height = screen.height 

else if (self.java) 

  var jToolKit = java.awt.Toolkit.getDefaultToolkit(); 
  var scrsize = jToolKit.getScreenSize(); 
  width = scrsize.width; 
  height = scrsize.height; 

if (width > 0 ) 

document.cookie = "screenWidth=" + width + ";expires=" + exp.toGMTString( ) + ";path=/";
}  
if (height > 0) 

document.cookie = "screenHeight=" + height + ";expires=" + exp.toGMTString( ) + ";path=/";
}  


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

Протестируйте, пожалуста!
Внесите поправки.

  Ответить  
 
 автор: AlexSol   (12.01.2009 в 16:46)   письмо автору
 
   для: Eugene77   (12.01.2009 в 15:51)
 

на иностранных сайтах достаточно распространены переключатели с возможностью выбора размера своими силами. напиример - http://www.deltatangobravo.com/images/zoom/
а вот тут отталкиваются от ширины экрана http://www.alistapart.com/articles/switchymclayout

  Ответить  
 
 автор: Eugene77   (13.01.2009 в 08:47)   письмо автору
 
   для: AlexSol   (12.01.2009 в 16:46)
 

Да,интересно!

http://www.deltatangobravo.com/images/zoom/ - отлично работает, но грузить 3 стилевых таблицы (тем более у меня они большие) не очень хочется. У нас ведь в России всё ещё многие в Интернете через GPRS.

http://www.alistapart.com/articles/switchymclayout - это у меня на Опере глючит. Текст один на другой налезает.
И непонятно как-то всё...
Вот это, например, что значит:
<link rel="alternate"

Буду ещё смотреть, может, что-то пойму.
Но в идеале, конечно, хотелось бы просто функцию пропорционального изменения размера всех шрифтов в документе, которую можно было бы вызывать, другой функцией, учитывающей куки, screen итд.
Или можно просто в скрипте писать:
document.body.style.font = 140%;
будет это везде работать?

Сейчас испытаю. Спасибо, что навели на идею!

  Ответить  
 
 автор: sl1p   (13.01.2009 в 09:11)   письмо автору
 
   для: Eugene77   (13.01.2009 в 08:47)
 

document.body.style.fontSize = 140%;
:)

  Ответить  
 
 автор: Eugene77   (13.01.2009 в 10:03)   письмо автору
 
   для: sl1p   (13.01.2009 в 09:11)
 

>document.body.style.fontSize = 140%;
>:)
Это верно, конечно же, но что-то не получается...
<script>
window.onload=function(e){
document.body.style.fontSize = 400%;
</script>

Не работает.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования