Растянуть текст по длине блока
16 сентября 2014 г. 4: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 */ .test {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