Псевдоэлемент after before – Почему у меня не работает :after/:before на img если прописан путь к картинки? — Хабр Q&A

Содержание

Псевдоэлементы :Before и :After – как и где использовать

Здравствуйте, уважаемые друзья. Как вы знаете, на скорость загрузки сайта влияет довольно много факторов. А ещё скорость загрузки сайта – это один из факторов ранжирования в поисковых системах.

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

Разумеется, перед загрузкой изображений на сайт их нужно оптимизировать, как и какими средствами, я писал здесь. Также положительно на скорости загрузки скажется объединение элементов дизайна в CSS-спрайты. Этот способ сократит в разы количество запросов к базе данных, и на выходе вы получаете более шустрый сайт.

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

Если хотите узнать всё и сразу – смотрите видеоурок.

Что такое псевдоэлементы :Before и :After

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

Я увидел в них своего рода альтернативу css-спрайтам. На моей нынешней теме оформления я собрал элементы дизайна в спрайты. Это сократило время загрузки сайта.

Реализация css спрайтовРеализация css спрайтов

Реализация css спрайтов

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

Что можно упаковать в псевдоэлементы :Before и :After

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

Есть лишь некоторые отличия в наполнении псевдоэлементов контентом. Скажем, если это просто кавычки или скобка, или какой другой простой символ, то проблем нет вообще. Но, вот если это шрифт-иконки или фоновое изображение, то придётся немного повозиться. И эта возня того стоит.

Кстати, если в качестве контента для псевдоэлементов использовать специальные символы или шрифты-иконки, то к ним можно применять стили css: цвет, размер, начертание, позиционирование и так далее.

Как использовать псевдоэлементы :Before и :After

Конструкция использования псевдоэлементов достаточно проста. :Before устанавливается перед элементом, а :After после элемента.

В HTML код вставляем такую конструкцию:

<span class=”psevdo”>Здесь может быть любой текст.</span>

Разумеется, это пример и в каждом конкретном случае эту конструкцию можно всегда изменить под себя. Класс «psevdo» будет использоваться для добавления псевдоэлементов в стилях CSS. И делается это через свойство css (content).

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

. psevdo:before { content: '§'; }
. psevdo:after { content: '§'; }

А для придания псевдоэлементам необходимого вида, можно добавить дополнительные стили. Всё будет зависеть от конкретного примера.

И получится так:

§Здесь может быть любой текст.§

Это был простой пример. Теперь давайте рассмотрим пример с добавлением псевдоэлементов с фоновым изображением.

Псевдоэлементы :Before и :After с фоновым изображением

Принцип добавления псевдоэлементов с фоновым изображение похож на предыдущий пример, но только в качестве контента будет использоваться изображение. Можно использовать как отдельные изображения (иконки), так и спрайты.

В качестве примера я приготовил небольшой спрайт.

Пример css спрайтаПример css спрайта

Пример css спрайта

А теперь давайте разберём, как добавить псевдоэлементы с изображением.

Код html будет тот же.

<span class=”psevdo”>Здесь может быть любой текст.</span>

А вот css стили будут отличаться. Отличие в том, что свойство content будет пустым. Значение будет подставляться из свойства background.

.psevdo:before{
content: ""; /*поле контент оставляем пустым*/
float: left; /*обтекание по левому краю*/
position: relative; /*позиционирование*/
top: 4px; /*отступ сверху*/
left: 4px; /*отступ слева*/
background: url(glyphicons.png) -3px -3px no-repeat; /*фоновое изображение, позиция, не размножать*/
display: block; /*блочный элемент*/
height: 25px; /*высота*/
width: 25px; /*ширина*/
}
.psevdo:after{
content: "";
position: absolute;
top: 8px;
left: 188px;
background: url(glyphicons.png) -25px 10px no-repeat;
display: block;
height: 25px;
width: 25px;
}

В результате применения этих стилей – я получил вот такой эффект.

Готовый примерГотовый пример

Готовый пример

Естественно, в каждом конкретном примере свойства css будут отличаться.

А теперь рассмотрим вариант, когда в качестве контента будут иконки специальных шрифтов. Этот вариант мне нравится больше всего.

Псевдоэлементы :Before и :After со шрифтами иконками

Реализация этого метода ещё проще, чем предыдущие два. Да и к тому же при использовании этого метода в вашем арсенале будет более 500 иконок. Которые вы сможете масштабировать, изменять цвет и так далее, как этого будет требовать ваш проект.

Я пересмотрел несколько шрифтов-конок и остановился на Awesome. На мой взгляд, здесь собраны более красивые иконки и их большой выбор.

Со всеми иконками вы можете ознакомиться на официальном сайте Awesome. Там же вы найдёте и множество примеров по применению псевдоэлементов.

Итак, для того чтобы использовать псевдоэлементы :Before и :After с контентом в виде шрифтов-иконок. Необходимо организовать подключение к базе этих самых иконок.

Шаг 1.

Подключаем базу шрифтов. Для этого в заголовок сайта (файл header.php) необходимо вставить вот такой код:

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">

Для этого открываем административную панель WP – «Внешний вид»«Редактор»«Заголовок/header.php»

Подключаем шриф
Подключаем шриф

Подключаем шриф

Шаг 2.

Теперь на сайте Awesome выбираете подходящие иконки и копируете код в исходный код вашего шаблона.

Вставляем иконкиВставляем иконки

Вставляем иконки

Я в качестве примера добавил псевдоэлементы :Before рядом с уже реализованными спрайтами на моём блоге.

Пример с иконкамиПример с иконками

Пример с иконками

Шаг 3.

А для того чтобы пример был более наглядный я добавил пару свойств css в файл style.css:

font-size: 15px;
color: crimson;

И добавляя нужные свойства в таблицу стилей, вы сделаете свой сайт более привлекательным.

Друзья, теперь вы понимаете, как можно использовать псевдоэлементы :Before и :After и где их применить. А самое главное эти элементы загружаются намного быстрей, чем множество маленьких изображений.

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

С уважением, Максим Зайцев.

Псевдоэлемент ::after | htmlbook.ru

Internet Explorer Chrome Opera Safari Firefox Android iOS
9.0+ 1.0+ 7.0+ 1.0+ 1.5+ 1.0+ 1.0+

Краткая информация

Версии CSS

CSS 1 CSS 2 CSS 2.1 CSS 3

Описание

Псевдоэлемент, который используется для вывода желаемого текста после содержимого элемента, к которому он добавляется. Псевдоэлемент ::after работает совместно со свойством content.

Для ::after характерны следующие особенности.

  1. При добавлении ::after к блочному элементу, значение свойства display может быть только: block, inline, none, marker. Все остальные значения будут трактоваться как block.
  2. При добавлении ::after к встроенному элементу, display ограничен значениями inline и none. Все остальные будут восприниматься как inline.

Синтаксис

элемент::after { content: "текст" }

Значения

Нет.

Пример

HTML5CSS2.1CSS3IECrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>after</title>
  <style>
    p.new::after {
      content: "Новьё!"; /* Добавляемый текст */ 
      color: #333; /* Цвет текста */ 
      background-color: #fc0; /* Цвет фона */ 
      font-size: 90%; /* Размер шрифта */ 
      padding: 2px; /* Поля вокруг текста */ 
    }
  </style>
 </head>
 <body>
  <h3>Истории</h3>
  <p>История о том, как необходимо было сделать могилу, 
     ее начали копать, а потом закапывать, и что из этого получилось.</p>
  <p>История о том, как возле столовой появились загадочные розовые
     следы с шестью пальцами, и почему это случилось.</p>
 </body>
</html>

В данном примере в конце текстового абзаца, помеченного классом new, выводится определенный текст для привлечения внимания. Результат примера показан на рис. 1.

Рис. 1. Результат использования псевдоэлемента ::after

Браузеры

Браузер Internet Explorer до версии 10.0 работает только с нотацией :after, описанной в спецификации CSS 2.1.

Псевдоэлементы | Учебные курсы | WebReference

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

p::first-letter { color: red }

Далее перечислим наиболее распространённые псевдоэлементы.

::first-letter

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

::first-letter будет работать только для блочных текстовых элементов вроде <div> и <p>.

Рассмотрим пример создания выступающего инициала. Для этого требуется добавить к селектору p псевдоэлемент ::first-letter и установить желаемый стиль буквы. В частности, увеличить размер текста и поменять его цвет (пример 1).

Пример 1. Использование ::first-letter

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Псевдоэлементы</title>
  <style>
   p {
    font-family: Arial, Helvetica, sans-serif; /* Гарнитура шрифта основного текста */
   }
   p::first-letter {
    font-family: 'Times New Roman', Times, serif; /* Гарнитура шрифта первой буквы */
    font-size: 2em; /* Размер первой буквы */
    color: red; /* Красный цвет текста */
   }
  </style>
 </head>
 <body>
  <p>Луч фонарика высветил старые скрипучие ступени, по которым не далее 
   как пять минут назад в дом поднялся Паша. Оля осторожно приоткрыла дверь 
   и посветила внутрь дома. Луч света, словно нехотя, пробивался сквозь тугую 
   завесу из мрака и пыли.</p>
  <p>Взгляд Оли опустился на пол, и она вскрикнула. В пустом помещении никого 
   не было, и лишь на полу валялась порванная туфля Паши.</p>
 </body>
</html>

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

Создание выступающего инициала

Рис. 1. Создание выступающего инициала

::first-line

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

К псевдоэлементу ::first-line могут применяться не все стилевые свойства. Допустимо использовать свойства, относящиеся к шрифту, изменению цвет текста и фона.

В примере 2 показано использование псевдоэлемента ::first-line применительно к абзацу текста.

Пример 2. Выделение первой строки текста

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Псевдоэлементы</title>
  <style>
   p::first-line {
    font: bold 16px Arial, sans-serif;
    color: navy;
   }
  </style>
 </head>
 <body>
  <p>Луч фонарика высветил старые скрипучие ступени, по которым не далее 
   как пять минут назад в дом поднялся Паша. Оля осторожно приоткрыла дверь 
   и посветила внутрь дома. Луч света, словно нехотя, пробивался сквозь тугую 
   завесу из мрака и пыли.</p>
 </body>
</html>

Результат примера показан на рис. 2.

Результат применения псевдоэлемента ::first-line

Рис. 2. Результат применения псевдоэлемента ::first-line

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

::after

Применяется для добавления назначенного контента после содержимого элемента. Этот псевдоэлемент работает только совместно со стилевым свойством content, которое определяет содержимое для вставки.

В примере 3 показано использование псевдоэлемента ::after для добавления текста в конце абзаца.

Пример 3. Применение ::after

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Псевдоэлементы</title>
  <style>
   .new::after {
    content: " - Новьё!"; /* Добавляем после текста абзаца */
    color: red; /* Красный цвет текста */
    font-style: italic; /* Курсивное начертание */
   }
  </style>
 </head>
 <body>
  <p>Ловля льва в пустыне с помощью метода золотого сечения.</p>
  <p>Метод ловли льва простым перебором.</p>
 </body>
</html>

Результат примера показан на рис. 3.

Добавление текста к абзацу с помощью ::after

Рис. 3. Добавление текста к абзацу с помощью ::after

В данном примере к содержимому абзаца с классом new добавляется дополнительное слово, которое выступает значением свойства content.

::before

По своему действию ::before аналогичен псевдоэлементу ::after, но вставляет контент до содержимого элемента. В примере 4 показано добавление маркеров своего типа к пунктам списка посредством сокрытия стандартных маркеров и применения псевдоэлемента ::before.

Не у всех элементов есть собственное содержимое, поэтому ::after и ::before не дают результата для <img>, <input> и ряда других элементов.

Пример 4. Использование ::before

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Псевдоэлементы</title>
  <style>
   ul {
    list-style: none; /* Прячем маркеры списка */
   }
   li::before {
    content: "✿"; /* Добавляем символ */
    padding-right: 7px; /* Расстояние от текста до маркеров */
    color: red; /* Красный цвет маркеров */
   }
  </style>
 </head>
 <body>
  <ul>
   <li>Чебурашка</li>
   <li>Крокодил Гена</li>
   <li>Шапокляк</li>
   <li>Крыса Лариса</li>
  </ul>
 </body>
</html>

Результат данного примера показан на рис. 4.

Изменение вида маркеров с помощью ::before

Рис. 4. Изменение вида маркеров с помощью ::before

В данном примере псевдоэлемент ::before устанавливается для селектора li и определяет маркеры списка. Добавление желаемых символов происходит путём задания значения свойства content.

Перейти к заданиям

Таинственные псевдоэлементы в css before и after

псевдоэлементы css before after

Привет, друзья. Очень часто при разборе очередного кода мы можем встретить так называемые псевдоэлементы css :before и :after. Причем при использовании этих псевдоэлементов у скульптора сайтов всегда получаются отличные эффекты на css.

Итак, самое главное, что нужно отметить в этой статье это то, что всё-же :before и :after не являются всевдоклассами, они являются псевдоэлементами. В общем обычный элемент, только с приставкой «псевдо», значение которой, я думаю, вы понимаете.

Отличие псевдоэлементов от псевдоклассов.

отличие псевдоэлементов от псевдоклассов

Я думаю мы не будем сейчас вдаваться в подробности различий между двумя этими понятиями, так как на это может уйти много времени, поэтому будут краток. Псевдокласс, название говорит само за себя, позволяет нам воздействовать на элемент. Это тоже самое, когда мы добавляем или, как говорят, определяем класс для какого-либо элемента сайта или html-тега. Например:

<p>Привет, это WAVIFUN</p> /* <p> - это html-тег, обозначающий параграф */ <p>Привет, это WAVIFUN</p> /* тот же самый html-тег, но с классом "text" */

<p>Привет, это WAVIFUN</p> /* <p> - это html-тег, обозначающий параграф */

<p>Привет, это WAVIFUN</p> /* тот же самый html-тег, но с классом "text" */

Добавление класса к элементу позволит нам воздействовать на него иначе, чем на <p></p> без класса, например:

Теперь добавим к классу «text» псевдокласс :hover, который позволяет нам также воздействовать на элемент, но только при наведении.

Теперь рассмотрим псевдоэлементы :after и :before. Также как и с псевдоклассом, псевдоэлемент, название говорит само за себя, позволяет нам добавить элемент к существующему элементу. Например, выведим подсказку для html-элемента <p></p> с классом «text»:

.text:before { content: "Наведи курсор"; }

.text:before {

  content: "Наведи курсор";

}

Отличия между :after и :before заключается только в том, что псевдоэлемент :after позволяет вывести псевдоэлемент после html-тегом, а :before — перед html-тегом. Это легко запомнить, потому что «before» с английского переводится «перед», а «after» — переводится «после». Псевдоэлементам, также как и обычным элементам можно добавлять css правила. И еще одна, не мало важная вещь, чтобы не путать псевдоэлемент с псевдоклассом разработчики решили, что псевдоэлементы будут прописываться с двумя двоеточиями ::before, ::after — это, кстати, не принципиально, можно и с одним двоеточием.

И еще несколько примеров применения псевдоклассов

Псевдоэлемент ::before | htmlbook.ru

Internet Explorer Chrome Opera Safari Firefox Android iOS
9.0+ 1.0+ 7.0+ 1.0+ 1.5+ 1.0+ 1.0+

Краткая информация

Версии CSS

CSS 1 CSS 2 CSS 2.1 CSS 3

Описание

Псевдоэлемент ::before применяется для отображения желаемого контента до содержимого элемента, к которому он добавляется. Работает совместно со свойством content.

Для ::before характерны следующие особенности.

  1. При добавлении ::before к блочному элементу, значение свойства display может быть только: block, inline, none, marker. Все остальные значения будут трактоваться как block.
  2. При добавлении ::before к встроенному элементу, display ограничен значениями inline и none. Все остальные будут восприниматься как inline.
  3. ::before наследует стиль от элемента, к которому он добавляется.

Синтаксис

элемент::before { content: "текст" }

Значения

Нет.

Пример

HTML5CSS2.1CSS3IECrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>before</title>
  <style>
   li::before {
     content: "¶ "; /* Добавляем желаемый символ перед элементом списка */ 
   }
   li {
     list-style: none; /* Убираем исходные маркеры */ 
   }
  </style>
 </head>
 <body>
   <ul>
     <li>Альфа</li>
     <li>Бета</li>
     <li>Гамма</li>
   </ul>
 </body>
</html>

В данном примере вместо стандартных маркеров списка с помощью псевдоэлемента ::before выводится символ ¶. Результат примера продемонстрирован на рис. 1.

Рис. 1. Использование псевдоэлемента ::before в списках

Браузеры

Браузер Internet Explorer до версии 9.0 работает только с нотацией :before, описанной в спецификации CSS 2.1.

Псевдоэлементы | htmlbook.ru

Псевдоэлементы позволяют задать стиль элементов не определённых в дереве элементов документа, а также генерировать содержимое, которого нет в исходном коде текста.

Синтаксис использования псевдоэлементов следующий.

Селектор:Псевдоэлемент { Описание правил стиля }

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

.foo:first-letter { color: red }
.foo:first-line {font-style: italic}

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

Далее перечислены все псевдоэлементы, их описание и свойства.

:after

Применяется для вставки назначенного контента после содержимого элемента. Этот псевдоэлемент работает совместно со стилевым свойством content, которое определяет содержимое для вставки. В примере 16.1 показано использование псевдоэлемента :after для добавления текста в конец абзаца.

Пример 16.1. Применение :after

HTML5CSS 2.1IE 7IE 8+CrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Псевдоэлементы</title>
  <style>
   P.new:after {
    content: " - Новьё!"; /* Добавляем после текста абзаца */
   }
  </style>
 </head>
 <body>
  <p>Ловля льва в пустыне с помощью метода золотого сечения.</p>
  <p>Метод ловли льва простым перебором.</p>
 </body>
</html>

Результат примера показан на рис. 16.1.

Рис. 16.1. Добавление текста к абзацу с помощью :after

В данном примере к содержимому абзаца с классом new добавляется дополнительное слово, которое выступает значением свойства content.

Псевдоэлементы :after и :before, а также стилевое свойство content не поддерживаются браузером Internet Explorer до седьмой версии включительно.

:before

По своему действию :before аналогичен псевдоэлементу :after, но вставляет контент до содержимого элемента. В примере 16.2 показано добавление маркеров своего типа к элементам списка посредством скрытия стандартных маркеров и применения псевдоэлемента :before.

Пример 16.2. Использование :before

HTML5CSS 2.1IE 7IE 8+CrOpSaFx 4

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Псевдоэлементы</title>
  <style>
   UL {
    padding-left: 0; /* Убираем отступ слева */
    list-style-type: none; /* Прячем маркеры списка */
   }
   LI:before {
    content: "\20aa "; /* Добавляем перед элементом списка символ в юникоде */
   }
  </style>
 </head>
 <body>
  <ul>
   <li>Чебурашка</li>
   <li>Крокодил Гена</li>
   <li>Шапокляк</li>
   <li>Крыса Лариса</li>
  </ul>
 </body>
</html>

Результат примера показан ниже (рис. 16.2).

Рис. 16.2. Изменение вида маркеров с помощью :before

В данном примере псевдоэлемент :before устанавливается для селектора LI, определяющего элементы списка. Добавление желаемых символов происходит путём задания значения свойства content. Обратите внимание, что в качестве аргумента не обязательно выступает текст, могут применяться также символы юникода.

И :after и :before дают результат только для тех элементов, у которых имеется содержимое, поэтому добавление к селектору img или input ничего не выведет.

:first-letter

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

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

Рассмотрим пример создания выступающего инициала. Для этого требуется добавить к селектору P псевдоэлемент :first-letter и установить желаемый стиль инициала. В частности, увеличить размер текста и поменять цвет текста (пример 16.3).

Пример 16.3. Использование :first-letter

HTML5CSS 2.1IECrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Псевдоэлементы</title>
  <style>
   P {
    font-family: Arial, Helvetica, sans-serif; /* Гарнитура шрифта основного текста */
    font-size: 90%; /* Размер шрифта */
    color: black; /* Черный цвет текста */
   }
   P:first-letter {
    font-family: 'Times New Roman', Times, serif; /* Гарнитура шрифта первой буквы */
    font-size: 200%; /* Размер шрифта первого символа */
    color: red; /* Красный цвет текста */
   }
  </style>
 </head>
 <body>
    <p>Луч фонарика высветил старые скрипучие ступени, по которым не далее 
    как пять минут назад в дом поднялся Паша. Оля осторожно приоткрыла дверь 
    и посветила внутрь дома. Луч света, словно нехотя, пробивался сквозь тугую 
    завесу из мрака и пыли. </p>
    <p>Взгляд Оли опустился на пол, и она вскрикнула. В пустом помещении никого 
    не было, и лишь на полу валялась порванная туфля Паши.</p>
 </body>
</html>

Результат примера показан ниже (рис. 16.3).

Рис. 16.3. Создание выступающего инициала

В данном примере изменяется шрифт, размер и цвет первой буквы каждого абзаца текста.

:first-line

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

К псевдоэлементу :first-line могут применяться не все стилевые свойства. Допустимо использовать свойства, относящиеся к шрифту, изменению цвет текста и фона, а также: clear, line-height, letter-spacing, text-decoration, text-transform, vertical-align и word-spacing.

В примере 16.4 показано использование псевдоэлемента :first-line применительно к абзацу текста.

Пример 16.4. Выделение первой строки текста

HTML5CSS 2.1IECrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Псевдоэлементы</title>
  <style>
   P:first-line {
    color: red; /* Красный цвет текста */
    font-style: italic; /* Курсивное начертание */
   }
  </style>
 </head>
 <body>
  <p>Интересно, а существует ли способ действительно практичного применения 
  свойства first-line? Нет, не такого, чтобы можно было бы показать, что это 
  возможно, а чтобы воистину захватило дух от красоты решения, загорелись глаза от
  скрытых перспектив, после чего остается только сказать себе, что вот это вот, это 
  самое сделать по-другому, также изящно и эффектно просто невозможно.</p>
 </body>
</html>

Результат примера показан на рис. 16.4.

Рис. 16.4. Результат применения псевдоэлемента :first-line

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

Вопросы для проверки

1. Какой псевдоэлемент позволяет добавить текст в начало предложения?

  1. :after
  2. :before
  3. :first-line
  4. :first-text
  5. :first-letter

2. Что делает следующий стиль?

OL LI:first-letter {
color: red;
}

  1. Изменяет цвет первой буквы элемента маркированного списка.
  2. Изменяет цвет первой буквы элемента нумерованного списка.
  3. Изменяет цвет первой строки в маркированном списке.
  4. Изменяет цвет первой строки в нумерованном списке.
  5. Изменяет цвет текста всего списка.

3. Какой селектор написан с ошибкой?

  1. p.new:before
  2. abbr:first-line
  3. p.new.back:after
  4. div:before:first-letter
  5. a:hover:before

Ответы

1. :before

2. Изменяет цвет первой буквы элемента нумерованного списка.

3. div:before:first-letter

Применение псевдоклассов :before и :after в CSS

Использование псевдоэлементов в CSS значительно расширяет возможности для интеллектуального выбора конкретных элементов на веб-странице и для внесения таких видов изменений, которые в противном случае были бы невозможны. Применение их сочетаний позволяет внести довольно сложные изменения в код страницы. С их помощью можно решать множество проблем, для которых обычно нужны либо JavaScript, либо доступ к PHP-коду сайта.

Псевдоэлементы для стилизации в CSS

Элементы :before и :after в CSS относятся к так называемым псевдоэлементам и используются для стилизации указанных частей контейнера. Например, его можно использовать для задания стиля первой букве в строке или вставки контента до или после содержимого какого-то определенного контейнера. Они используются для добавления чего-либо до или после содержимого элемента. Псевдоэлементы :before и :after имеют множество применений, но они служат единой цели.

before after css

Их используют для оформления существующих HTML-элементов с дополнительным текстом или изображением содержимого. Псевдоэлементы :after и “content” в CSS, который является его свойством, неразрывно связаны, и первый не работает отдельно от второго. Содержание этого свойства можно оставить пустым, если добавить к нему пустые кавычки: content: “”. Таким образом, еще один вариант использования этого псевдоэлемента — сделать его контейнером для какого-то содержимого. Если содержимое и свойство удаляется полностью, :after не будет работать.

Практическое применение :before и :after в CSS

Наверное, самое популярное использование данных псевдоэлементов — добавление иконок. В этом случае они будут располагаться до или после какого-то текста, например, названия компании. Еще один вариант применения — стилизация заголовков. Но псевдоэлементы можно использовать не только для создания разнообразных украшений на странице. Рассмотрим очень распространенный пример: красную звездочку, которая находится в поле формы, обязательном для заполнения. Один из простых способов это сделать — размещать ее каждый раз непосредственно в HTML-разметке. Но ради этого придется писать очень много разметки для одной красной звездочки. Кроме того, что если мы хотим изменить все эти звездочки в точки или в слова или перекрасить их в другой цвет? В этом случае придется сделать одно и то же изменение в каждом из дубликатов.

css after content

Пример работы с формой

Несколько более элегантный способ, чтобы получить тот же результат — использовать псевдоэлемент :after в CSS и объединить его с разметкой HTML. Для этого нужно задать в коде элементу поля какой-то класс, а затем добавить к нему псевдоэлемент и нужное свойство:

.some-field:after {content: " *";color: red;}

Теперь в нужных местах будет стоять красная звездочка. Кроме того, правила для элементов с классом .some-field и псевдоэлементом :after в CSS будут централизованы в одном месте, так что можно будет легко изменить внешний вид страницы, в том числе цвет, размер, содержимое на всем сайте сразу. Из этого примера становится понятно, что подобная логика применяется к другим повторяющимся текстовым украшениям. Например, используя псевдоэлемент :before вместе с некоторыми шрифтами, можно изменять значок неупорядоченного списка на другой.

connection failed after 4 retries css

Вставка содержимого без изменения файлов шаблонов для сайта WordPress

Для сайтов WordPress также можно использовать псевдоэлементы. Например, если нужно добавить уведомление о доставке в заголовке на каждой странице, но установленная тема не позволяет что-то добавить, кроме строки поиска и корзины. Это гораздо проще, чем переделывать шаблон. Добавив псевдоэлемент :after и нужную надпись в свойство “content”, можно расположить ее на удобном месте, где она будет смотреться логично. Главным выводом из этого является то, что использование :before и :after настолько широко, что позволяет по-разному позиционировать элементы, заставляя их находиться справа или слева от контейнера, использовать поля и отступы.

connection failed

Непрозрачный текст на полупрозрачном фоне

В CSS удивительно сложно сделать элемент с полностью непрозрачным текстом над полупрозрачным изображением. Можно пробовать выставлять непрозрачность, но при этом и сам текст размывается. Самый простой вариант сделать это — правильно использовать псевдоэлемент :before. С его помощью основной слой становится полноразмерным, абсолютно спозиционированный и с полупрозрачным изображением под главным элементом, в котором содержится текст. Этот слой изображения может иметь любую непрозрачность, которая необходима, но при этом не будет влиять на основной слой.

Недостатки использования псевдоклассов

Использование сочетаний нескольких таких элементов является мощным инструментом в руках разработчика, но считается, что его лучше всего применять в качестве последнего средства, когда PHP-код сайта по каким-то причинам не доступен, или его невозможно исправить. Происходит так потому, что с помощью других средств все может быть сделано гораздо проще. Например, можно просто добавить простые классы CSS, где это необходимо. Стоит отметить, что ошибка “connection failed after 4 retries CSS” не относится к каскадной таблице стилей. Она встречается при проблеме с сервером в игре Counter-Strike: Source. То же самое относится к “CSS v34 connection failed after 4 retries”. Здесь под “CSS” имеется в виду название игры.

css v34 connection failed after 4 retries

Конкретные недостатки таких псевдоэлементов как :after в CSS включают:

  1. Хрупкость стилевого оформления. Возможность быстро испортить код при неверном использовании.
  2. Непрозрачность. Большое количество кода с использованием псевдоэлементов может быть непонятным другому верстальщику, который начнет работать с сайтом.
  3. Псевдоэлементы поддерживаются не полностью. Браузеры становятся все лучше и совершеннее, но все же намного безопаснее пользоваться простыми классами HTML.

В основном это касается проектов, где PHP-код находится вне досягаемости, и где что-то должно быстро работать.

Отправить ответ

avatar
  Подписаться  
Уведомление о