Содержание

Селекторы типа, класса и ID — Изучение веб-разработки

  • Назад
  • Обзор: Building blocks
  • Далее

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

Необходимые условия:Базовая компьютерная грамотность, установка базового ПО, базовые знания о работе с файлами, основы HTML (изучите Введение в HTML) и понимание работы CSS (изучите Введение в CSS.)
Задача:Изучить различные селекторы CSS, которые мы можем использовать, чтобы применить CSS к документу.

Селектор типа иногда называется селектором имени тега или селектором элемента, поскольку он выбирает тег/элемент HTML в вашем документе. В примере ниже мы использовали селекторы span, em и strong.

Попробуйте добавить CSS-правило, чтобы выбрать элемент <h2> и изменить его цвет на синий.

Универсальный селектор обозначается звёздочкой (*). Он выбирает всё в документе (или внутри родительского элемента, если он сцеплен с другим элементом и с комбинатором потомка). В следующем примере мы используем универсальный селектор, чтобы убрать внешние отступы у всех элементов. Несмотря на стилизацию по умолчанию, добавленную браузером, — она раздвигает заголовки и абзацы с помощью отступов, — всё плотно сжато.

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

Использование универсального селектора для облегчения чтения ваших селекторов

Одно из применений универсального селектора состоит в том, чтобы облегчить чтение селекторов и сделать их более удобопонятными с точки зрения того, что они делают. Например, если мы хотим выбрать элементы-потомки элемента <article>, которые являются первыми дочерними элементами своего родителя, включая дочерние элементы самого <article>, и сделать их шрифт жирным, мы могли бы использовать псевдокласс :first-child, который мы будем изучать в уроке о псевдоклассах и псевдо-элементах, как селектор-потомок вместе с селектором элемента <article>:

article :first-child {
  font-weight: bold;
}

Однако этот селектор можно спутать с

article:first-child, который выберет любой элемент <article>, являющийся первым дочерним элементом другого элемента .

Чтобы избежать этой путаницы, мы можем добавить универсальный селектор в псевдокласс :first-child , чтобы было очевидно, что делает селектор. Он выбирает любой элемент, который является первым дочерним элементом элемента <article> или первым дочерним элементом любого потомка элемента <article>:

article *:first-child {
  font-weight: bold;
}

Хотя оба делают одно и то же, удобочитаемость значительно улучшилась.

Селектор класса начинается с символа точки (.). Он выберет в документе всё, к чему применён этот класс. В живом примере ниже мы создали класс с именем .highlight, и применили его к нескольким местам в документе. Все элементы, к которым применён класс, подсвечиваются.

Нацеливание классов на отдельные элементы

Вы можете создать селектор, нацеленный на конкретные элементы, к которым применён класс. В следующем примере мы подсветим <span> с классом highlight иначе, чем заголовок <h2> с классом highlight. Мы сделаем это, используя селектор типа для элемента, на который нацелены, с классом, добавленным с помощью точки, без пробела между ними.

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

Нацеливание на элемент, к которому применено более одного класса

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

В примере ниже у нас есть

<div>, содержащий примечание. Серая граница применяется когда блок имеет класс notebox. Если у блока есть также класс warning или danger, мы меняем border-color (en-US).

Мы можем указать браузеру, что мы хотим подобрать только такой элемент, к которому применены два класса, сцепив их вместе без пробелов между ними. Вы увидите, что к последнему <div> не применён ни один стиль, так как он имеет только класс danger; ему нужен ещё и класс notebox, чтобы получить какую-нибудь стилизацию.

Селектор ID начинается с #, а не с точки, но используется так же, как и селектор класса. Однако ID может быть использован единожды на странице, и к элементу может быть применён только один id. Можно выбрать элемент, которому присвоен id, а также вы можете предварить ID селектором типа для нацеливания на элемент, имеющий соответствующее сочетание элемента и ID. Вы можете увидеть оба варианта использования в следующем примере:

**Предупреждение:**Может показаться, что неоднократное использование в документе одного и того же ID выполняет задачи стилизования, но не стоит этого делать. Результатом будет неверный код, который приведёт к многочисленным странностям в поведении.

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

Мы продолжим изучение селекторов и рассмотрим селекторы атрибута.

  • Назад
  • Обзор: Building blocks
  • Далее
  1. Каскад и наследование
  2. Селекторы CSS
    • Селекторы типа, класса и ID
    • Селекторы атрибута
    • Псевдоклассы и псевдоэлементы
    • Комбинаторы
  3. Модель коробки (The box model)
  4. Фон и границы
  5. Обработка разных направлений текста
  6. Переполнение содержимого
  7. Значения и единицы измерения
  8. Изменение размеров в CSS
  9. Элементы изображений, форм и медиа-элементы
  10. Стилизация таблиц
  11. Отладка CSS
  12. Организация вашей CSS

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

Want to get more involved?

Learn how to contribute.

This page was last modified on by MDN contributors.

Основы работы с селекторами CSS для новичков

В данном уроке мы с вами научимся более продвинутой работе с селекторами CSS.

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

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

Способы сделать это мы и будем изучать в данном уроке.

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

Блок . Тег div

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

Для примера покрасим содержимое тега div в красный цвет (используя атрибут style):

<div>
	<h3>
		Lorem ipsum dolor sit amet.
	</h3>
	<p>
		Lorem ipsum dolor sit amet.
	</p>
	<p>
		Lorem ipsum dolor sit amet.
	</p>
	<p>
		Lorem ipsum dolor sit amet.
	</p>
</div>

Так код будет выглядеть в браузере:

Lorem ipsum dolor sit amet.

Lorem ipsum dolor sit amet.

Lorem ipsum dolor sit amet.

Lorem ipsum dolor sit amet.

В настоящее время тег

div является одним из основных строительных элементов на сайте. Вы еще столкнетесь с ним в дальнейшем много раз.

Блок . Тег span

Тег span является контейнером для кусочка текста. Вы уже знаете, что для того, чтобы сделать, к примеру, жирный текст — следует использовать тег b. Однако, что делать, если я хочу покрасить кусочек текста в красный цвет? Для такого случая тега, подобного тегу b, не существует.

Для этого и предназначен тег span — сам по себе он абсолютно ничего не делает, но для него можно применить CSS стили, которые позволят нам добавить нужный эффект к кусочку текста.

Давайте покрасим некоторый текст в красный цвет:

<p>
	Lorem ipsum <span>dolor</span> sit amet.
</p>

Так код будет выглядеть в браузере:

Lorem ipsum dolor sit amet.

Мы с вами изучили два необходимых нам тега и теперь приступаем к изучению более сложной работы с селекторами.

Блок . Группировка селекторов

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

h3 {
	color: red;
}
h4 {
	color: red;
}
p {
	color: red;
}

Однако, существует способ сделать это немного короче: селекторы тегов можно объединять через

запятую и CSS код применится к ним всем одновременно. Приведенный выше код можно переписать покороче таким образом:

h3, h4, p {
	color: red;
}
<h3>Заголовок h3</h3>
<h4>Заголовок h4</h4>
<p>
	Абзац с текстом.
</p>

Так код будет выглядеть в браузере:

Заголовок h3

Заголовок h4

Абзац с текстом.

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

Блок . Вложенность тегов друг в друга

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

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

Чтобы показать вложенность, между селекторами следует поставить пробел (этот пробел и есть знак контекстного селектора).

Например, так — p i — мы обратимся ко всем тегам i, находящимся внутри p, p b — так ко всем тегам b внутри p, а так — div p b — ко всем тегам b, которые находятся внутри абзацев p, которые в свою очередь находятся внутри тега div.

В следующем примере мы обратимся ко всем абзацам внутри div и покрасим их в красный цвет. Абзацы вне дива и другие элементы внутри дива (в нашем случае h3) красными не станут:

div p {
	color: red;
}
<div>
	<h3>
		Заголовок h3 внутри тега div.
	</h3>
	<p>
		Абзац внутри тега div.
	</p>
	<p>
		Абзац внутри тега div.
	</p>
	<p>
		Абзац внутри тега div.
	</p>
</div>
<p>
	Абзац вне тега div.
</p>

Так код будет выглядеть в браузере:

Заголовок h3 внутри тега div.

Абзац внутри тега div.

Абзац внутри тега div.

Абзац внутри тега div.

Абзац вне тега div.

Блок . Выбор элемента по уникальному id

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

Второй способ заключается в том, что нужному элементу дается атрибут id, который содержит в себе уникальное имя нашего тега (другого id с таким именем на странице быть не должно — будет конфликт). Если мы дадим ему, к примеру, имя test, тогда в CSS мы сможем обратиться к нему таким образом: #test — то есть сначала пишется символ «решетка», а затем — то имя, которое мы записали в атрибут id.

Давайте сейчас для всех абзацев зададим красный цвет, а для абзаца с id=»test» — зеленый:

p {
	color: red;
}
#test {
	color: green;
}
<p>
	Абзац с атрибутом id в значении "test". 
</p>
<p>
	Обычный абзац с текстом.
</p>
<p>
	Обычный абзац с текстом.
</p>

Так код будет выглядеть в браузере:

Абзац с атрибутом id в значении «test».

Обычный абзац с текстом.

Обычный абзац с текстом.

А теперь атрибут id дадим конкретному диву и покрасим содержимое этого дива в красный цвет, обратившись к нему по его id:

#test {
	color: red;
}
<div>
	<h3>
		Заголовок h3 внутри #test.
	</h3>
	<h3>
		Заголовок h3 внутри #test.
	</h3>
	<h3>
		Заголовок h3 внутри #test.
	</h3>
	<p>
		Абзац внутри #test.
	</p>
	<p>
		Абзац внутри #test.
	</p>
	<p>
		Абзац внутри #test.
	</p>
</div>
<p>
	Абзац вне #test.
</p>

Так код будет выглядеть в браузере:

Заголовок h3 внутри #test.

Заголовок h3 внутри #test.

Заголовок h3 внутри #test.

Абзац внутри #test.

Абзац внутри #test.

Абзац внутри #test.

Абзац вне #test.

А теперь совместим контекстный селектор (который пробел, показывающий вложенность) и id и сделаем так, чтобы только абзацы (но не заголовки h3 в данном случае) из #test стали красного цвета:

#test p {
	color: red;
}
<div>
	<h3>
		Заголовок h3 внутри #test.
	</h3>
	<h3>
		Заголовок h3 внутри #test.
	</h3>
	<h3>
		Заголовок h3 внутри #test.
	</h3>
	<p>
		Абзац внутри тега div.
	</p>
	<p>
		Абзац внутри тега div.
	</p>
	<p>
		Абзац внутри тега div.
	</p>
</div>
<p>
	Абзац вне тега div.
</p>

Так код будет выглядеть в браузере:

Заголовок h3 внутри #test.

Заголовок h3 внутри #test.

Заголовок h3 внутри #test.

Абзац внутри #test.

Абзац внутри #test.

Абзац внутри #test.

Абзац вне #test.

Блок . Классы элементов

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

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

Как обратиться к элементам с определенным классом в CSS: пусть мы задали нужным нам элементам класс с именем test, тогда в CSS ко всем элементам с этим классом мы можем обратиться следующим образом — .test — вначале символ «точка» и потом имя класса из атрибута class.

В примере ниже и абзацы, и заголовки имеют один и тот же класс test, который красит эти элементы в красный цвет:

.test {
	color: red;
}
<h3>
	Заголовок h3 с классом test.
</h3>
<h3>
	Заголовок h3 с классом test.
</h3>
<h3>
	Заголовок h3 с классом test.
</h3>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац без класса.
</p>

Так код будет выглядеть в браузере:

Заголовок h3 с классом test.

Заголовок h3 с классом test.

Заголовок h3 с классом test.

Абзац с классом test.

Абзац с классом test.

Абзац с классом test.

Абзац без класса.

Блок . Определенный тег с заданным классом

Бывают такие ситуации, когда разные теги имеют один и тот же класс. К примеру, у абзацев и заголовков h3 одновременно задан класс test. Вам может потребоваться выбрать только абзацы с классом test, не затрагивая заголовков h3 с этим же классом.

В этом случае вместо селектора .test я должен написать следующее: p.test — таким образом я выберу все абзацы с классом test, не затронув заголовки. Если же я напишу h3.test — то выберу все заголовки h3 с классом test, не затронув абзацев.

В следующем примере только абзацы с классом test станут красного цвета, а заголовки с таким же классом — не станут:

p.test {
	color: red;
}
<h3>
	Заголовок h3 с классом test.
</h3>
<h3>
	Заголовок h3 с классом test.
</h3>
<h3>
	Заголовок h3 с классом test.
</h3>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац без класса.
</p>

Так код будет выглядеть в браузере:

Заголовок h3 с классом test.

Заголовок h3 с классом test.

Заголовок h3 с классом test.

Абзац с классом test.

Абзац с классом test.

Абзац с классом test.

Абзац без класса.

Итак, еще раз: p.test — такой селектор выбирает абзацы с классом test. А вот если я сделаю так: p .test (поставлю пробел), то выберу все элементы с классом test, находящиеся внутри абзацев. Прочувствуйте эту разницу.

Давайте теперь выберем только h3 с классом test:

h3.test {
	color: red;
}
<h3>
	Заголовок h3 с классом test.
</h3>
<h3>
	Заголовок h3 с классом test.
</h3>
<h3>
	Заголовок h3 с классом test.
</h3>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац без класса.
</p>

Так код будет выглядеть в браузере:

Заголовок h3 с классом test.

Заголовок h3 с классом test.

Заголовок h3 с классом test.

Абзац с классом test.

Абзац с классом test.

Абзац с классом test.

Абзац без класса.

А сейчас сделаем так, чтобы класс test задавал курсив всем элементам, которым он дан, и чтобы при этом все заголовки h3 с классом test красились в красный цвет, а абзацы с этим классом — в зеленый:

.test {
	font-style: italic;
}
h3.test {
	color: red;
}
p.test {
	color: green;
}
<h3>
	Заголовок h3 с классом test.
</h3>
<h3>
	Заголовок h3 с классом test.
</h3>
<h3>
	Заголовок h3 с классом test.
</h3>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац с классом test.
</p>
<p>
	Абзац без класса.
</p>

Так код будет выглядеть в браузере:

Заголовок h3 с классом test.

Заголовок h3 с классом test.

Заголовок h3 с классом test.

Абзац с классом test.

Абзац с классом test.

Абзац с классом test.

Абзац без класса.

Блок . Видео

Посмотрите следующее видео из заочного курса: скачайте его по данной ссылке (вам нужно именно про селекторы, пару видосов там лишние. Хотя они тоже лишними не будут) ).

Что вам делать дальше:

Приступайте к решению задач по следующей ссылке: задачи к уроку.

Когда все решите — переходите к изучению новой темы.

← Предыдущая страница Следующая страница →

Заголовок | Праймер CSS

На этой странице

  • Стабильный
  • Доступность не проверена
  • Источник

На этой странице

9 0016 Используйте компонент «Заголовок», чтобы создать заголовок, все элементы которого выровнены по вертикали с согласованным горизонтальный интервал.

Класс .Header — это класс-оболочка, который правильно выравнивает все элементы и придает заголовку темный фон. Каждый прямой ребенок Ожидается, что компонент .Header будет компонентом .Header-item . Компонент использует flexbox CSS для правильного выравнивания всех этих элементов и применяет запас шкалы интервалов.

<дел> <дел> <а href="#"> 01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z»> GitHub

<дел> <тип ввода="поиск" />
<дел> Меню
<дел>

Все элементы непосредственно под компонентом .Header должны быть компонентом .Header-item . Внутри этих компонентов может быть что угодно (текст, формы, изображения…), а компонент .Header-item обеспечит вертикальное выравнивание этих элементов друг с другом.

.Header-item Элементы имеют встроенное поле, которое необходимо переопределить служебным классом mr-0 для последнего элемента в контейнере. Здесь мы полагались на служебные классы вместо :last-child , потому что последний дочерний элемент не всегда является видимым элементом. На адаптивных страницах есть мобильное меню, которое отображается пользователю в меньших контрольных точках.

<дел> <дел> Текстовый элемент

<дел> <тип ввода="текст"/>
<дел>

Элемент .Header-item 9Элемент 0022 имеет класс модификатора .Header-item--full , который растягивает его, чтобы заполнить доступное пространство, и сдвигает все оставшиеся элементы вправо.

<дел> <дел> Пункт 1 <дел> Пункт 2 <дел> Пункт 3

Это совершенно правильный пример, и он отражает назначение элемента

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

,

Вот почему разработчики борются с элементом

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

Элемент заголовка и доступность

Давайте поговорим о доступности, о которой часто забывают. Вот как интерпретируется элемент

:

  • Элемент
    , указанный в верхней части вашего HTML — ближайший к нашему элементу — всегда интерпретируется как введение веб-страница.
  • Если элемент
    используется как дочерний элемент

Вот как мы могли бы использовать оба примера вместе в реальном сценарии использования:

 
  <дел>
    

Полные курсы

<навигация>
Главная <дел> <статья> <заголовок>

Название моего блога

Девиз Тодда,

<дел>

Текст вашей статьи...

Следующий заголовок

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

Бесплатная электронная книга

Директивы, простые, верно? Неправильный! Внешне они выглядят простыми, но даже опытные разработчики Angular не уловили всех концепций этой электронной книги.

  • Наблюдаемые объекты и асинхронный канал
  • Проверка личности и производительность
  • Веб-компоненты синтаксис
  • и Observable Composition
  • Расширенные шаблоны рендеринга
  • Методы установки и получения для стилей и привязок классов

Поддержка старых браузеров существуют, что понятия не имею, что означает

.

Для поддержки браузеров каждый элемент

равен display: block , что означает, что в старых браузерах не будет 9Отображение 0021: встроенный блок , что приводит к очень важным ошибкам стиля.
Автор записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *