Подтвердить что ты не робот

Использование нескольких классов в одном элементе и специфика

Просто интересно, когда вы используете несколько классов для одного элемента, например class="foo bar", и эти классы настраиваются, как показано ниже:

.foo {
    margin-right: 10px;
}


.bar {
    margin-right: 0px;
}

Какой класс будет иметь специфику? Будет ли поле 10px или 0px?

4b9b3361

Ответ 1

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

CASE 1

.foo  { background : red; }
.bar  { background : blue; }

class = 'foo bar' в этом случае будет синим.

CASE 2

.bar  { background : blue; }
.foo  { background : red; } 

class = 'foo bar' в этом случае будет красным.

Рабочий пример

Ответ 2

Кроме того, если вы хотите настроить таргетинг на элемент, который имеет только оба класса, вы можете использовать этот синтаксис:

<ul>
  <li class="foo first">Something</li>
  <li class="foo">Somthing else</li>
  <li class="foo">Something more</li>
</ul>

.foo {
  color: red;
}
.foo.first {
  color: blue
}

Ответ 3

Одно имя класса имеет одинаковый вес. В таком сценарии правило, которое перечислено первым, будет перезаписано вторым, и, следовательно, элемент будет иметь margin-right: 0px;

Вот простой пример, используя color вместо поля, потому что его легче визуализировать. Значение, указанное в bar, будет выбрано браузером.

Ответ 4

Кроме того, более "специфический" класс будет переопределять более общий:

HTML:

<div class="foo">
    <div class="bar">Hello World!</div>
</div>

Со следующим CSS:

.foo .bar { margin-left:25px }
.bar { margin-left:0px }

Обратите внимание на то, что внутренний div все еще имеет маркер 25 пикселей влево?

Кроме того, прочитайте аргумент "! important" после предоставления значения:

.bar { margin-left:0px!important }

Отъезд