Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
id в 255 раз специфичнее класса
p { margin: 0.5em 0; }
#header p {margin: 0; }
article p,
aside p,
.block p,
/* еще два десятка селекторов */
footer p
{ margin: 0.5em 0; }
/* Применить ко всем элементам A, имеющим класс .clean-links */
a:not(.clean-links) { transition: all 0.4s /* что там еще */; }
a:not(.clean-links):hover { padding: 0.5em; margin: -0.5em; border-radius: 0.5em; background-color: lightblue; }
/* Применить ко всем элементам A, не вложенным в элемент с классом .clean-links */
:not(.clean-links) a { transition: all 0.4s /* что там еще */; }
:not(.clean-links) a:hover { padding: 0.5em; margin: -0.5em; border-radius: 0.5em; background-color: lightblue; }
a { transition: background-color 0.4s /* что там еще */; }
a:hover { padding: 0.2em; margin: -0.2em; border-radius: 0.5em; background-color: lightblue; text-decoration: none; }
.clean-links a { transition: none; }
.clean-links a:hover { padding: 0; margin: 0; border-radius: 0; background-color: transparent; text-decoration: underline; }
<header class="header">
<a id="super-link" class="super-link">
<header class="page_header">
.link?<a> одинаковы конечно удобнее будет написать .head-nav a, только в таком случае вы не учтёте что в навигацию могут добавиться какие-то специфичные ссылки и придётся отменять общие для элемента свойства.<ul class="nav-list">
<li><a>Домой</a></li>
<li><a>Каталог</a>
<ul>
<li><a>Такси</a></li>
<li><a>Шашечки</a></li>
</ul>
</li>
</ul>
.nav-list a тут не прокатит.<a> попадают под ваше определение.> не самое лучшее решение проблемы.<a> внутрь <li>.размер CSS = O(количества категорий). Кроме того, либо верстку каждого блока предпросмотра категории нужно вынести наверх (каскадно, простите мой французский), либо получится лоскутное одеяло. Кроме того, рано или поздно команда галстуков решит, что блок телевизоров сверстан так, как им нужно, и унаследует какой-нибудь .tv-preview-image..formatted, и уже внутри него задавать все отступы, выделения и другие свойства, присущие именно оформлению контента. Отступ у p это как раз такой момент.Это сгенерировано SASS'ом?Plain css.
Задолбаешься ведь окружать.Не понимаю, о чём речь. На странице типового сайта в вакууме, этот класс нужно будет применить только на области, где выводится содержимое статьи / описание товара, содержимое какого-нибудь текстового блока. Итого 1 (2-3) употребления на шаблон.
Ради избавления от одного переопределения стилей приходится редактировать десятки шаблонов, хачить или манки-патчить код движка.Что куда хачить-патчить, о чём речь?
Plain css.Аккуратненько! Очень похоже на выдачу SASS-компилятора:
Не понимаю, о чём речь. На странице типового сайта в вакууме, этот класс нужно будет применить только на области, где выводится содержимое статьи / описание товара, содержимое какого-нибудь текстового блока. Итого 1 (2-3) употребления на шаблон.Да, и таких шаблонов множество: один материал на страницу, превьюха материала, блок в боковинке/шапке/футере, кастомная выборка материалов.
Что куда хачить-патчить, о чём речь?В Drupal, к примеру, часть HTML, генерируемого движком, хранится в шаблонах, а часть — в PHP-функциях движка и модулей. Чтобы изменить последнюю, нужно перехватывать вызов этих функций.
Аккуратненько! Очень похоже на выдачу SASS-компилятора:Я своими руками написал эти строки на CSS. Не понимаю, к чему, вы твердите мне про SASS. С чем аккуратненько?
а, и таких шаблонов множество: один материал на страницу, превьюха материала, блок в боковинке/шапке/футере, кастомная выборка материалов.Очевидно, мы не понимаем друг друга. Вы говорили в самом начале о том, что задаёте отступ тегу
В Drupal, к примеру, часть HTML, генерируемого движком, хранится в шаблонах, а часть — в PHP-функциях движка и модулей. Чтобы изменить последнюю, нужно перехватывать вызов этих функций.
p глобально, для всего шаблона. Вот так:p { margin: 0.5em 0; }
Да, и таких шаблонов множество: один материал на страницу, превьюха материала, блок в боковинке/шапке/футере, кастомная выборка материалов.Эм, ну вы ведь всё-равно будете писать HTML и CSS для них. Думаю, можно и класс им вписать.
Я своими руками написал эти строки на CSS. Не понимаю, к чему, вы твердите мне про SASS. С чем аккуратненько?Я отмечаю высокую дисциплину написания кода по строгим правилам. Код настолько аккуратен, что неотличим от автоматически отформатированного.
Определите её для одного класса, раздавайте этот класс контейнерам контент-зон, где она нужна и тогда, вам не придётся отменять её в шапках, футерах и других местах.Мы говорим об одном и том же. Я нахожу вашу рекомендацию здравой, но указываю на то, что изменить автоматически генерируемый HTML в соответствии с вашими желаниями может быть гораздо сложнее, чем переопределить стили в CSS-файлике.
И, хоть убей, не понимаю, к чему разговоры про Drupal, который зачем-то хранит html-шаблоны в PHP-функциях.Drupal в PHP-функциях хранит не все шаблоны, а только динамически генерируемые. То есть те, где нужно динамически добавлять контент и классы. Например, навигационные меню, выборки, поля материалов, преобразование пользовательского текста (BB-код, Markdown, вики-синтаксис) в HTML и т. д…
Эм, ну вы ведь всё-равно будете писать HTML и CSS для них. Думаю, можно и класс им вписать.В том то и дело, что весь HTML генерируется движком. И если изменить структуру страницы или, скажем, обрамление различных блоков — просто (благодаря тому, что все это хранится в шаблонах), то переопределить такие вещи как, например, расстановка семантических классов .first, .last, .middle, .odd, .even для элементов списка, генерируемого из BB-кода, — хлопотно.
li { margin: 0.5em 0; }
/* Переопределение первого и последнего элементов списка. Необходима, чтобы, к примеру, избежать двойных отступов, так как движок, допустим, вкладывает ul в p. */
li:first-child { margin-top: 0; }
li:last-child { margin-bottom: 0; }
/* Переопределение дефолтных отступов списка там, где они не нужны. */
.menu li, .tabs li, #block-foo li, #block-bar li { margin: 0; } — огромный. А все зачем? Ради того, чтобы код был идеологически правильным?.menu, .tabs, #block-foo, #block-bar
li
margin: 0
(этот код генерирует такой же CSS, как в последней строчке предыдущего сниппета)Я отмечаю высокую дисциплину написания кода по строгим правилам. Код настолько аккуратен, что неотличим от автоматически отформатированного.А, конечно, я неверно вас понял, прошу прощения.
Никогда, никогда не используйте значения которые «просто работают». В предыдущем примере гораздо лучше было бы написать top:100%; вместо top:37px;
h2{
font-size:2em;
margin-bottom:0.5em;
}
.headline{
padding-bottom:0.5em;
border-bottom:1px solid #ccc;
}
h2 {
font-size:2em;
margin-bottom:0.5em;
}
.news_block h2 {
padding-bottom:0.5em;
border-bottom:1px solid #ccc;
}
h1{
font-size:24px;
line-height:32px;
}
/**
* Main site `h1`
*/
.site-title{
font-size:36px;
line-height:48px;
}
.foo{
margin-left:-3px;
position:relative;
z-index:99999;
height:59px;
float:left;
}
<div id="#header">
<a>...</a>
<div class="message"> <a>...</a> </div>
</div>
<div class="message"> <a>...</a> </div>
.header a {...}
.message a {...}
#header a {...}
.message a {...}
#header a {...}
#header .message a {...}
.message a {...}
.blue-nav-button {
background: #00a;
float: left;
color: #fff
}
.column-45 {
width: 45%;
}
.column-10 {
width: 10%;
}
<aside id="sidebar" class="columns columns-24 col-6">#sidebar { @include column(6); }
position: fixed.Верстаю 6 лет (с тех пор, как создаю сайты).
Начиная от «меню» сайта, с вложенностью ul li (когда в CSS присутствуют последовательные конструкции #menu ul li, #menu ul li li, #menu ul li li li — при которых постоянно приходится отменять часть предшествующих стилей), и продолжая стилями параграфов и другими элементами в связке с контекстом.Откройте для себя дочерние селекторы.
Код CSS «с душком»