Css класс: Классы в CSS — Знакомство — HTML Academy

Содержание

Классы и идентификаторы в HTML и CSS

В предыдущем уроке в качестве селекторов правил CSS мы использовали имена тегов HTML. Например, для абзаца у нас было следующее правило:

p {
  font-size: 18px;
  font-family: Verdana, sans-serif;
}

Оно действовало для всех элементов p документа. Но что делать, если какие-то из них надо оформить по-другому?

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

У открывающих или одиночных тегов HTML может быть атрибут class, которому присваивается произвольное (вами придуманное) имя класса. Например:

<p>…текст…</p>

Теперь в CSS, чтобы оформить этот абзац по особому, в таблице стилей мы обращаемся к нему с помощью такого синтаксиса:

.название_класса {
    ...
}

То есть перед именем класса ставим точку, само имя в кавычки не берем.

По смыслу скорее именно в CSS мы определяем класс и создаем для него правило, а в HTML обращаемся к нему с помощью атрибута class, то есть применяем какой-то класс к элементу. Другими словами, делаем элемент принадлежащим определенному классу.

Одному классу может принадлежать множество html-элементов. На скрине выше два абзаца и один раздел принадлежат классу addition.

Если мы хотим ограничить применимость класса только к одному типу элементов, а не к любому, то в css-правиле перед точкой следует указать этот элемент. Например:

p.addition {
  font-size: 18px;
  font-weight: bold;
  color: DimGrey;
  margin-left: 15px;
}

В таких случаях назначение класса другим элементам бессмысленно (ошибки не будет, но стилевое правило класса не будет применено):

<div>
  Содержимое раздела
</div>

Однако для другого элемента в таблице стилей может иметься свой класс с таким же именем:

div. addition {
  border-style: ridge;
}

В этом случае для каждого типа элементов будет применяться свое правило.

Вернемся к нашему исходному примеру, в котом один класс может применяться к разным html-элементам:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" 
content="width=device-width, 
initial-scale=1">
<style> 
 
  body {
    background: WhiteSmoke;  
  } 
 
  p {
    font-size: 20px;
    font-family: Verdana, sans-serif;
  } 
 
  .addition {
    font-size: 18px;
    font-weight: bold;
    color: DimGrey;
    margin-left: 15px;
  }
 
</style>
</head>
<body>
 
<p>Первый абзац</p>
 
<p>Второй абзац</p>
 
<p>Третий абзац</p>
 
<p>Четвертый абзац</p>
 
<p>Пятый абзац</p>
 
<div>
  Содержимое раздела
</div>
 
</body>
</html>

Если вы присмотритесь к абзацам класса addition, то заметите, что семейство их шрифта такое же как у обычных абзацев, то есть один из вариантов sans-serif – шрифта без засечек. В то же время у раздела div начертание serif – с засечками.

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

В нашем случае, когда класс применяется к абзацу, более низкий приоритет оказывается у правила с селектором имени тега p. Но это не значит, что к элементу не применяется стиль, обладающий меньшей специфичностью. Правило с более высоким приоритетом (более специфичное) как бы накладывается на него.

Таким образом, к абзацам с классом было применено правило с селектором p и затем правило с селектором .addition. Если какое-либо свойство описывалось в обоих правилах, то применялось значение этого свойства для класса addition.

Что касается элемента div, то его семейство шрифта нами не менялось, оно осталось в варианте по-умолчанию, заданном браузером. Правило с селектором p для div неприменимо.

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

body, и эти значения будут работать для всех элементов страницы. Но при этом мы можем переопределять их для отдельных.

Теперь перейдем к идентификаторам. Их применение похоже на то, как это происходит с классами. Однако вместо html-атрибута class используется id, при этом в правиле CSS селектор с идентификатором записывается через решетку.

<!DOCTYPE html>
<html>
<head>
<style> 
 
  body {
    background: WhiteSmoke;  
  } 
 
  p {
    font-size: 20px;
    font-family: Verdana, sans-serif;
  } 
 
  #special {
    font-size: 22px;
    border-style: dotted;
    border-width: 2px;
    color: Red;
    padding: 15px;
  }
 
</style>
</head>
<body>
 
<p>Первый абзац</p>
 
<p>Второй абзац</p>
 
<p>Особенный абзац</p>
 
<p>Четвертый абзац</p>
 
<p>Пятый абзац</p>
 
</body>
</html>

Смысловое (на самом деле вы можете прописать один идентификатор нескольким элементам) отличие идентификаторов от классов заключается в следующем: класс применим ко множеству элементов на странице, конкретный идентификатор следует использовать только с одним элементом. Другими словами, для каждого элемента на странице подразумевается свой уникальный идентификатор.

Обращение к элементам через идентификаторы часто используется в JavaScript. Например, при нажатии на одну кнопку вызывается определенная функция, которая что-то изменяет на странице. При этом не надо, чтобы эта функция вызывалась при нажатии на любую другую кнопку или иной элемент.

К элементу может применяться несколько классов. В таких случаях они указываются через пробел в атрибуте

class. У элемента может быть и идентификатор, и класс/классы:

<p>
...
</p>

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

При применении к элементу нескольких классов мы касаемся такого понятия в CSS как каскад (на то они и каскадные таблицы стилей – Cascading Style Sheets): последующее определение свойства в одинаковом по специфичности селектора правиле переопределяет ранее объявленное. В примере ниже элементы, использующие два класса, будут синими:

.addition {
  font-size: 18px;
  font-weight: bold;
  color: DimGrey;
  margin-left: 15px;
}
.another {
  color: Blue;
}

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

class тега. Так в нижеследующих абзацах нет никакой стилевой разницы:

<p>...</p>
<p>...</p>

Также обратим внимание на то, что некоторые html-элементы не используются на странице множество раз. Например, многие семантические теги: main, article, footer и др. Для них обычно не указывают идентификаторы, а при создании css-правила в качестве селектора пишут имя тега.

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

<p>
Первый абзац
</p>

Специфичность добавленных непосредственно в тег css-объявлений самая высокая. Она выше, чем у идентификатора, тем более класса.

Атрибут style – это еще один из способов добавления CSS-кода к HTML-коду. До этого мы использовали только вставку таблицы стилей между тегами <style></style>.

важен ли порядок названий классов CSS в атрибуте «class» HTML-элементов / Хабр

У HTML-элементов на HTML-странице может быть необязательный глобальный атрибут class. Например:

<div>
  Какой-то текст.
</div>

Здесь у HTML-элемента div есть интересующий нас атрибут class.

С точки зрения стандарта языка HTML

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

В примере выше атрибут class содержит значение-строку имя-класса1 имя-класса2 имя-класса3, представляющее собой набор из трех названий классов CSS, разделенных символом пробела.

Понятие, о котором тут идет речь — набор из слов (токенов), разделенных пробельными символами (по-английски «set of space-separated tokens»). Само это понятие определено в стандарте языка HTML отдельно от определения атрибута class.

В определении понятия «set of space-separated tokens» сказано, что это строка, содержащая ноль или более слов (токенов), разделенных пробельными символами. Из этого я сделал вывод, что атрибут class по действующему стандарту HTML может не содержать ничего (содержать пустую строку). Также не будет нарушением действующего стандарта HTML, если этот атрибут будет содержать только пробельные символы (символ пробела, символ горизонтальной табуляции, символы новой строки).

Действующий стандарт HTML вообще практически не накладывает на набор названий классов CSS в атрибуте class HTML-элементов каких-либо ограничений. Не накладывается ограничение на дублирование названий классов CSS внутри атрибута class. Не накладывается каких-либо ограничений, касающихся порядка перечисления названий классов CSS внутри атрибута class.

То есть с точки зрения действующего стандарта HTML (в отличие от стандарта CSS, о чем речь пойдет далее) название класса, перечисленное в наборе названий классов внутри атрибута class HTML-элемента раньше (левее, выше), ничем не отличается от названия класса, перечисленного в том же наборе названий классов внутри атрибута class HTML-элемента позже (правее, ниже).

В примере выше с точки зрения действующего стандарта HTML названия классов имя-класса1имя-класса2 и имя-класса3 в наборе названий имя-класса1 имя-класса2 имя-класса3 полностью равноправны, несмотря на то, что, к примеру, название имя-класса1 перечислено раньше (левее), чем имя-класса2 или имя-класса3. То же самое касается названия имя-класса2 по сравнению с названием имя-класса3.

Во что это выливается на практике?

Рассмотрим такой код на языке HTML (многоточием заменен неинтересный для предмета этой статьи код):

...
<head>
  ...
  <style>
    .имя-класса1 { color: green; }
    .имя-класса2 { color: red; }
    .имя-класса3 { border: 2px solid blue; }
  </style>
</head>
<body>
  <p>
    Какой-то текст1.
  </p>
  <p>
    Какой-то текст2.
  </p>
</body>
...

В теле этой HTML-страницы есть два параграфа (HTML-элемент p). Каждый из этих параграфов содержит атрибут class с набором из одних и тех же трех названий классов CSS, только перечисленных в разном порядке.

Описание стилей в классе имя-класса3 не конфликтует с другими классами. А вот описания стилей в классах имя-класса1 и имя-класса2 конфликтуют друг с другом (приписывают разные значения одному и тому же свойству HTML-элемента).

В итоге при любой перестановке названий классов CSS в атрибуте class HTML-элементов p браузер отобразит параграфы одинаково, в данном случае — с синей границей и текстом красного цвета. Это подтверждает наши выводы, сделанные выше из определений действующего стандарта HTML.

Почему же в данном случае в конфликте описаний стилей в классах имя-класса1 и имя-класса2 «победил» класс имя-класса2 (текст в параграфах отразился красным цветом)? Потому что при определении классов CSS внутри HTML-элемента style класс имя-класса2 описан позже (ниже), чем класс имя-класса1. Внутри HTML-элемента style действуют правила (стандарт) языка CSS. Это действие того самого «каскада», давшего первую букву аббревиатуре CSS (Cascading Style Sheets). Если менять местами определения классов CSS внутри HTML-элемента style (или внутри файла с кодом на языке CSS, если определения стилей вынесены в отдельный файл или файлы), то отображение HTML-страницы в браузере будет изменяться. =»имя-класса2 имя-класса1″] { color: red; } .имя-класса3 { border: 2px solid blue; } </style> </head> <body> <p> Какой-то текст1. </p> <p> Какой-то текст2. </p> </body> …

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

В этом примере порядок названий классов внутри атрибута class HTML-элементов стал значимым для отображения HTML-страницы в браузере, но это действие не правил языка HTML, а правил языка CSS.

Заключение

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

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

Селектор CSS .class

❮ Назад Справочник по селекторам CSS Далее ❯


Пример

Выберите и настройте все элементы с помощью:

.intro {
  background-color: yellow;
}

Попробуйте сами »

Другие примеры «Попробуйте сами» ниже.


Определение и использование

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

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

Вы также можете указать, что класс должен влиять только на определенные элементы HTML. Для этого начните с имени элемента, затем напишите символ точки (. ), а затем имя класса (см. Пример 1 ниже).

HTML-элементов также может относиться к более чем одному классу (см. пример 2 ниже).

Версия: CSS1

Поддержка браузера

Селектор
.класс Да Да Да Да Да


Синтаксис CSS

. class {
 объявления css ;
} Демонстрация


Дополнительные примеры

Пример 1

Стиль всех элементов

:

p.hometown {
цвет фона: желтый;
}

Попробуйте сами »

Пример 2

Стиль этого элемента

будет И к:

Этот абзац относится к двум классам.

Попробуйте сами »

❮ Предыдущий Справочник по селекторам CSS Следующий ❯


ВЫБОР ЦВЕТА



Лучшие учебники
Учебное пособие по HTML
Учебное пособие по CSS
Учебное пособие по JavaScript
Учебное пособие
Учебное пособие по SQL
Учебное пособие по Python
Учебник по W3.CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery

Основные ссылки
Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Top8 Примеры Примеры HTML

Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3. CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery


FORUM | О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.

Идентификатор и класс CSS: что следует использовать?

ID и класс — это два способа сделать ваш код чище и эффективнее при работе с HTML. Научитесь использовать эти знаки.

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

Готовы начать свое путешествие?

Рассмотрено Darnell Kenebrew

Наша сеть обзоров

BestColleges стремится предоставлять объективный и точный контент. Мы создали сеть профессионалов отрасли в области здравоохранения и образования, чтобы проверять наш контент и обеспечивать предоставление нашим читателям наилучшей информации.

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

  • Предлагайте изменить неточную или вводящую в заблуждение информацию.
  • Дайте конкретную корректирующую обратную связь.
  • Определите важную информацию, которую авторы могли пропустить.

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

Рецензенты обычно работают полный рабочий день в своей отрасли и рецензируют контент для BestColleges в качестве побочного проекта. Наши рецензенты являются членами сети обзоров фрилансеров Red Ventures Education, и их вклад оплачивается.

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

Отредактировано Келли Томас

Поделиться этой статьей

  • Класс и идентификатор — это селекторы, используемые для организации кода CSS.
  • ID описывает что-то особенное.
  • Класс описывает нечто, состоящее из нескольких элементов.
  • Хотя они работают одинаково, знание того, когда использовать каждый из них, может сделать ваш код чище.

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

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

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

Что такое идентификатор?

Идентификатор позволяет разработчикам идентифицировать один элемент в коде HTML и применять к нему определенный стиль. Идентификаторы являются конкретными и целевыми, как имя собственное. На странице может быть несколько элементов, но идентификатор отмечает определенный элемент. У каждого элемента может быть только один идентификатор, и на каждой странице может быть только один элемент с этим конкретным идентификатором.

В качестве примера, если у нас есть пять элементов div в нашем HTML, мы можем создать идентификатор и сделать каждый из них зеленым и иметь высоту 60 пикселей. Идентификаторы обозначаются символом решетки (#), за которым следует имя идентификатора:

раздел{
цвет фона: #008000;
высота: 60 ​​пикселей;
}

Что такое класс?

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

Классы обозначаются точкой, за которой следует имя класса. В этом примере все элементы, помеченные классом «центр», будут центрированы и окрашены в зеленый цвет:

.центр {
выравнивание текста: по центру;
цвет: зеленый;
}

В чем разница между идентификатором и классом?

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

Можно представить идентификаторы и классы как штрих-коды и серийные номера. Например, все товары в магазине электроники имеют как штрих-код, так и серийный номер, но предоставляют разные типы информации.

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

Часто определенный элемент может иметь как идентификатор, так и класс (или несколько классов), связанных с ним.

Что выбрать?

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

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

Часто задаваемые вопросы об идентификаторе и классе CSS

Является ли идентификатор сильнее, чем класс CSS?

Селекторы идентификаторов

выполняются перед селекторами классов, поскольку они более специфичны. Поэтому они имеют приоритет. Во-первых, браузер определяет происхождение и важность каскада. Затем алгоритм под названием «Специфичность» определяет порядок операций для объявлений CSS, оценивая вес конкретного селектора CSS.

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

Окончательный заказ:

  • Значения, определенные как важные
  • Встроенные стили
  • Селекторы ID
  • Селекторы классов
  • Элемент

Является ли ID быстрее, чем класс CSS?

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

Выяснение того, какие селекторы использовать (и когда), поможет вам писать более чистый код, что является более важным фактором, чем скорость работы.

Можно ли использовать класс и идентификатор вместе?

Да. Элемент может иметь и часто имеет как класс, так и селектор идентификатора. На самом деле, использование нескольких селекторов может быть эффективным организационным инструментом — если вы делаете это хорошо. Пример может выглядеть так:

<в сторону>

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

Feature Image: Rohane Hamilton / EyeEm / Getty Images

How to Learn HTML

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

Бетани Паркер

Как выучить JavaScript

Заинтересованы в изучении JavaScript? В нашем руководстве обсуждаются лучшие онлайн-курсы и учебные курсы по кодированию в этой области, а также лучшие вакансии по JavaScript.

Бетани Паркер

Карьера в веб-разработке

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

Бетани Паркер

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

Оставить комментарий

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

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