Селекторы CSS2 и переопределение стилей

Это HTML:

<div id = "testBlue">
    <span>hello</span>
    <span id = "testGreen" class = "testGreen">hello2</span>
</div>

Если я установил в CSS:

#testBlue span { color:Blue; }    
.testGreen, #testGreen { color:Green; }

Как я могу переопределить общий стиль во втором SPAN?

Я пробовал селекторы идентификаторов и классов, но это не отменяет их.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
4
0
2 746
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

#testGreen { color: red !important;}

или же

.testGreen { color: red !important;}

Любое из них переопределит унаследованное правило, потому что !important придает больший вес одной стороне решения, в остальном равного.

Ваше решение сработало, и я поддержал его, спасибо! Я принял тот, который дал @alexmeia, потому что мне он кажется проще.

Santiago Corredoira 18.11.2008 14:34

Я также считаю, что его решение лучше. Вы также должны проголосовать за него.

Tomalak 18.11.2008 14:36

Не используйте важный, дайте ему больше веса, как это

#testBlue span { color:Blue; } 
#testblue #testgreen{color:Red}

Редактировать

Меня учили использовать! Важно - плохая практика

Некоторые объекты в css имеют разный вес при принятии решения о применении правила

См. http://htmldog.com/guides/cssadvanced/specificity/

Я полагаю, это не неправильно использовать важную, но лучшую практику для использования взвешивания для конкретности.

извините цвет: зеленый должен быть цвет: красный

Allen Hardy 18.11.2008 14:21

Ну, тогда отредактируйте свой пост. Объясните, почему! Important не является оптимальным, и я проголосую за это.

Tomalak 18.11.2008 14:22

Вы все еще забыли изменить цвет на «красный».

Tomalak 18.11.2008 14:31

Да, после того, как Аллен внес небольшую поправку в свой код.

Tomalak 18.11.2008 14:42

Вы можете использовать селектор

#testBlue * { color:Blue; } 

Почему? Не могли бы вы добавить объяснение?

11684 22.07.2012 15:33
Ответ принят как подходящий

В CSS селекторы с более высокой специфичностью переопределяют более общие селекторы.

В вашем примере вы определили стиль для промежуток внутри div с id = "testBlue". Этот селектор более конкретно, чем простой селектор для класса или идентификатора testGreen, поэтому он выигрывает. Вам просто нужен селектор более специфичный, чем #testBlue span, найти который несложно:

#testBlue span.testGreen {
    color: green;
}

Было бы неплохо пояснить, почему это работает. В противном случае +1.

Tomalak 18.11.2008 14:33

Сделано добавление некоторой аргументации.

alexmeia 18.11.2008 15:15
span#testGreen
{
    color: green;
}

Вы также можете использовать стандартные селекторы CSS DOM (чтобы вы могли отбросить имена классов) следующим образом:

#testblue > span:first-child + span{}

testblue span, КОТОРЫЙ ЯВЛЯЕТСЯ ПРЯМЫМ ПУТЕШЕСТВИЕМ && ПЕРВЫЙ РЕБЕНОК СЛЕДУЮЩИЙ РАЗДЕЛ

Другие вопросы по теме