inline стили что это
Почему инлайнить стили — плохо
Встроить стили глобально:
Встроить с помощью атрибута style :
Импортировать стили из внешних файлов:
Подключить внешние таблицы стилей:
Почему разработчики предпочитают внешние стили
Чаще всего в веб-разработке можно встретить проекты с внешними таблицами стилей. Дело в том, что такой способ стилизации удобен не только для создания сайтов или веб-приложений с нуля, но и для их дальнейшей поддержки. С его помощью легко управлять CSS-правилами, следить за наследованием и каскадностью, поддерживать чистоту кода в целом.
Inline-стили не так гибки, как внешний CSS. Их сложнее поддерживать и почти невозможно переопределить. Из-за внутренних стилей HTML-файл раздувается и становится тяжелее. Функциональность CSS не так обширна, как при работе с внешними стилями. Чтобы понять всю глубину проблемы, сравним оба способа стилизации.
Поддержка кода. При подключении внешнего стилевого файла CSS отделён от разметки, поэтому его проще поддерживать. Подключение стилей извне также позволяет использовать препроцессоры, чтобы ускорить процесс разработки и сделать код легко читаемым. А если вы работаете над проектом вместе с другими людьми, такой способ позволяет всем участникам быстрее ориентироваться в стилях.
Пример стилей в стороннем CSS-файле
При использовании внешнего CSS вы видите структуру своего проекта. Вы понимаете, где и какие свойства заданы элементу и можете легко их изменить. Вы понимаете логику: какие свойства переопределены и почему. Разбираетесь в наследовании и каскадировании и можете управлять ими.
Дополнительная функциональность. Внешние стили позволяют гибко использовать псевдоклассы и псевдоэлементы. Например, разработчик может задать интерактивные состояния отдельно выбранным кнопкам, стилизовать каждый чётный элемент списка или выполнить другие задачи.
Внешний CSS также открывает доступ к кастомным свойствам. Этот способ стилизации позволяет создавать переменные и с их помощью гибко управлять стилями. Например, быстро менять цвета.
Пример стилей в стороннем CSS-файле
Переменные содержат все цвета, используемые на сайте. Если заказчик захочет использовать зелёный другого оттенка, разработчику не нужно будет искать и менять каждое стилевое правило с этим цветом. Он просто изменит цвет в одной переменной.
Дублирование кода. Один из важнейших принципов разработки — Don’t repeat yourself или DRY. Он означает, что ваш код не должен повторяться. К примеру, если у вас встречаются кнопки с одинаковым оформлением, было бы ошибкой для каждой из них заново прописывать цвет, размер и другие параметры.
С внешними таблицами стилей проще придерживаться принципа DRY. Ведь в этом случае все стили, которыми нужно управлять, находятся в одном месте, а не на нескольких страницах проекта.
Переопределение стилей. Стили из внешнего CSS файла легко переопределять, так как у каждого селектора своё значение специфичности. Класс приоритетнее селектора тега, а идентификатор приоритетнее класса.
Пример достаточно крупного сайта. Из-за того, что размеры заголовка заданы инлайн, разработчику пришлось переопределять их внутри файла CSS с помощью `! important.`
Скорость загрузки и трафик. Во время первой загрузки страницы внешние стили отображаются с задержкой: браузеру нужно время, чтобы скачать стилевой файл. Особенно заметно такое поведение при медленном интернет-соединении. Понадобится несколько сотен миллисекунд или даже целые секунды, чтобы на странице появились стили. К тому же внешний стилевой файл относится к блокирующим ресурсам. Пока он не загрузится, рендеринг в браузере не завершится.
Впрочем, браузер кеширует файлы CSS, поэтому при повторной загрузке ему не понадобится второй раз скачивать стили. Это сэкономит трафик и увеличит скорость отрисовки страницы.
Внутренняя стилизация содержится непосредственно в HTML-коде, поэтому с каждым новым правилом вес файла будет увеличиваться. Вместе с ним растёт количество потребляемого трафика и уменьшается скорость загрузки страницы. На небольших сайтах эта проблема может быть не так критична. Но на крупных интернет-магазинах или порталах, а также при медленном интернет-соединении разница будет очевидна и грозит потерей посетителей.
Когда можно использовать inline-стили?
Внутренние стили имеют серьезные недостатки, поэтому фронтенд-разработчики редко используют их в работе. Но у этого способа стилизации есть и положительные стороны.
Ускорение отрисовки страниц. Мы уже упоминали принцип работы браузера: при подключении внешнего CSS ему приходится отправлять дополнительный запрос на сервер, чтобы скачать стилевой файл. Но в случае с inline-стилями этого делать не нужно. Они уже доступны, так как содержатся непосредственно в файле HTML, поэтому при первой загрузке стили отрисуются быстрее.
Это преимущество работает на небольших страницах, не перегруженных стилями, но его можно использовать и на крупных ресурсах для повышения производительности CSS. С помощью inline-стилей вы можете ускорить отображение той части сайта, которую пользователи должны увидеть первой. Например, меню и первый блок с информацией. Всё, что для этого нужно — прописать стили этих блоков и элементов внутри HTML.
Почтовые рассылки. Ещё один случай, когда вы можете использовать внутренние стили — создание email-рассылок. По соображениям безопасности почтовые сервисы блокируют загрузку внешних ресурсов, в том числе стилевых файлов в HTML-коде письма. Например, по таким принципам работают Яндекс.Почта, Yahoo, Gmail и другие почтовые клиенты. Поэтому у разработчиков нет иного выхода, кроме как использовать inline CSS.
Пример вёрстки письма с добавлением внутренних стилей
Тестирование и работа со сторонними программами. Inline-стили также бывают удобны, если стилизация задана с помощью сторонних программ или через CMS. Некоторые разработчики используют внутренние стили для поиска и решения каких-то ошибок. За счет каскадности правила внутри атрибута style переопределяют другие стили, поэтому можно временно прописать правила CSS в разметке и посмотреть на отображение элементов. Но этот способ лучше использовать с осторожностью и по возможности сразу вносить правки во внешний стилевой файл.
Применение inline-стилей не самая распространённая практика, чаще всего вам предстоит использовать внешний CSS. Но помните, что внутренние стили тоже бывают полезны.
Умение уместно использовать внутренние стили — навык, которым должен обладать каждый фронтенд-разработчик. Если вы хотите освоить разные способы подключения стилей и поближе познакомиться с CSS, попробуйте наши тренажёры. Они помогут вам разобраться со всеми вариантами стилизации, как внутренними, так и внешними.
Соберитесь, пора разобраться
С HTML, CSS, JavaScript, PHP, фронтендом, бэкендом, фулстеком, Node.js, анимациями и всем остальным, чтобы устроиться на работу мечты.
Нажатие на кнопку — согласие на обработку персональных данных
Подумайте об использовании инлайна CSS в вашем следующем email проекте
Дата публикации: 2017-12-29
От автора: у новичков в email разработке возникают три главные проблемы, с которыми вы, скорее всего, уже столкнулись: в email шаблонах почти всегда банятся внешние ресурсы, вся разметка построена на таблицах, а также необходим инлайн CSS. В этой статье мы поговорим о последнем пункте и узнаем, почему и как это сделать.
Вы уже знаете, что необходимость инлайнить CSS изменилась с тех пор, как Gmail начал поддерживать тег style. Тем не менее, эта техника все еще широко применяется в региональных клиентах электронной почты и в некоторых нативных приложениях почты для старых устройств на андроид, а также в старых приложениях Gmail. Инлайнинг отлично подходит для сложных макетов. Инлайнинг может послужить основой для техник прогрессивного улучшения.
Решив, что это важно, давайте поговорим о доступных онлайн инструментах и инструментах командной строки.
Ниже мы обсудим разные инструменты, узнаем их плюсы, а также минусы. Задача – чтобы после прочтения статьи вы могли легко использовать их и замечать в них недостатки.
Общие моменты при инлайнинге CSS
Инлайнинг – широко применяемый метод конвертирования вставляемых и внешних CSS стилей в более надежный email код. Процесс похож с последним Email в ежегодной коллекции на сайте Acid. Отличный способ поддерживать старые и менее развитые email клиенты.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
До сих пор продолжаются споры по поводу отказа от инлайн стилей в будущем – можно заключить, что все до сих пор зависит от email клиентов конечных пользователей.
Возьмем шаблон из предыдущего урока по использованию препроцессора Sass в email разработке. Сравним вставляемые стили…
И инлайн…
Версии одного и того же шаблона. Скриншоты сняты с T-Online.de, что ясно показывает, если этот клиент важен для вас, вам нужно использовать инлайн стили для его поддержки. Outlooks на основе Word и разные версии Lotus Notes также лучше работают с инлайн стилями.
Множество email разработчиков инлайнит CSS вручную, но сразу понятно, что такой подход занимает много времени, и могут возникать ошибки. Здесь могут сильно пригодиться CSS инлайнеры. Но существует ли идеальный инструмент для этого?
Это вам нужно решить для себя самому. У разных инструментов свою сильные и слабые стороны. Ваша задача и конечный результат определят правильный ответ.
Из статьи Julie Ng возьмем предварительные условия для CSS инлайнеров:
Не удалять условные комментарии
Не сцеплять несколько CSS свойств в сокращение
Инлайнить и подключать только определенный CSS
Запомните эти условия. Перейдем к подробному разбору.
Начало работы с инлайнерами CSS
Если поискать в сети инлайн инструменты, можно найти 4 других варианта ручного инлайнинга:
API, где вы посылаете HTML и CSS и получаете инлайн версию документа
Инструменты командной строки типа ruby gems и глобально установленные пакеты NPM
CSS инлайнеры есть в таск раннер плагинах
Далее рассмотрим примеры описанных выше вариантов.
CSS инлайнеры через командную строку
Начнем с простейшего инструмента, но вы увидите, что он потрясающе справляется со своей задачей. Инструмент называется Inlining. Доступен на Github и NodeJS package manager.
Инлайн стили должны быть в отдельном CSS файле. При инлайнинге CSS мы применим следующие стили:
Экосистему NodeJS, а также как устанавливать NPM пакеты мы представили в предыдущем уроке. Быстро вспомним предыдущую статью. Следуя шагам установки:
вы должны легко установить Inlining.
Если у вас возникли проблемы, которые вы не можете решить сами, пишите об этом в комментариях, мы поможем.
После глобальной установки с помощью следующей команды inlining input.html >output.html можно инлайнить стили. Результат обработки input.html будет помещен в файл output.html. Используя тестовый шаблон, мы получим HTML ниже:
Стоит объяснить пару моментов по этому инструменту:
Он оставляет медиа запросы в теге style – вы увидите, что не все инструменты делают это
Хорошо инлайнит свойства width классов макета col67, col33
Добавляет тег tbody, завершая разметку table
Удаляет неизвестные CSS классы типа ExternalClass
Изучив превью Litmus, можно сделать вывод, что правильный жидкий макет применяется в большинстве мобильных email клиентов, а десктоп представление отображается на десктопе и webmail клиентах. В инструменте нет кастомизации процесса инлайнинга, но мне и так нравится результат. Мне не понравилось два момента: 1 – инструмент умеет инлайнить CSS только из внешних стилей, 2 – он использует табуляцию, что усложняет изменение после инлайнинга. В целом, я рекомендую этот инструмент.
Настройка инструмента автоматизации
Когда я захотел протестировать разные инструменты по инлайнингу, я узнал, что есть только один эффективный способ – собрать их и запустить через скрипт. Работать будет любое решение, но для упрощения нашей работы есть специальные инструменты, таск раннеры. Так мне нужно будет править только HTML, CSS и настройки инлайнеров CSS, остальные части процедуры сделают за меня.
Таск раннеры – инструменты автоматизации ежедневных задач. Обычно настройка основана на файле конфигураций определенного таск раннера, где хранятся все задачи, которые необходимо выполнить по простой команде.
Мы выберем Gulp – часто используемый, быстрый JS таск раннер. По простой стандартной команде мы создадим все команды запуска разных CSS инлайнеров. Установка такая же, как в разделе про Inlining.
Детально автоматизацию задач мы разберем в следующей статье по созданию автоматизированного фреймворка по созданию email. Все же, вас нужно познакомить с популярным JS таск раннером чисто для этой статьи. Поехали!
Рекомендуемые настройки проекта можете скачать с Github, но я все же быстро расскажу, как все работает. Если у вас возникли предложения по улучшению, пишите в комментариях.
В нашем проекте у нас будут:
input.html – хранит разметку шаблона email и тег link на main.css, в котором лежат стили шаблона, или же встраиваемые стили в тег style. В этом теге мы и будем тестировать принцип работы
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
gulpfile.js – хранит все задачи по инлайнингу
файлы и папки NPM – файл package.json и папка node_modules – здесь будут размещены gulp util пакеты (например, gulp-rename для настройки имени выходного файла) и пакеты CSS inliner, доступные через NPM
Я открыл отдельные JS файлы для каждого CSS инлайнера, который не настроен на прямой запуск с Gulp
Папка results – хранит сгенерированный инлайновый HTML
Основы CSS — Основы современной вёрстки
В прошлых уроках мы познакомились с разметкой элементов с помощью HTML. Многие из этих элементов уже имеют какое-то своё визуальное оформление: параграфы имеют отступы, ссылки выделяются подчёркиванием и цветом, заголовкам устанавливаются другие значения размера шрифта. Обычно этого недостаточно для создания полноценных современных сайтов. Какие-то стили нам просто не подходят, а какие-то элементы мы хотим стилизовать отдельно.
Для визуального оформления WEB-страницы создан язык CSS. CSS переводится как каскадные таблицы стилей (Cascading Style Sheets). Именно этот язык отвечает за то, как наши HTML-элементы будут выведены пользователю в браузере.
В этом уроке мы разберём ту часть аббревиатуры, которая относится к таблицам стилей. Что такое каскадность и как это работает вы сможете прочитать в следующем уроке.
Стили CSS
Чтобы добавить стиль к элементу, необходимо использовать селектор. Он указывает, к какому именно элементу или элементам нужно добавить наши стили. Для примера возьмём следующую HTML-разметку:
Изменим размер и цвет шрифта в этом предложении. Это можно сделать следующей CSS-записью:
Что означает эта таинственная запись выше? Её можно условно разбить на три основные составляющие:
Разберём некоторые свойства, которые помогут вам оформлять текст:
Подключение CSS
Использовать CSS на странице можно с помощью нескольких способов:
Параграф с размером шрифта 20 пикселей. Текст написан красным цветом.
Почему инлайнить стили — плохо
Встроить стили глобально:
Встроить с помощью атрибута style :
Импортировать стили из внешних файлов:
Подключить внешние таблицы стилей:
Почему разработчики предпочитают внешние стили
Чаще всего в веб-разработке можно встретить проекты с внешними таблицами стилей. Дело в том, что такой способ стилизации удобен не только для создания сайтов или веб-приложений с нуля, но и для их дальнейшей поддержки. С его помощью легко управлять CSS-правилами, следить за наследованием и каскадностью, поддерживать чистоту кода в целом.
Инлайн-стили не так гибки, как внешний CSS. Их сложнее поддерживать и почти невозможно переопределить. Из-за внутренних стилей HTML-файл раздувается и становится тяжелее. Функциональность CSS не так обширна, как при работе с внешними стилями. Чтобы понять всю глубину проблемы, сравним оба способа стилизации.
Поддержка кода. При подключении внешнего стилевого файла CSS отделён от разметки, поэтому его проще поддерживать. Подключение стилей извне также позволяет использовать препроцессоры, чтобы ускорить процесс разработки и сделать код легко читаемым. А если вы работаете над проектом вместе с другими людьми, такой способ позволяет всем участникам быстрее ориентироваться в стилях.
Пример стилей в стороннем CSS-файле
При использовании внешнего CSS вы видите структуру своего проекта. Вы понимаете, где и какие свойства заданы элементу и можете легко их изменить. Вы понимаете логику: какие свойства переопределены и почему. Разбираетесь в наследовании и каскадировании и можете управлять ими.
Дополнительная функциональность. Внешние стили позволяют гибко использовать псевдоклассы и псевдоэлементы. Например, разработчик может задать интерактивные состояния отдельно выбранным кнопкам, стилизовать каждый чётный элемент списка или выполнить другие задачи.
Внешний CSS также открывает доступ к кастомным свойствам. Этот способ стилизации позволяет создавать переменные и с их помощью гибко управлять стилями. Например, быстро менять цвета.
Пример стилей в стороннем CSS-файле
Переменные содержат все цвета, используемые на сайте. Если заказчик захочет использовать зелёный другого оттенка, разработчику не нужно будет искать и менять каждое стилевое правило с этим цветом. Он просто изменит цвет в одной переменной.
С внешними таблицами стилей проще придерживаться принципа DRY. Ведь в этом случае все стили, которыми нужно управлять, находятся в одном месте, а не на нескольких страницах проекта.
Переопределение стилей. Стили из внешнего CSS файла легко переопределять, так как у каждого селектора своё значение специфичности. Класс приоритетнее селектора тега, а идентификатор приоритетнее класса.
Скорость загрузки и трафик. Во время первой загрузки страницы внешние стили отображаются с задержкой: браузеру нужно время, чтобы скачать стилевой файл. Особенно заметно такое поведение при медленном интернет-соединении. Понадобится несколько сотен миллисекунд или даже целые секунды, чтобы на странице появились стили. К тому же внешний стилевой файл относится к блокирующим ресурсам. Пока он не загрузится, рендеринг в браузере не завершится.
Впрочем, браузер кеширует файлы CSS, поэтому при повторной загрузке ему не понадобится второй раз скачивать стили. Это сэкономит трафик и увеличит скорость отрисовки страницы.
Внутренняя стилизация содержится непосредственно в HTML-коде, поэтому с каждым новым правилом вес файла будет увеличиваться. Вместе с ним растёт количество потребляемого трафика и уменьшается скорость загрузки страницы. На небольших сайтах эта проблема может быть не так критична. Но на крупных интернет-магазинах или порталах, а также при медленном интернет-соединении разница будет очевидна и грозит потерей посетителей.
Когда можно использовать inline-стили?
Внутренние стили имеют серьезные недостатки, поэтому фронтенд-разработчики редко используют их в работе. Но у этого способа стилизации есть и положительные стороны.
Ускорение отрисовки страниц. Мы уже упоминали принцип работы браузера: при подключении внешнего CSS ему приходится отправлять дополнительный запрос на сервер, чтобы скачать стилевой файл. Но в случае с inline-стилями этого делать не нужно. Они уже доступны, так как содержатся непосредственно в файле HTML, поэтому при первой загрузке стили отрисуются быстрее.
Это преимущество работает на небольших страницах, не перегруженных стилями, но его можно использовать и на крупных ресурсах для повышения производительности CSS. С помощью inline-стилей вы можете ускорить отображение той части сайта, которую пользователи должны увидеть первой. Например, меню и первый блок с информацией. Всё, что для этого нужно — прописать стили этих блоков и элементов внутри HTML.
Почтовые рассылки. Ещё один случай, когда вы можете использовать внутренние стили — создание email-рассылок. По соображениям безопасности почтовые сервисы блокируют загрузку внешних ресурсов, в том числе стилевых файлов в HTML-коде письма. Например, по таким принципам работают Яндекс.Почта, Yahoo, Gmail и другие почтовые клиенты. Поэтому у разработчиков нет иного выхода, кроме как использовать inline CSS.
Пример вёрстки письма с добавлением внутренних стилей
Тестирование и работа со сторонними программами. Inline-стили также бывают удобны, если стилизация задана с помощью сторонних программ или через CMS. Некоторые разработчики используют внутренние стили для поиска и решения каких-то ошибок. За счет каскадности правила внутри атрибута style переопределяют другие стили, поэтому можно временно прописать правила CSS в разметке и посмотреть на отображение элементов. Но этот способ лучше использовать с осторожностью и по возможности сразу вносить правки во внешний стилевой файл.
Ещё статьи о вёрстке
Применение инлайн-стилей не самая распространённая практика, чаще всего вам предстоит использовать внешний CSS. Но помните, что внутренние стили тоже бывают полезны.
Если вы хотите освоить разные способы подключения стилей и поближе познакомиться с CSS, попробуйте наши бесплатные тренажёры. Они помогут вам разобраться со всеми вариантами стилизации, как внутренними, так и внешними.
10 вещей, которые можно делать в верстке с помощью псевдоэлементов before и after
Что такое псевдоэлементы и зачем они нужны
Это дополнения к элементам, которые создаются с помощью CSS. Они не размещаются в разметке, но, если заглянуть в DevTools, их можно найти в разделе Elements.
Иконки для элементов
С помощью псевдоэлементов можно сделать иконки для элементов. Например, для ссылки с телефоном нужно добавить иконку-трубку. Вот простой пример использования этой возможности.
2.Счетчики на элементах
Нередко в дизайне сайтов встречается набор элементов, которые имеют порядковый номер: 01, 02, 03, 04 и т.п. Представьте, что количество таких элементов каждый день растет, объем контента сайта увеличивается, и с каждым новым блоком вам придется вручную писать каждую цифру. Это крайне неудобно, так что для это цели придумали счетчики, которые реализуются как раз с помощью псевдоэлементов. Давайте разберем на примере:
Здесь нас интересует несколько вещей. Во-первых, для родителя итерируемых элементов (в нашем случае div с классом parent) мы задаем свойство counter-reset. Это, по сути, имя нашего счетчика, который мы далее будем использовать. Можно сюда написать что угодно по смыслу, в нашем случае будет numbers.
Если ваше число должно отличаться особым образом, например не “1, 2, 3”, а “01, 02, 03”, вы можете модернизировать свойство content, напрямую добавив в него число 0. Например: content: “0” counter(numbers).
3.Кастомные чекбоксы и радиокнопки
4.Обводка с градиентом
Сделать градиент через свойство border крайне трудно, а в некоторых браузерах просто невозможно. Но и здесь можно обойти систему, использовав псевдоэлементы. Посмотрим пример:
Тут мы имитируем бордер с помощью градиентного фона, и наложенного поверх него изображения. Благодаря паддингу в 5 пикселей картинка сжимается, а фон под ней проявляется как раз на 5 пикселей с каждой стороны. Внешне это очень похоже на обводку элемента.
5.Кастомные иконки у списка
Через псевдоэлемент можно делать и кастомные иконки для списков. Вы можете использовать даже эмоджи, если это требуется.
Здесь сбрасываются стандартные точки с помощью list-style, а затем с помощью псевдоэлемента добавляется кастомная иконка. Эмоджи вставлен не фоном, как делали ранее, а прямо в свойство content.
6.Эффекты наложения слоев
Частенько на контентных сайтах можно видеть превью статьи с картинкой на фоне и текстом поверх изображения. Чтобы текст был виден пользователю и читаем, поверх картинки удобно делать небольшое затемнение. В этом случае текст будет отлично виден как на фоне темного, так и светлого изображения. Подобные наложения слоя с затемнением (и не только) очень удобно делать при помощи псевдоэлементов. Рассмотрим пример:
Само затемнение, конечно, делаем псевдоэлементом. С помощью position: absolute и свойств top, left, right, bottom со значением 0 мы растягиваем псевдоэлемент на размер родителя, и просто даем ему тень. Получается затемнение.
7.Стилизация кавычек у цитаты
Помимо тега q есть еще и blockquote, который кавычек не имеет. Но если очень хочется, их можно сделать. Пример:
Я специально показал здесь и q, и blockquote, чтобы было понятно, что стилями возможно все. Для разных тегов можно написать легко одно и то же.
8.Стилизация атрибута alt
Довольно специфический, но иногда очень удобный прием. С помощью псевдоэлемента можно исправить стандартное некрасивое отображение “сломанной” картинки на нормальное.
как выглядит стандартный alt, если картинка не загрузилась.
а так мы можем сделать
Давайте разберем пример:
9.Геометрические эффекты стилизации (линии, кружочки и т.д.)
Иногда в макетах встречается различные дополнительные эффекты, например, под заголовками секций размещается небольшая линия, которая как бы подчеркивает заголовок. И это тоже можно сделать при помощи псевдоэлемента. Пример:
Здесь создается псевдоэлемент с пустым контентом, с указанием размеров (ширины и высоты) и фона (background). По сути мы нарисовали прямоугольник, который выглядит как линия.
Точно также можно делать круги, квадраты и прочие фигуры, которые есть в макете.
10.Эффекты для состояний элементов
Для состояний элементов (hover, focus, active) можно использовать псевдоэлементы, особенно если эти эффекты нестандартные, со скруглением углов и так далее. Снова посмотрим пример:
Здесь создается псевдоэлемент с размером на 12 пикселей большим, чем у родителя. Затем перемещаем его на 6 пикселей, и псевдоэлемент встает четко по центру элемента.
Через псевдокласс :focus визуализируем его, так что получается красивая обводка.
Вывод
В целом, при помощи псевдоэлементов можно выполнять практически любые преобразования и трансформации, если творчески подойти к процессу. Самое важное здесь то, что при использовании этих элементов разметка не раздувается, поскольку отпадет необходимость использования пустых тегов (как часто делают, используя span). Используйте псевдоэлементы, они серьезно упростят вашу жизнь. Удачи!
На курсе «Веб-вёрстка» вы познакомитесь со стандартами Web 2.0, научитесь работать с макетами и форматировать код, освоите адаптивную вёрстку, а по итогу — сможете создавать быстрые и удобные сайты, которые точно понравятся пользователям. Посмотреть программу и записаться по ссылке.