Применить стиль ко всем div, кроме одного конкретного

Я пытаюсь применить стили ко всем своим div, кроме одного конкретного. Я делаю это, но это не работает:

#toolbar div[class~="olControlNavigationHistory"]{
   float: left;
   background-repeat: no-repeat;
   margin: 2px 12px 2px 12px;
}

Поэтому мне нужно применить этот стиль ко всем элементам div в #toolbar, ЗА ИСКЛЮЧЕНИЕМ элемента div с классом «olControlNavigationHistory».

Как я могу это сделать? Это возможно?


person Fran Verona    schedule 04.01.2011    source источник
comment


Ответы (2)


Просто сначала примените правило ко всем элементам div:

#toolbar div {
   float: left;
   background-repeat: no-repeat;
   margin: 2px 12px 2px 12px;
}

Затем вам нужно обнулить значения для конкретного случая:

#toolbar div.olControlNavigationHistor {
   float: none;
   background-repeat: repeat;
   margin: 0;
}

Конечно, это предполагает, что значения свойств, которые конкретный элемент div имел бы без применения первого правила, являются значениями по умолчанию для каждого свойства (например, margin: 0 и float: none).

EDIT: Однако в будущем, когда CSS3 будет поддерживаться везде, вы также можете просто переписать исходное правило как #toolbar div:not(.olControlNavigationHistory), и оно будет работать правильно и элегантно.

person Marcus Whybrow    schedule 04.01.2011
comment
@ user552669 Для записи ~= означает, что содержит, а не равно - w3schools. Однако в будущем, когда CSS3 будет поддерживаться везде, вы также можете просто переписать исходное правило как #toolbar div:not(.olControlNavigationHistory), и оно будет работать правильно и элегантно. - person Marcus Whybrow; 04.01.2011

Я просто делал то же самое и нашел этот ответ. Используйте селектор :not:

div:not(#div1){
    color:red;
}

он был опубликован в разделе "Применить стиль CSS ко всем элементам". кроме как с КОНКРЕТНЫМ ID

person mkkabi    schedule 02.11.2016