До и после. Селекторы :before :after
Псевдо-атрибут ::before с помощью свойства content позволяет делать вставки перед контентом внутри блока.
Хак1: свойство content обязательно должно быть указано, пусть даже ввиде пустой строки. Хак2: before и after являются inline-новыми пока мы это не поменяем.
Чтобы стало понятнее рассмотрим пример:
p.box {
width: 300px;
border: solid 1px black;
height:80px;
line-height:80px;
}
p.box:before {
content: "#";
border: solid 1px black;
padding: 10px;
margin: 0 10px 0 0;
}
Результат можно посмотреть по ссылке http://codepen.io/anon/pen/LNpZgB
Полезное чтиво:
Популярно о псевдоэлементах :Before и :After http://habrahabr.ru/post/154319/
Интересные кнопки с помощью :before :after http://tympanus.net/codrops/2012/01/11/css-buttons-with-pseudo-elements/
Всплывающие подсказки на чистом CSS https://medium.freecodecamp.org/a-step-by-step-guide-to-making-pure-css-tooltips-3d5a3e237346
Построение "перекошенной" верстки https://kilianvalkhof.com/2017/design/sloped-edges-with-consistent-angle-in-css/
Различные варианты перекошенной верстки https://tympanus.net/codrops/2011/12/21/slopy-elements-with-css3/
Пример сайта со "скошенной" версткой с помощью before и after https://www.securitywithoutborders.org/
Пример сайта с "клином" https://codepen.io/kkhenriquez/pen/BpyMJL
Много примеров со скошенными краями https://hackernoon.com/how-to-code-sloped-section-edges-719886601ffd
Еще про скошенные края. Вариант через clip-path https://medium.com/@colinlord/creating-angles-with-clip-path-and-transforms-865c516dd2ef
Много вариантов от CSS-tricks https://css-tricks.com/creating-non-rectangular-headers/
Значение url()
В качестве контента мы можем вставить картинку, но серьезный минус, что мы не можем настраивать её размер.
.box:before {
content:url('image.jpg');
}
Альтернативой этому является задание блоку before свойства display:inline-block, задание размеров и фоновой картинки.
.box:before {
content:"";
display:inline-block;
width:100px;
height:100px;
background-image:url('image.jpg');
}
Значение attr()
С помощью, этого значения можно добавлять данные в верстку через аттрибуты с префиксом data, а CSS автоматом их будет отображать.
<div data-name="Vasya"></div>
<div data-name="Vova"></div>
<div data-name="Petya"></div>
Теперь добавим css, чтобы именна из атрибута отображались внутри блока.
div[data-name]:before {
content: " " attr(data-name) "]";
}
- Подробнее об использовании attr в content'e
https://developer.mozilla.org/ru/docs/Web/CSS/attr - Примеры использования attr
https://davidwalsh.name/css-content-attr
div[data-line]:after {
content: "[line " attr(data-line) "]";
}
Счетчики counter()
Иногда нам нужно добиться автоматической нумерации элементов. Особенно, когда элементы динамически добавляются. Конечно можно решить эту задачу через JavaScript, но есть реализация через чистый css. Нам понадобится значение для контента counter
Свойство counter-reset инициализирует счетчик. Это свойство как правило ставится в блок, который встречается один раз, например в body.
counter-increment свойство, которое занимается увеличением счетчика
content:counter() - позволяет нам вывести значения счетчика
body {
counter-reset: my-awesome-counter;
}
div {
counter-increment: my-awesome-counter;
}
div:before {
content: counter(my-awesome-counter);
}
Мы можем увеличивать счетчик более, чем на единицу
li
{
list-style-type: none;
}
ol
{
counter-reset: mysupercounter;
}
li:before {
counter-increment: mysupercounter 2;
content: counter(mysupercounter) ". ";
}
Задаем стилистику для счетчика
div:before {
content: counter(my-awesome-counter, upper-roman);
}
Полезное чтиво:
Примеры с счетчиками https://css-tricks.com/numbering-in-style/
Счетчики блоков на чистом css https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Counters
Подробно о различных вариантах counter-increment https://developer.mozilla.org/en/docs/Web/CSS/counter-increment
CSS-Shapes
Различные варианты фигур с помощью CSS https://css-tricks.com/the-shapes-of-css/
Практика:
- Создание кавычек вокруг блоков текста
- Сделать класс для блока с номером телефона, чтобы слева от номера телефона автоматически появлялась иконка.
- Сделать, чтобы при добавлении класса к блоку он превращался вот в такой элемент.
- Сделать, так чтобы при добавлении класса к div, он превращался в кнопку следующего вида
- Эффект стопки картинок
- Сделать "блок-клин" (см. картинку ниже)
- Эффект с тенями от "загнутых" углов
- Сделать, чтобы при наведении на картинку весь остальной сайт затемнялся
- Есть блоки с атрибутом data-type у блоков с картинками. Вывести блоки с подписями из data-type в левом верхнем углу блоков.
- Создаем кнопки с автоматической нумерацией (состоящие из двух частей)
- Создаем блоки с автоматической нумерацией (римская нумерация)
- Поставить разные счетчики для блоков разных цветов