Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > изменение размера шрифта в завис. от длины строки


Автор: olegti 20.8.2009, 17:04
Всем доброго времени суток!
У меня такой вопрос!
есть блок с пременной

Код

<div style="color:#FFFFFF;position:relative;top:83px;right:30px;"><h1><?=(isset($ADV->header)) ? $ADV->header:'New Advertise'?></h1></div>


эта переменная вытаскивает название компании.

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

например если символов <=20, то размер шрифта 15px
                 если символов больше 20 но меньше 35, то размер шрифта 13px
                 если символов больше 35, то размер шрифта = 11px

подскажите пожалуйста как это можно реализовать?!!!!!!

Автор: bars80080 20.8.2009, 17:32
ну, дык померить длину строки не сложно: 

strlen($ADV->header);

а выбрать размер в зависимости от длины - поможет if()

Автор: olegti 20.8.2009, 17:44
Цитата(bars80080 @ 20.8.2009,  17:32)
ну, дык померить длину строки не сложно: 

strlen($ADV->header);

а выбрать размер в зависимости от длины - поможет if()

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

Автор: olegti 20.8.2009, 18:41
Цитата(olegti @ 20.8.2009,  17:04)
Всем доброго времени суток!
У меня такой вопрос!
есть блок с пременной

Код

<div style="color:#FFFFFF;position:relative;top:83px;right:30px;"><h1><?=(isset($ADV->header)) ? $ADV->header:'New Advertise'?></h1></div>


эта переменная вытаскивает название компании.

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

например если символов <=20, то размер шрифта 15px
                 если символов больше 20 но меньше 35, то размер шрифта 13px
                 если символов больше 35, то размер шрифта = 11px

подскажите пожалуйста как это можно реализовать?!!!!!!

я сделал вот так вот, но что-то не работает

Код

<? if ( strlen ($ADV->header)>20 ) { ?>
<div style="color:#FFFFFF;position:relative;top:83px;right:30px;font-size:9px"><h1><?=(isset($ADV->header)) ? $ADV->header:'New Advertise'?></h1></div>
<? } else { ?><div style="color:#FFFFFF;position:relative;top:83px;right:30px;"><h1><?=(isset($ADV->header)) ? $ADV->header:'New Advertise'?></h1></div> <? }?>

Автор: TUMS 20.8.2009, 19:26
а не проще вынести логику в css файл?

Автор: bars80080 20.8.2009, 19:54
попробуйте заместо

Код

<div style="color:#FFFFFF;position:relative;top:83px;right:30px;"><h1><?=(isset($ADV->header)) ? $ADV->header:'New Advertise'?></h1></div>


это:

Код

<?php
if(isset($ADV->header)) {
    $header = $ADV->header;
    $len = strlen($header);
    if($len <= 20) { $fs = 15; }
    elseif($len > 20 && $len < 35) { $fs = 13; }
    else { $fs = 11; }
} else {
    $header = 'New Advertise'; $fs = 15;
}
?>
<div style="color:#FFFFFF;position:relative;top:83px;right:30px;font-size:<?php echo $fs; ?>px;"><h1><?php echo $header; ?></h1></div>



Автор: skyboy 20.8.2009, 23:53
Цитата(TUMS @  20.8.2009,  18:26 Найти цитируемый пост)
а не проще вынести логику в css файл? 

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)