Добрый день.
Хочу поделиться с хабрасообществом одним полезным свойством, которое не так часто используется, хотя при грамотном использовании способно сократить размер css и html кода. Речь идет о возможности прописывать css-свойства для элементов с несколькими селекторами, указанными одновременно.
Делается это достаточно просто — нужно перечислить селекторы подряд, без пробелов (с пробелом, как известно, получится селектор потомка).
Аналогично можно задавать стилевые описания для любого количества селекторов классов одновременно. Например, запись
будет применяться только к тем элементам, у которых указаны три класса одновременно.
Кроме этого, можно комбинировать селекторы классов с селекторами идентификаторов #id:
и с селекторами атрибутов:
Иногда приходилось видеть, как для реализации подобной функциональности добавлялись лишние структурные блоки и уже для них, как потомков, прописывались отдельные css-правила. Как видите, этого можно достаточно просто избежать, сохранив разметку чистой, а волосы — мягкими и шелковистыми :)
Вот и все, надеюсь, кто-то найдет это полезным.
Хочу поделиться с хабрасообществом одним полезным свойством, которое не так часто используется, хотя при грамотном использовании способно сократить размер css и html кода. Речь идет о возможности прописывать css-свойства для элементов с несколькими селекторами, указанными одновременно.
Делается это достаточно просто — нужно перечислить селекторы подряд, без пробелов (с пробелом, как известно, получится селектор потомка).
<style> .red_bg { background: #f00; } .red_text { color: #f00; } .red_bg.red_text { color: #fff; } /* это правило будет применяться, когда указаны одновременно оба предыдущих класса */ </style> <div class="red_bg"> это текст на красном фоне </div> <div class="red_text"> это красный текст </div> <div class="red_bg red_text"> на красном фоне текст стал белым </div>
Аналогично можно задавать стилевые описания для любого количества селекторов классов одновременно. Например, запись
<style type="text/css"> .red_bg.red_text.bordered { ... } </style>
будет применяться только к тем элементам, у которых указаны три класса одновременно.
Кроме этого, можно комбинировать селекторы классов с селекторами идентификаторов #id:
<style type="text/css"> #menu.red_text { ... } /* обычно class="red_text" делает одно, а для #menu этот же класс может добавлять другое описание */ </style>
и с селекторами атрибутов:
<style type="text/css"> h1 { background: #000; color: #fff; } .notice { color: #00f; } h1.notice { color: #ee8; } </style> <p class="notice">Текст в блоке с class="notice" синий.</p> <h1>Заголовок первого уровня - белый на черном фоне</h1> <h1 class="notice">Заголовок первого уровня с class="notice" становится светлым, т.к. синий на черном не читается</h1>
Иногда приходилось видеть, как для реализации подобной функциональности добавлялись лишние структурные блоки и уже для них, как потомков, прописывались отдельные css-правила. Как видите, этого можно достаточно просто избежать, сохранив разметку чистой, а волосы — мягкими и шелковистыми :)
Вот и все, надеюсь, кто-то найдет это полезным.