Закрыть

Для эффективной работы на сайте используются cookie и обработка персональных данных. Пользуясь этим сайтом, вы соглашаетесь с правилами использования сайта. Подробнее

Цитата дня

Vivazzi.ru

Личный сайт Мальцева Артема

Вежливость — это такое качество человеческой натуры, которое помогает не замечать поломанной калитки, но обращать внимание на цветы за этой калиткой.

Дейл Карнеги

Расстянуть текст по длине блока

16 сентября 2014 г. 0:37

Есть несколько способов растянуть текст по ширине блока или страницы адаптивным образом.

1. Использование css-трансформации scale

Данный код позволяет менять размер шрифта в зависимости от ширины браузера:

<!-- test.html -->
<div class="test">Произвольный текст</div>
// script.js
var $window = $(window), $body = $('body'), $wrap = $('.wrap'), defaultWidth = 1000;
     
$window.resize(function () {
    $wrap.css({transform: 'scale(' + $window.width() / defaultWidth  + ')'});
    var height = $wrap.outerHeight(true);
}).resize();
/* styles.css */
.svg_test text {font-size: 72px;}

Немного доработав код, вы можете растянуть текст не только на всю длину страницы, но и на длину конкретного блока.

2. Использование параметра font-size

Есть ещё другой способ заставить шрифт растягиваться по длине блока:

<!-- test.html -->
<div class="test">Произвольный текст</div>
// script.js
$(function () {
    var $test = $('.test');
    var k = 1;

    $(window).resize(function(){
        var val = $test.width();
        $test.css('font-size', Math.floor(val/k)+'%');
    }).resize();
});

Метод основан на использовании css-параметра font-size. Параметром k подгоняется шрифт под размеры блока. Имейте ввиду, что значение font-size, выраженный в процентах, вычисляется не от ширины блока, а от размера шрифта родительского блока, поэтому параметр k подгоните под себя.

3. Использование svg

Данный способ хорош тем, что не нужно использовать javascript. В данном пункте приведу более сложный пример использования svg: будем использовать многострочный текст, выравненный по центру.

Добавляем svg-код на страницу html:

<!-- test.html -->
<div class="svg_test">
    <svg width="100%" viewBox="0 0 100 100" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg">
        <text x="50%" y="14" font-size="14">Длинная строка 1</text>
        <text x="50%" y="30" font-size="14">Строка 2</text>
    </svg>
</div>

Добавляем стили:

/* styles.css */
.svg_test text {text-anchor: middle;}

Смысл такого способа в том, что мы растягиваем наш svg на всю ширину блока, используя width="100%", а для каждого текстового элемента задаём перемещение по оси X в 50%, и наконец, добавляем text-anchor: middle; для выравнивания текста относительно заданного перемещения по оси X. Опять таки, и здесь нужна подгонка параметром.

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

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

Оцените статью

0 из 5 (всего 0 оценок)

Поля, отмеченные звёздочкой ( * ) , являются обязательными.

Спасибо за ваш отзыв!

Автор статьи

Права на использование данной статьи, расположенной на настоящей странице http://vivazzi.ru/it/proportional-increase-font-size/:

Разрешается копировать статью с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="http://vivazzi.ru/it/proportional-increase-font-size/">http://vivazzi.ru/it/proportional-increase-font-size/</a>

Подробнее: Правила использования сайта

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

Или вы ищите хорошие IT сервисы или книги? Сохраните свое время и взгляните на мою подборку рекомендаций, которыми постоянно пользуюсь.
Посмотреть рекомендации

Комментариев: 0

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

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

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

Попробуйте