Як вибрати елемент, який має певний клас?


81

Я розумію, що використання element.classмає дозволяти певному елементу, призначеному класу, отримувати інший "стиль", ніж решта класу. Це не питання про те, чи слід цим користуватися чи ні, але я намагаюся зрозуміти, як цей селектор призначений для роботи. Переглядаючи безліч прикладів в Інтернеті, я вважаю, що синтаксис правильний і не розумію, чому це не працює.

Ось приклад:

CSS:

h2 {
    color: red;
}

.myClass {
    color: green;
}

h2.myClass {
    color: blue;
}

HTML:

<h2>This header should be RED to match the h2 element selector</h2>
<div class="myClass">
    <h1>This header should be GREEN to match the class selector</h1>
    <h2>This header should be BLUE to match the element.class selector</h2>
</div>

4
Можливо, варто оновити заголовок питання, щоб відобразити, що ви насправді питаєте, як працюють селектори елемента. Class, а не чому вони працюють не так, як ви очікуєте.
Габріель

Відповіді:


105

Це має бути так:

h2.myClassшукає h2 з класом myClass. Але ви насправді хочете застосувати стиль для h2 всередині, .myClassщоб ви могли використовувати селектор нащадків .myClass h2.

h2 {
    color: red;
}

.myClass {
    color: green;
}

.myClass h2 {
    color: blue;
}

Демо

Це посилання дасть вам базове уявлення про селектори та подивиться на селектори-нащадки


Щоб бути зрозумілим, я намагаюся зрозуміти, як працює селектор element.class. Я спеціально намагаюся використовувати синтаксис element.class, щоб замінити колір елемента (h2, який міститься в myClass) на синій, на відміну від класу зеленого. Я хотів би знати, як націлити певний елемент під клас.
Каролін

@Carolyn, якщо ви цього хочете, тоді вам потрібно використовувати myClass на h2. Подобається jsfiddle.net/wDmwE . Причиною є правило css для h2, яке замінить клас .myClass на контейнері.
PSL

1
Чудово! Так, ваша відповідь допомогла. Думаю, моя проблема полягала в конкретності (я про це лише дізнаюся). Знову дякую!. Цінується.
Каролін

1
Нарешті. Я довго шукав це рішення. Я знав про elementWithAClass.Class {}, але не про .Class elementInsideThisClass {}. Дякую. Я винен тобі пиво: D
kv1dr

58

h2.myClassвідноситься до всіх h2с class="myClass".

.myClass h2відноситься до всіх, h2які є дочірніми елементами (тобто вкладеними в них) class="myClass".

Якщо ви хочете, щоб h2ваш HTML-код виглядав синім, змініть CSS на такий:

.myClass h2 {
    color: blue;
}

Якщо ви хочете мати можливість посилатися на це h2за допомогою класу, а не його тегу, вам слід залишити CSS таким, який він є, і вказати h2клас у HTML:

<h2 class="myClass">This header should be BLUE to match the element.class selector</h2>

Дякую - я насправді намагаюся зрозуміти, як використовувати селектор element.class. Я хочу всі елементи h2 під "myClass"
Каролін,

@Carolyn, чи допомагає моя оновлена ​​відповідь? Якщо ні, то мені незрозуміло, про що ви запитуєте.
ASGM

Так дякую!! Я все ще намагаюся обернути голову навколо конкретності.
Каролін

@Carolyn, чи є щось особливо, з чим у вас виникають проблеми?
ASGM

ASGM - У мене були проблеми з розумінням того, як працює селектор element.class. З моменту публікації я дізнався трохи більше (разом з інформацією, представленою на цьому сайті), тому використовував їх неправильно. Дякую,
Каролін,

12

Селектор element.class призначений для стилізації таких ситуацій, як:

<span class="large"> </span>
<p class="large"> </p>

.large {
    font-size:150%; font-weight:bold;
}

p.large {
    color:blue;
}

Розміру шрифту та вазі шрифту буде присвоєно як вашому інтервалу, так і p з .large, а синій колір - лише p.

Як зазначали інші, ви працюєте з селекторами нащадків.


Дякую. Дуже. Всі дуже допомогли.
Каролін

2

h2.myClassдійсний лише для h2елементів, яким клас myClassпризначений безпосередньо.

Ви хочете зазначити це так:

.myClass h2

Який вибирає всіх дочірніх елементів, myClassякі мають тегиh2


1

:first-childСелектор CSS дозволяє націлити на елемент, який є першим дочірнім елементом у своєму батьківському.

element:first-child { style_properties }
table:first-child { style_properties }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.