html
и css
рядом с примерами кода, чтобы не запутаться в языках.<p>Текст.</p>
<p>
— открывающий тег. p
— один из возможных типов HTML-элементов, обозначающий параграф. Подробнее о типах можно узнать на сайтах-справочниках (читать не нужно).Текст.
— содержимое элемента.</p>
— закрывающий тег. Должен содержать слеш перед типом элемента.селектор {
свойство: значение;
свойство: значение;
}
<p>Текст.</p>
, в CSS мы бы указали в селекторе его тип. Такой селектор называется селектором типа:p {
color: red;
}
Данное правило будет применяться ко всем элементам <p>
на странице. Оно изменит цвет текста (color
) в них на красный.class
:<p class="b-anime_description">Текст.</p>
class
— это название атрибута. Оно должно быть отделено пробелом от типа элемента или других атрибутов. Названия атрибутов и их назначение могут быть найдены в справочнике атрибутов (читать не нужно).b-anime_description
— это значение атрибута. Оно должно быть записано через знак равно от названия атрибута в кавычках. Значений у атрибута class
может быть несколько, все они должны разделены пробелами..b-anime_description {
color: red;
}
Селекторы типа и селекторы класса подсвечиваются по-разному для наглядности. class
будет соответствовать b-anime_description
. Пример:<p class="b-anime_description">Красный текст</p>
<div class="b-anime_description m-0">Красный текст</div>
<p class="m-0">Черный текст по умолчанию</p>
b-anime_description
и определённого типа, необходимо указать селектор типа, а затем дополнить его селектором класса:div.b-anime_description {
color: red;
}
Селектор типа всегда пишется в начале составного селектора, а селектор класса и другие селекторы всегда пишутся после. Обратите внимание, что никаких пробелов между селекторами нет. Если такое правило применить к html-примеру выше, то красным цветом будет обладать только второй элемент <div class="b-anime_description m-0"></div>
.[class="b-anime_description"] {
color: red;
}
Селекторы атрибута записываются в квадратных скобках. В начале указывается название атрибута (к примеру, class
), затем, как в этом примере, может использоваться значение атрибута, записанное в кавычках через знак равно. [class]
будет работать для всех элементов, у которых есть атрибут class
.[class~="b-anime_description"]
со знаком тильды перед знаком равно будет искать в наборе значений атрибута class
точное соответствие одного из значений, т.е. будет полностью соответствовать обычной записи селектора класса — .b-anime_description
.<input>
с разными назначениями. К примеру:input[type="text"] {
/* Стили для текстового поля */
}
input[type="submit"] {
/* Стили для кнопок отправки форм */
}
В этих правилах используются селекторы типа и селекторы атрибута одновременно, чтобы точнее определить необходимые для стилизации элементы, т.к. подобные атрибуты могут быть и у других типов HTML-элементов (к примеру, у отдельного элемента кнопки <button>
).id
) и имеет сокращённую запись — значение атрибута id
записывается через знак решетки:#profiles_show {
color: red;
}
В отличие от атрибута class
, в этом атрибуте может быть только одно значение, а сам элемент с таким идентификатором должен быть только один в веб-документе.<div class="b-comment">
<span class="icon icon-flag"></span>
</div>
<div class="b-form">
<span class="icon icon-flag"></span>
</div>
Два элемента одинакового типа с разными значениями атрибута class
содержат по одному идентичному элементу. .b-comment .icon-flag {
color: red;
}
Когда селекторы комбинируются, они должны читаться справа налево: самый крайний селектор справа, непосредственно перед открытой скобкой, известен как ключевой селектор. Он определяет, к каким именно элементам будут применяться стили. Селекторы слева — уточняющие — определяют искомое положение элементов в структуре страницы..b-comment .icon-flag
) будет работать для всех элементов, у которых атрибут class
содержит icon-flag
, а сами они вложены в элемент с атрибутом class
, содержащим b-comment
, причём находится эти элементы-потомки могут на любом уровне вложенности..b-comment>.icon-flag {
color: red;
}
id
), которыми обладают почти все страницы сайта. Используя знания о селекторах идентификаторов и комбинаторах потомков, вы можете написать правила для отдельных страниц Шикимори, имеющих такие идентификаторы. Сам идентификатор можно найти у элемента <body>
, который представляет собой контейнер для содержимого HTML-документа — этот элемент является родительским для большинства элементов сайта. Пример главной страницы профиля:<html>
<head>…</head>
<body id="profiles_show" class="p-profiles p-profiles-show">
<header class="l-top_menu-v2">…</header>
<section class="l-page">…</section>
<div class="b-to-top">…</div>
</body>
</head>
id
необходимой страницы, вы сужаете действие соответствующих правил до одной единственной страницы. Например, чтобы изменить цвет подзаголовков блоков вы можете использовать общий код для всего сайта:.subheadline {
color: red;
}
А можете использовать уточняющий селектор идентификатора #profiles_show
и комбинатор потомков, определив таким образом правила только для тех подзаголовков, которые находятся на главной странице профиля:#profiles_show .subheadline {
color: red;
}
Такое правило будет работать только для элементов, у которых значение атрибута class
содержит subheadline
, а сами они являются потомками элемента с атрибутом id
равным profiles_show
.color: red;
. В этой части рассмотрим важные особенности CSS — каскад, специфичность и наследование, а также соответствующие особенности пользовательских стилей на Шикимори.p {
color: red;
font-size: 16px;
}
p {
color: green;
}
К элементам p
на странице будет применяться значение color
из последнего правила, а значение font-size
— из первого.style
. Пример:<p class="text" style="color: green;">Текст.</p>
Такие стили не получится изменить с помощью механизмов каскада.*
, различные комбинаторы, а также отрицающий псевдокласс :not()
не влияют на специфичность. Если специфичность одинакова, то используются значения свойств и последнего правила в каскаде.#club_pages_show a {
color: green;
}
.p-club_pages .l-content .subheadline>a {
color: red;
font-size: 12px;
}
.l-content[class] .subheadline>a {
color: blue;
font-size: 16px;
}
В правилах указаны одинаковые свойства, но с разными значениями. Чтобы понять какие свойства и с какими значениями будут применены к элементу a
, посчитаем специфичность, указывая категории баллов в скобках:1, 0, 1
0, 3, 1
0, 3, 1
color
из первого правила, так как первая категория — самая важная и её баллы «перевешивают» баллы из других категорий. У второго и третьего правила одинаковая специфичность, поэтому по правилу каскада значение свойства font-size
будет взято из последнего правила. В итоге ссылка будет иметь зеленый цвет и крупный шрифт.!important
. Он указывается после значения свойства, чтобы это значение получило наивысший приоритет при вычислении положения в каскаде и специфичности. Если к элементу применимы два взаимоисключающих стиля с модификатором !important, то применён будет стиль с большей специфичностью.style
.<p class="text" style="color: green;">Текст.</p>
.text {
color: red !important;
}
.p-profiles .profile-head .c-history .entry .misc {
color: #7b8084 !important;
}
.p-profiles .profile-head .c-history .entry .misc.date {
color: #9da2a8 !important;
}
color
и font
. Обычно они указываются в стилях один раз для корневого элемента html
или контейнера видимых элементов body
. Если у вложенных элементов не будет отдельных свойств, определяющих цвет и шрифт, то они будут наследовать эти свойства. Эта особенность позволяет разработчикам писать меньше CSS-правил.position
значением по умолчанию является значение static
. Если у родительского элемента указано значение relative
, у элементов-потомков значение не будет унаследовано и останется равным static
.inherit
, используемое как значение свойства, позволяет явно задать наследование. Это работает и на наследуемых, и на ненаследуемых свойствах.initial
, позволяет указывать для элемента его первоначальное значение. Хороший пример использования можно увидеть на сайте MDN: developer.mozilla.org@media
и вёрстке, вы сможете лучше понимать адаптацию под мобильные устройства, а также смело отключить ещё одну важную особенность пользовательских стилей на Шикимори — использование медиа-запроса, в который оборачивается ваш стиль по умолчанию — не боясь сломать макет страницы. Отменяется это поведение добавлением любого медиа-запроса (даже пустого):@media all { /* Пустой медиа-запрос */ }