Как я могу переопределить информацию о стиле из класса css в теле страницы?

Общее использование

Чтобы загрузить пользовательскую таблицу стилей в тег Joomla __, следующий код можно добавить в файл __ вашего шаблона (__), прямо перед окончанием __ тег, чтобы убедиться, что ваш файл загружен последним.

__

(Файл CSS может иметь любое имя и не обязательно должен быть в подпапке/css /, но так он чище.)

Также можно добавить обычный тег __, но он менее гибок, чем упомянутый выше параметр:

__

Важно!

Некоторые расширения могут загружать свои стили CSS после ваших (или даже добавлять стили непосредственно в файл index.php), переопределяя ваши переопределения. Обычно это можно решить, добавив __ к своим стилям, например. __

Дивы контейнеров

Помните, что <div> не изменяет семантическую структуру страницы. Это делает его отличным инструментом для определения представляемой структуры веб-страницы. Обертывая HTML-элементы в теги <div>, можно создать сайт с помощью более крупных фрагментов, не влияя на то, как поисковые системы просматривают наш контент:

Попробуем создать макет фиксированной ширины с использованием метода автополей. Сначала оберните весь документ в <div> и присвойте ему уникальный класс:

<body>
<div class='page'>  <!-- Добавьте это -->
<h1> Селекторы CSS</h1>
    <p  class='synopsis'>Селекторы CSS позволяют <em>выбрать</em> отдельный HTML-элемент в документе HTML.
       Это <strong>супер</strong> полезно.</p>
    <p>Классы чрезвычайно важны,, так как они позволяют выбрать
       произвольные блоки на странице.</p>
    <p>Мы так же рассмотрим в этом примере ссылки, поэтому вот ссылка
       <a href='https://internetingishard.com'>Interneting Is Hard</a>, для которой нам нужно задать стили.</p>
    <div>Кнопка Один</div>
</div>  <!-- Добавьте это -->
</body>
Затем добавьте следующий код в файл styles.css:
.page {
  width: 600px;
  margin: 0 auto;
}

Независимо от того, как будет изменяться размер окна браузера, веб-страница всегда будет иметь ширину 600 пикселей и выравниваться горизонтально по центру доступного пространства

Обратите внимание, что то же самое мы раньше делали для кнопки, но теперь мы делаем это с несколькими элементами одновременно, вложив их в общий контейнер:

Именно таким образом определяются более сложные макеты веб-страниц. Например, если на нашей странице была бы боковая панель, мы бы вложили все ее элементы в другой <div> с классом .sidebar.

Без CSS селекторов атрибутов классов, которые позволяют дифференцировать элементы <div>, ничего из этого не было бы возможно.

Псевдо-классы

В отличие от классов, псевдо-классы не нужно указывать в HTML разметке, они сами вычисляются браузером. У нас есть 4 статических псевдо-класса и 3 динамических псевдо-класса, без учёта CSS 3, о нём ближе к концу. К статическим относятся ( :first-child, :link, :visited, : lang() ):

<style>
p:first-child {color: green;} /* сработает, если p является первым ребёнком своего родителя */
</style>
<div>
  <p>Прямой наследник (первый уровень)</p>
  <span>
    <span>
      <p>Третий уровень</p>
    </span>
  </span>
  <p>Прямой наследник (первый уровень)</p>
  <span>
    <p>Второй уровень</p>
  </span>
  <p>Прямой наследник (первый уровень)</p>
</div>

Результат:

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

div>span p:first-child {color: green;} /*сработает, если p является первым ребёнком своего родителя и находится внутри тега span, который является прямым потомком тега div */

Название представленного выше псевдо-класса говорит само за себя first-child — первый ребёнок.

Следующие два статических псевдо-класса применяются только к тегу гиперссылки (:link, :visited), они применяют CSS свойства в зависимости от того, посещалась данная ссылка конкретным пользователем или нет:

a:link {color: blue;} /* у не посещённых ссылок задаём синий цвет, и по умолчанию они подчёркнуты */
a:visited {color: green; text-decoration: none;} /* у посещённых ссылок текст будет зелёным, убираем подчёркивание */

Псевдо-класс :lang() используется для задания разного стиля оформления в зависимости от языка. В скобочках указывается язык, к которому нужно применить оформление. Это можно использовать, например, для задания разных стилей кавычек в цитатах:

q:lang(de) {quotes: "\201E" "\201C";} /* кавычки для немецкого языка */
q:lang(en) {quotes: "\201C" "\201D";} /* кавычки для английского языка */
q:lang(ru) {quotes: "\00AB" "\00BB";} /* кавычки для русского языка */

Это, пожалуй, единственный из всех возможных видов селекторов, который я никогда не использовал.

Ка устроена шаблонизация в Joomla?

Давайте сначала разберем, как устроена шаблонизация в joomla. Я объясню в общих чертах, но так, чтобы вам стало понятно о каких шаблонах я веду речь. Все мы знаем, что у сайта есть шаблон, который мы можем изменить на любой, какой захотим. Так вот в данном шаблоне могут содержаться как бы под-шаблоны, а именно шаблоны расширений. Представьте, вы хотите изменить стиль вывода, к примеру, какого либо модуля, возьмем, модуль вывода последних материалов

Модуль может быть как родным встроенным, так и сторонним, в принципе не важно, суть одна. Представьте нам нужно поменять местами заголовок статьи и картинку анонса, т.е

было — сначала идет заголовок статьи, потом под ним картинка, потом дата, потом текст и т.д. А нам дизайнер нарисовал так — картинка выше, а заголовок ниже. Как мы будем менять? Вот тут самое интересное… Многие разработчики, не задумываются о том, что joomla это быстроразвивающаяся система, которой свойственно частое обновление. Но многие разработчики находят эти самые строчки в файлах модуля и меняют их как им нужно. А разве так нельзя? Почему, можно, только после обновления модуля или движка, если это родной модуль — плакали ваши изменения и все ваши труды уйдут в никуда. Т.е., измененные файлы просто затрутся при обновлении. Так вот, разработчики предусмотрели это и придумали систему шаблонизации и на мой взгляд это очень правильный и удобный подход.

Так каким же образом происходит переопределение шаблонов? Joomla, как и большинство современных движков работает по модели MVC — модель, вид, контроллер. Не буду сейчас углубляться, но скажу, что данная модель предусматривает отделение логики от шаблона. Так вот, как раз данный шаблон и выносится в главный шаблон joomla. Joomla так устроена, что если в главном шаблоне сайта в папке «html» не будут найдены шаблоны расширений, то она выведет их из ядра. Чтобы было понятно приведу один пример.

Возьмем стандартный компонент com_content — это компонент статьи joomla. Попробуем переопределить вид избранных статей. Выведем их, к примеру, на главной странице. Для этого нам необходимо вынести шаблон вывода избранных статей компонента в главный шаблон joomla. Для этого создаем в корне главного шаблона сайта папку html, далее в ней папку «com_content», далее в ней папку «featured» (избранные материалы), т.е. путь будет примерно следующим — /templates/ваш шаблон/html/com_content/featured. Теперь идем по следующему пути — /components/com_content/views/featured/tmpl/ и копируем файлы default.php, default_links.php и default_item.php в созданную папку «featured» вашего шаблона. Теперь редактируете данные файлы так, как нам нам необходимо. Изменения сразу же сможете увидеть на сайте. Теперь при обновлении joomla ваши изменения останутся нетронутыми.

Таким образом можно переопределить шаблон вывода практически любого компонента или модуля, как встроенных, так и сторонних. У плагинов шаблонов нет. Переопределение шаблонов может показаться с одной стороны рутиной — создавать папки в определенной последовательности, если что то неправильно сделаем шаблоны работать не будут. В последних версиях joomla, начиная с joomla 3.2 появилась возможность создавать переопределения автоматически прямо из админки сайта. Для этого идем в Расширения -> Менеджер шаблонов -> в списке шаблонов напротив используемого шаблона в колонке «Шаблон» жмем по названию шаблона и попадаем в редактор шаблона.

Далее, переходим на вкладку «Создать переопределение» и перед нами откроется три столбца списка расширений для которых доступно переопределение: модули, компоненты и макеты.

Теперь достаточно щелкнуть по интересующему расширению и переопределения автоматически создадутся в папке выбранного шаблона. На мой взгляд это очень упрощает жизнь, т.к. не надо париться какие папки создавать, что куда вкладывать и т.д.

Также, помимо шаблонов компонентов и модулей мы можем переопределить вид макетов. Что такое макеты? Например, нам надо изменить шаблон постраничной навигации. Для этого достаточно в админке создать шаблон макета «Pagination» и изменить его так, как нужно. Макеты — это новинка, которая появилась в joomla 3.

Типы CSS Reset (скачать можно по ссылкам в статье)

Начиная с далекого 2004, когда появились первые подобные наработки, сейчас есть достаточно много методов, отличающихся по сложности и своей специфике. По сути, существует 3 цели, которые пытается решить сброс стилей CSS:

  1. Исправление ошибок в user agent stylesheet.
  2. Отмена нестандартного оригинального оформления в интернет-браузерах.
  3. Создание универсальной совместимой базы стилей.

Есть варианты, решающие все три задачи и те, которые заточены только под одну конкретную проблему.

Коррекция/исправление ошибок

Рассмотрим первую из целей, озвученных выше. Как вы уже поняли, ликвидация разных недочетов и косяков броузеров наиболее актуальна для поддержки устаревших релизов. Один из хороших примеров такой ситуации — когда после появления HTML5 тот же Internet Explorer 9 не применил корректный тип display к новым объектам.

Поэтому в решениях по типу Normalize.css все ошибки учтены и обработаны:

/**
 * Add the correct display in IE.
 */
main {
  display block;
}

Поскольку эти действия нужны только для старого софта, есть смысл использовать постпроцессор PostCSS такой как PostCSS Normalize совместно с Browserlist дабы добавлять их только, когда вам требуется реализовать поддержку определенных браузеров.

Другой пример кода от Pure CSS, который подходит в том числе и к современным веб-программам — исправление display элементов и атрибутом hidden.

hidden {
    display none !important; // One of the good use cases of !important
}

Убираем своеобразные стили браузеров

Это вторая причина сброса настроек CSS. В принципе, у каждого свое мнение относительно того какое оформление в user-agent stylesheet считать «своеобразным». Определение автора оригинальной заметки достаточно логичное: это такой стиль, который не является «голой» версией отображения элемента. Например, добавление отступов для заголовков в 2em (как это делают многие), идея не плохая, но почему именно 2em, а не 3em или не 4em. В таком случае базовым вариантом было бы отсутствие какого-либо отступа, то есть нулевой margin.

Самый простой универсальный подход, удаляющий отступы/поля тегов:

* {
    margin ;
    padding ;
}

Данный метод слишком радикальный, т.к. применяется ко всем объектам, даже тем, где вы не ожидаете (в том же input). В качестве альтернативы чаще используется Eric Meyer Reset CSS, который убирает параметры margin/padding, границы и размер шрифта (в 0 или none) там, где это логически оправдано:

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin ;
	padding ;
	border ;
	font-size 100%;
	font inherit;
	vertical-align baseline;
}

Переопределение стилей

В отличии от предыдущего раздела, здесь основная задача не обнуление CSS у тех или иных объектов, а переопределение их собственными актуальными значениями.

Например, вместо установки всем шрифтам размера 1em и margins = 0 в Sanitize.css задаются другие величины:

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
 
h1 {
  font-size 2em;
  margin 0.67em ;
}

В Bootstrap’s Reboot найдете еще одну иллюстрацию текущей задачи. Разработчики пошли чуть дальше и прописали шрифты и цвет фона для body.

// Body
//
// 1. Remove the margin in all browsers.
// 2. As a best practice, apply a default `background-color`.
// 3. Set an explicit initial text-align value so that we can later use the
//    the `inherit` value on things like `<th>` elements.
 
body {
  margin ; // 1
  font-family $font-family-base;
  font-size $font-size-base;
  font-weight $font-weight-base;
  line-height $line-height-base;
  color $body-color;
  text-align left; // 3
  background-color $body-bg; // 2
}

Использование в разных рамках

Теперь самое интересное: во многих шаблонных фреймворках есть вероятность того, что пользователи захотят внести изменения в свои шаблоны, тем самым добавив простой способ включения ваших переопределений CSS. Вот некоторые из используемых методов:

RocketTheme Gantry 4

Шаблоны RocketTheme работают на основе Gantry Framework, и пользовательский файл CSS будет загружен автоматически, если он найден. Файл CSS должен быть помещен в папку __, а имя must be __.

Пример: Если вы используете их бесплатный шаблон __, каталог шаблонов по умолчанию — __

Добавьте файл с именем __ (осторожно с подчеркиванием и дефисом) в подпапку/css /, и он будет автоматически загружен платформой Gantry

Форма 5

Шаблоны Shape 5 поставляются с пустым файлом __ в подкаталоге/css/вашего шаблона. Просто добавьте ваши стили в этот файл, и они будут включены в ваш макет.

Gavick Pro

Шаблоны Gavick Pro поставляются с пустым файлом __ в подкаталоге/css /

Но обратите внимание, что этот файл не загружается по умолчанию, вам нужно активировать __ на вкладке «Дополнительные настройки» в настройках шаблона

Joomla Shine

Создайте пользовательский файл CSS в подпапке/css/вашего шаблона, например. __ и укажите имя файла в .

T3 Framework

Шаблоны, основанные на T3 Framework, могут включать/не включать файл __ в подпапке/css/вашего шаблона (просто создайте его, если его там нет), но при его наличии файл будет загружен после любого другого CSS файл.

Warp Framework

Шаблоны, основанные на Warp Framework, автоматически загружают файл __, находящийся в подпапке/css /. Дополнительные файлы CSS можно загрузить, добавив

__

Что такое css-стили

CSS – (каскадные таблицы стилей) язык, используемый для оформления внешнего вида html-страницы. Любой элемент сайта имеет свои css-правила, записанные в отдельном файле (таблице стилей) и задающие внешний вид этого элемента.

На моем блоге есть серия статей, где я учу индивидуально оформлять те или иные элементы блога:

  • Внешний вид цитат в WordPress
  • Оформление подписки Feedburner
  • Настройка формы поиска
  • Красивая форма обратной связи

Пришло время рассказать о css-стилях подробнее, чтобы вы могли самостоятельно оформить любой элемент своего сайта (заголовки, виджеты сайдбара, элементы шапки и футера). А имея чуть больше опыта работы со стилями, можно даже создать свою WordPress-тему или преобразить имеющуюся до неузнаваемости.

Стилизация HTML с CSS

CSS означает каскадные таблицы стилей.

CSS описывает, как HTML-элементы должны отображаться на экране, бумаге или на других носителях.

CSS экономит много работы. Он может контролировать расположение нескольких веб-страниц все сразу.

CSS можно добавлять к элементам HTML тремя способами:

  • Встроенный — с помощью атрибута Style в элементах HTML
  • Internal -с помощью элемента в разделе
  • Внешний — с помощью внешнего CSS-файла

Наиболее распространенным способом добавления CSS является сохранение стилей в отдельных CSS-файлах. Однако, здесь мы будем использовать встроенный и внутренний стиль, потому что это легче продемонстрировать, и проще для вас, чтобы попробовать его самостоятельно.

Совет: Вы можете узнать больше о CSS в нашем учебнике по CSS.

Редактирование CSS в WordPress

Теперь разберемся с тем, как же определить, какие изменения вносить в стиль вашего блога.

Для этого нам нужно вспомнить дополнение FireBug для FireFox. В статье про данное расширение описано, как находить элементы кода, которые отвечают за ту, или иную деталь сайта. Далее вы можете скопировать отрывок кода данного элемента и вставить его в файл css-стилей (далее я расскажу, как редактировать файл дочерней темы или поле изменения стилей, созданное плагином). Таким образом, мы сохраняем протестированные в Файербаге изменения.

Задаются стили в WordPress, как и на любых других типах сайтов, с помощью стандартной модели: селектор {свойство: значение;}.

Разберем, как это делается на примере селектора «socials», который отвечает за отображение социальных кнопок:

1
2
3
4
5
6
7
8
.socials {
    border-bottom 2px solid #f0f3f4;
    border-top 2px solid #dee1e2;
    height 30px;
    margin-bottom 10px;
    padding 5px 5px  ;
    position relative;
}

Свойство border-bottom отвечает за стиль нижней границы, а прописанные после двоеточия значения определяют ее толщину (2 пикселя), тип (solid – сплошной), цвет (#f0f3f4).

Соответственно border-top – верхняя граница с подобными значениями, height – высота элемента, margin-bottom – нижний отступ, padding – поля вокруг элемента, position – положение элемента.

Вы сможете найти развернутые описания свойств и их значений на специализированных сайтах по CSS, а мы разберем самые основные и часто используемые из них. 

Свойство «Шрифт» (Font)

font-size — размер шрифта в пикселях, процентах и т.д., например, font-size: 12 px;

font-family – название шрифта (Calibri, Tahoma  и т.д.);

font-weight – насыщенность: жирный (bold), нормальный (normal) или значения от 100 до 900;

font-style – стиль шрифта: курсив, нормальный, наклонный (normal, italic, oblique);

font – свойство, которое задает сразу ряд характеристик, например,

p { font: italic 110% tahoma; }

width – ширина элемента в пикселях, процентах, пунктах и т.д.;

height – высота элемента.

Свойства текста

text-align – горизонтальное выравнивание: по центру, по левому или правому краю, по ширине и т.д.;

text-align: left;

vertical-align – выравнивание по вертикали;

line-height – высота строки в пикселях, процентах, пунктах;

color – цвет текста элемента задается с помощью названия (red, green, black и проч.) или посредством шестнадцатеричной системы, где используются числа от 0 до 9 и латинские буквы от A до F, обозначающие числа от 10 до 15 (color: #dee1e2;). Для определения цветов есть множество специальных программок и онлайн сервисов. Я использую для этого фотошоп.

Свойство Background (Фон)

background– универсальное свойство фона страницы, где можно указывать до пяти значений, например, цвет, фоновое изображение и т.д.

Соответственно, background-color– это отдельно только цвет фона, background-image– изображение, где значением служит путь к файлу:

background-image: url (‘images/test.gif’).

Свойство «Граница» (Border)

border – мы уже разбирали на примере выше, это свойство границы.

Соответственно если через дефис прибавить top, bottom, right, left (например, border-top), то это будет верхняя, нижняя, правая или левая граница.

Отступы (Margin)

margin – величина отступа со всех сторон. По аналогии с border, можно описывать отдельно top, bottom, right, left (margin-right).

Поля (Padding)

padding – поле вокруг элемента (сверху, справа, снизу и слева);

Отдельные поля по аналогии с margin и border (top и т.д.).

Конечно, это далеко не полное пособие по редактированию CSS на WordPress-блоге, но регулярно работая с файлами стилей, используя справочные материалы с названиями свойств и их значениями, вы достаточно быстро научитесь разбираться со стилями вашего блога.

Импорт CSS

В текущую стилевую таблицу можно импортировать содержимое CSS-файла с помощью
команды @import. Этот метод допускается использовать
совместно со связанными или глобальными стилями, но никак не с внутренними
стилями. Общий синтаксис следующий.

После ключевого слова @import указывается путь
к стилевому файлу одним из двух приведенных способов — с помощью url или без него. В примере 3.6 показано,
как можно импортировать стиль из внешнего файла в таблицу глобальных стилей.

Пример 3.6. Импорт CSS

HTML5CSS 2.1IECrOpSaFx

В данном примере показано подключение файла header.css,
который расположен в папке style.

Аналогично происходит импорт и в файле со стилем, который затем подключается
к документу (пример 3.7).

Пример 3.7. Импорт в таблице связанных стилей

В данном примере показано содержимое файла mysite.css,
который добавляется к нужным документам способом, показанным в примере 3.1,
а именно с помощью тега <link>.

Когда используется class, а когда id?

ID используется для отдельных элементов, которые встречаются на странице только один раз. Например, заголовок, подвал, меню и т. д. Селектор class используется для одного или нескольких элементов, которые встречаются на странице несколько раз. Например, абзацы, ссылки, кнопки, элементы ввода. И хотя вы можете использовать class для отдельного элемента, но лучше использовать эти селекторы по назначению.

Также следует учитывать, что у HTML-элемента может быть указан и id, и class. Предположим, что на странице имеется два блока с одинаковым размером и стилизацией, но с разным позиционированием. В таком случае можно применить один и тот же класс к этим блокам для изменения размеров и стилизации, а затем использовать отдельный ID-селектор к каждому блоку, чтобы задать им разное позиционирование.

Элементы также можно привязывать одновременно к нескольким классам. Это очень удобно, когда нужно применить стилизацию к отдельной группе элементов определенного типа. Например, имеется класс .content, который применен ко всем абзацам. Если нужно будет добавить границу или любую другую стилизацию к нескольким отдельным абзацам, то можно сделать это при помощи дополнительного CSS p class .bordered:

<p class="content">Этот пункт не имеет границ.</p>
<p class="content bordered">Этот пункт имеет границы.</p>

Обратите внимание на пустое пространство между двумя именами классов в атрибуте class второго абзаца. Ниже приведен пример CSS-кода:

.content { margin: 10px; font-size: 15px; color: blue }
.bordered { border: 2px solid #222 }

Важно правильно применять id и CSS class, так как их неправильное использование может привести к ошибкам в отображении HTML-кода. Пожалуйста, оставьте свои мнения по текущей теме статьи

Мы крайне благодарны вам за ваши комментарии, дизлайки, лайки, подписки, отклики!

Пожалуйста, оставьте свои мнения по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, дизлайки, лайки, подписки, отклики!

Валентин Сейидовавтор-переводчик статьи «CSS Class vs ID: Which One to Use»

Фрагменты URL-адресов

Атрибуты id должны быть уникальными, поскольку на них указывают «фрагменты URL-адресов». Фрагменты — это элементы, с помощью которых можно указать пользователям на определенную часть веб-страницы. Они выглядят как селекторы идентификаторов, расположенные в конце URL-адреса:

Например, если мы хотим указать пользователю на вторую кнопку, можно использовать следующий код

Обратите внимание, что можно полностью опустить URL-адрес, если он указывает на другой раздел той же веб-страницы:

<!-- С той же страницы -->
<a href='#button-2'>Go to Button Two</a>
<!-- С другой страницы -->
<a href='selectors.html#button-2'>Go to Button Two</a>

Если вы добавите первый вариант ссылки в разметку страницы selectors.html и кликните по ней, то увидите, что данный URL-адрес значится в адресной строке браузера. Чтобы увидеть, как осуществляется переход ко второй кнопке, нужно добавить на страницу немного произвольного контента или сделать высоту окна маленькой:

Этот пересекающийся функционал является веской причиной для того, чтобы избегать использования идентификаторов. Они создают зависимость между URL-адресами сайта и стилями CSS. Представьте, что вы используете в заголовках кучу атрибутов id в качестве как фрагментов URL-адресов, так и идентификаторов. Если вы забудете обновить таблицу стилей, когда отредактируете URL-адрес, то сломаете свой сайт.

Какой стиль выбирается первым если их несколько в CSS?

Cascading Style Sheets, ни что иное, как каскадная таблица стилей. Одна из частей этого механизма, это возможность задавать несколько стилей для одного HTML элемента.

Почему я написал правило, а оно не применилось в CSS? Ответ всё тот-же — приоритет. Разберемся при помощи простой таблицы, какие стили получит элемент и почему:

Тег, например p: 1
Класс, например .class: 10
ID, например #main: 100
Inline-стиль, например style=»font-size: 16px;»: 1000

Давайте рассмотрим на примере, чтобы было более понятней:

div id="main" class="wrap"

и напишем такие стили:

.wrap {
  font-size: 14px;
}
#main {
  font-size: 16px;
}
div {
  font-size: 13px;
}

Как вы думаете какой стиль будет применен? Правильный ответ — #main. Давайте теперь напишем другие стили:

div.wrap {
  font-size: 15px;
}
.wrap {
  font-size: 20px;
}

Правильный ответ — div.wrap. Почему так? Тег по «весу» у нас 1, класс 10, итого 11. 11 > 10, а значит у этого правила выше приоритет.

Получается, каждое правило в вашей таблице стилей имеет свой «числовой вес», который считается как сумма за каждый отдельный селектор.

Поэтому, если ваше правило состоит из очень многих «родительских и дочерних элементов», то вовсе не удивительно, что указав один лишь класс вы не сможете перекрыть стили.

К примеру, пред. разработчик написал такой стиль

#contact ul.header-nav li.header-list a.header-link {}

суммарно это 133, а такое число попробуй еще перебить .

Не переусердствуйте

Можно вложить CSS селектор потомков настолько глубоко, насколько нужно, но не увлекайтесь. Все становится запутанно, когда вы начинаете писать правила, которые выглядят так:

/* Старайтесь избегать такого */
.article h2 .subheading em {
  /* Конкретные стили */
}

Эти стили нельзя будет повторно использовать, поскольку они соответствуют только следующей структуре HTML:

<div class='article'>
  <h2>
    <span class='.subheading'>Это <em>на самом деле</em> особенный текст.</span>
  </h2>
</div>

Если захотите применить эти стили к заголовку <h2>, который не был обернут в тег <div class = ‘article’>, придется здорово поломать голову. Та же ситуация, если вы захотите применить их к заголовку <h3>.

Специфика CSS

Вышеперечисленные селекторы могут применяться одновременно, так что нужно быть осторожными, определяя стили, которые могут быть применены к одному и тому же полю ввода. Представим:

input:invalid { color: red; }
input:enabled { color: black; }

Здесь мы указываем, что в поле с ошибкой текст должен быть красного цвета, но этого никогда не произойдет, потому, что после этого правила мы задали еще одно, где указали, что у включенных элементов текст черного цвета.

Старайтесь использовать простые селекторы, и использовать минимум кода. Например, пустое обязательное (:required) поле будет невалидным (:invalid), так что редко когда нужно стилизовать первое состояние.

CSS 3 псевдо-классы

Вы уже ознакомились со всеми основными селекторами и вам на первых парах этого должно хватить с горкой. Однако в CSS 3 появилось множество новых псевдо-классов, теперь мы можем брать не только первого ребёнка, но и любого другого по счёту, можем идти от обратного, брать не первого, а последнего ребёнка и так далее и тому подобное. Всё это очень удобно и практично, разве что у вас могут возникнуть проблемы со старыми версиями IE. Давайте соберём все силы в кулак и пробежимся по всем оставшимся селекторам, чтобы потом уже вы могли иметь их ввиду при вёрстке собственного макета.

:last-child – аналог :first-child, только берёт не первого, а последнего ребёнка.

:only-child – сработает, если элемент (тег) является единственным ребёнком.

:only-of-type — сработает, если элемент (тег) является единственным ребёнком своего типа.

:nth-child() – обращается к потомкам по их порядковым номерам, можно обращаться ко всем чётным или нечётным (even или odd) числам. Например:

<style>
div p:nth-child(5) {background-color: green;} /* Обращаемся к 5 по счёту ребёнку, если он является тегом p. */
div p:nth-child(2n) {background-color: yellow;} /* Обращаемся к каждому второму ребёнку, если он является тегом p. */
div p:nth-child(2n+6) {background-color: red;} /* Обращаемся к каждому второму ребёнку начиная с шестого, если он является тегом p. */
</style>
<div>
<p>параграф</p>
<p>параграф</p>
<p>параграф</p>
<span>текст в спане</span>
<p>параграф</p>
<p>параграф</p>
<p>параграф</p>
<p>параграф</p>
<p>параграф</p>
<p>параграф</p>
</div>

Результат:

:nth-last-child – работает также как и предыдущий, но отчёт начинается с конца.

:first-of-type – первый ребёнок своего типа в рамках прямого родителя.

:last-of-type – последний ребёнок своего типа в рамках прямого родителя.

:empty – сработает для тех тегов, внутри которых нет ни одного символа (без текста).

:not() – делает исключение для заданных элементов. Пример:

<style>
p:not(.roll) {color: red;} /* для всех параграфов на странице делаем красный цвет текста, за исключением параграфов с классом roll */
</style>
<p class="roll">параграф с классом roll</p>
<p>параграф</p>
<p>параграф</p>
<p class="roll">параграф с классом roll</p>

Результат:

Вопросы для проверки

1. Сайт имеет более ста HTML-документов, имеющих одинаковое стилевое оформление. Какой способ подключения CSS подходит лучше всего?

  1. Связанные стили.
  2. Глобальные стили.
  3. Блочные стили.
  4. Внутренние стили.
  5. Экспорт стиля.

2. В данном примере, какой цвет будет у текста на веб-странице?

  1. Чёрный
  2. Красный
  3. Зелёный
  4. Синий
  5. Оливковый

3. Какой HTML-код применяется для подключения внешнего CSS-файла?

  1. <style>mystyle.css</style>
  2. <style>@mystyle.css</style>
  3. <link rel=»stylesheet» href=»mystyle.css»>
  4. <link>@import url(mystyle.css)</link>
  5. <stylesheet>mystyle.css</stylesheet>

4. Какой атрибут используется для определения внутреннего стиля?

  1. style
  2. class
  3. styles
  4. font
  5. link

Итого. Что же выбрать

В оригинальной заметке есть результат соответствующего опроса из твиттера среди фолловеров — какие решения по данной теме они используют чаще всего.

В итоге победил Normalize.css, который комбинирует корректировку разных ошибок веб-браузеров с заданием базовых совместимых правил. Также многие респонденты сказали, что используют собственные наработки.

Что касается мнения автора статьи (Ire Aderinokun, фронтенд и UX девелопер), то она предпочитает скачать Reset CSS Эрика Мейера и немного модифицировать его под себя. Причины тут две:

  • во-первых, удобно работать с максимально пустым списком директив, постепенно добавляя свои собственные;
  • во-вторых, она сторонник задания отступов в одном направлении (вниз), в то время как многие ресеты не следуют этому принципу.

P.S. Что касается меня, то во многих шаблонах я чаще всего сталкивался с решением от Normalize.css. Если вы работаете с Bootstrap, то, как понимаю, ничего дополнительно придумывать не придется, там есть свой файл сброса стилей CSS. Если честно, не особо часто приходится верстать с нуля но для общего развития мне было интересно об этом почитать. Надеюсь, вам тоже;)

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: