Java, UX, HTML, CSS, WEB-design

Представляем адаптивную веб-типографику с помощью FlowType.JS

[ad_1]

  • Джей Ди Граффам

  • 0 Комментарии

Представляем адаптивную веб-типографику с помощью FlowType.JS

  • 7 минут чтения

  • Кодирование, рабочий процесс, JavaScript, jQuery

Краткое резюме ↬

Работая над сайтом с большим количеством изображений для Simple Focus, пара наших дизайнеров, Джон Уилсон и Кейси Зумвальт, заметили, что изображения всегда идеально масштабируются. Потяните угол окна браузера, и изображения расширятся, чтобы заполнить все пространство. Отодвиньте угол, они сожмутся и встанут на место. С другой стороны, длина строки гипертекста изменяется в зависимости от ширины его родительского элемента, что отрицательно сказывается на удобочитаемости.

Нам очень приятно поддерживать активных членов сообщества веб-дизайнеров и разработчиков. Сегодня мы с гордостью представляем FlowType.JS что обеспечивает идеальное количество символов в строке при любой ширине экрана. Эта статья является еще одним специальным выпуском нашей серии различных инструментов, библиотек и методов, которые мы опубликовали здесь, в Smashing Magazine: LiveStyle, PrefixFree, Foundation, Sisyphus.js, GuideGuide, Gridpak, JS Bin, CSSComb и Jelly Navigation Menu. — Ред.

Работая над сайтом с большим количеством изображений для Simple Focus, пара наших дизайнеров, Джон Уилсон и Кейси Зумвальт, заметил, как изображения всегда отлично масштабируются. Потяните угол окна браузера, и изображения расширятся, чтобы заполнить все пространство. Отодвиньте угол, они сожмутся и встанут на место. С другой стороны, длина строки гипертекста изменяется в зависимости от ширины его родительского элемента, что отрицательно сказывается на удобочитаемости.

«Было бы неплохо, — спросил Джон, — если бы текст работал больше как изображения?» Кейси заверил его, что это возможно с плагином jQuery, если только они смогут вычислить математику.

Тип жидкости
«В гибком макете ширина браузера и типографский размер связаны: чем шире область просмотра, тем больше символов в строке». — Трент Уолтон

Simple Focus — это в основном дизайнерская фирма, поэтому, как и большинство наших идей по программированию, мы ничего с ней не делали. Затем, несколько недель спустя, Джон перечитывал статью Трента Уолтона о типе жидкости и был вдохновлен, чтобы попытаться выяснить это.

Еще после прыжка! Продолжить чтение ниже ↓

Через час у нас был рабочий прототип, и мы пинали шины изнутри. В течение двух недель FlowType.JS был полностью разработан и готов к отправке в мир.

Вот процесс того, как мы туда попали:

Технически говоря

FlowType.JS, если свести его к минимуму, представляет собой не более чем умную математику, завернутую в плагин jQuery, с некоторыми опциями для управления размером шрифта для достижения определенной длины строки.

Давайте углубимся в код, чтобы лучше понять, что происходит:

Базовая математика

Как вы увидите ниже, это довольно простые вещи. Во-первых, нам нужно измерить ширину элемента, чтобы установить базовое число, которое будет ключом к остальной части уравнения. Затем мы делим это основание на число, которое сводится к разумному font-size. Например, если элемент имеет размеры 1000px и мы разделили его на 50мы получаем 20pxчто является разумным font-size.

Line-height еще одно простое уравнение, основанное на font-size. Допустим, мы выбираем line-height из 1.45 раз font-size для удобочитаемости. Это уравнение легко: font-size умножается на 1.45 соответствует рекомендуемому line-height.

Прототип

Первоначальный прототип показывает нам, что идея действительно работает:


var $width = $window.width(),
    $fontSize = $width / 50,
    $lineHeight = $fontSize * 1.45;

$(window).ready( function() {
  $('element').css({
    'font-size':$fontSize + 'px',
    'line-height':$lineHeight + 'px'
  });
}

$(window).resize( function() {
  $('element').css({
    'font-size':$fontSize + 'px',
    'line-height':$lineHeight + 'px'
  });
});

Если вы были внимательны, то могли заметить, что в коде есть одна серьезная проблема: математика основана на ширине окна, а не на ширине элемента. Это вызывает проблемы с точками останова, когда размеры элементов увеличиваются, а текст становится меньше, а ширина элемента становится больше.

Улучшенный код

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

Публикация исправленного кода здесь сделала бы эту статью слишком длинной, поскольку она включает в себя несколько операторов if, а также повторяющийся код. Мягко говоря неэффективно. С учетом сказанного, по крайней мере, у него были варианты, и он работал хорошо. Но мы сосредоточены на дизайне, помните? Поэтому мы хотели получить небольшой совет от некоторых друзей, прежде чем выкладывать что-то, что могло бы выставить нас нубами.

Небольшая помощь от друзей

Почти готовый к запуску FlowType.JS был проверен несколькими экспертами. Дэйв Руперт предложил нам убедиться, что он хорошо работает, создав демонстрационную страницу с несколькими экземплярами и большим количеством текста. Мы собрали это вместе и затаили дыхание, и, к счастью, это сработало очень хорошо.

Затем мы попросили Джованни ДиФетеричи оставить отзыв. Джованни удивил нас, проведя рефакторинг и сжав все операторы if в две строки кода. В конце концов, сжатая версия FlowType.JS может занимать всего 450 байт. Мы также получили советы от множества других щедрых друзей по всем вопросам, вплоть до проверки орфографии на демонстрационном сайте.

Окончательный код

Окончательный код феноменально прост. Несколько опций и переменных устанавливаются одновременно, базовая функция называется changes где происходит вся магия, и два простых вызова для changes. Один устанавливает font-size при загрузке, а другой для пересчета при изменении размера окна.

Взгляните на код здесь:

(function($) {
   $.fn.flowtype = function(options) {

      var settings = $.extend({
         maximum   : 9999,
         minimum   : 1,
         maxFont   : 9999,
         minFont   : 1,
         fontRatio : 35,
         lineRatio : 1.45
      }, options),

      changes = function(el) {
         var $el = $(el),
            elw = $el.width(),
            width = elw > settings.maximum ? settings.maximum : elw  settings.maxFont ? settings.maxFont : fontBase < settings.minFont ? settings.minFont : fontBase;

         $el.css({
            'font-size'   : fontSize + 'px',
            'line-height' : fontSize * settings.lineRatio + 'px'
         });
      };

      return this.each(function() {

         var that = this;
         $(window).resize(function(){changes(that);});

         changes(this);
      });
   };
}(jQuery));

Как это работает и резервный вариант

Как видите, код применяет вновь вычисленные числа как встроенный CSS к выбранному элементу. Поскольку этот новый CSS является встроенным, он перезаписывает все, что вы установили в связанных таблицах стилей, создавая естественный запасной вариант на случай, если у пользователя отключен JavaScript.

Скриншот FlowType.JS

Вы захотите настроить параметры на основе выбранных вами шрифтов, поскольку математика работает по-разному в зависимости от размера выбранного вами шрифта.

Выполнение

FlowType.JS был создан как плагин jQuery, поэтому начать работу с ним очень просто. Все, что вам нужно сделать, это вызвать FlowType.JS и настроить несколько параметров в соответствии с вашим дизайном.

$('body').flowtype({
 minimum   : 500,
 maximum   : 1200,
 minFont   : 12,
 maxFont   : 40,
 fontRatio : 30,
 lineRatio : 1.45
});

Полная инструкция находится на нашем демонстрационном сайте. Если вам не нравится jQuery, один член сообщества Github уже перенес его на собственный JavaScript.

Ничто никогда не закончено

У нас есть еще идеи по улучшению плагина, но мы относимся к нему в первую очередь как к эксперименту. Это решает распространенную проблему в адаптивном дизайне, когда длина строки и высота строки не идеальны между точками разрыва. Несмотря на это, многие умные разработчики и дизайнеры задавали вопросы о FlowType.JS.

Один вопрос, который нам задали, связан с типографской теорией: должен ли дизайн начинаться с размера шрифта или ширины элемента при оптимизации текста для удобочитаемости? Я думаю, что лучший ответ заключается в том, что это суждение, что чтение текста в вашем дизайне — лучший способ определить, что наиболее разборчиво. Мы просто написали инструмент, который поможет вам достичь желаемого с вашим дизайном.

Другой касается доступности: разве этот инструмент не отключает масштабирование текста, что делает сайты менее доступными? Нам известно о таком поведении, но пользователи могут увеличить масштаб более чем на 200 % и увидеть увеличение размера шрифта. А пока просто не забывайте учитывать свою аудиторию при разработке с помощью FlowType.JS.

Помните, что, как и любая утилита, это не панацея от проблем веб-дизайна. Мы просто пытаемся поделиться небольшой идеей с сообществом веб-дизайнеров и разработчиков и приветствуем отзывы на Github.

Сокрушительная редакция
(иль, эа)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Представляем адаптивную веб-типографику с помощью FlowType.JS

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Краткое описание по статье Представляем адаптивную веб-типографику с помощью FlowType.JS

Название: Представляем адаптивную веб-типографику с помощью FlowType.JS . Краткое описание: [ad_1] ⭐ Джей Ди . Дата публикации: 12.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»