CSS (каскадные таблицы стилей) - это язык таблиц стилей представления, используемый для описания внешнего вида и форматирования документов HTML (язык разметки гипертекста), XML (расширяемый язык разметки) и элементов SVG, включая (но не ограничиваясь) цвета, макет, шрифты, и анимации. Также описывается, как элементы должны отображаться на экране, на бумаге, в речи или на других носителях.
CSSили каскадные таблицы стилей - это язык, используемый для управления визуальным представлением документов, написанных в разметке. язык, включая HTML, XML, XHTML, SVG и XUL.
Визуальное представление HTML изначально определялось атрибутами HTML, но в HTML 4 эти атрибуты устарели, так как CSS был введен для отделения контроля визуального представления от контента. В октябре 1994 года Хокон Вьюм Ливпервые предложил Каскадные таблицы стилей HTMLво время работы в CERN с сэром Тимом Бернерсом-Ли, который разрабатывал веб-браузер и изобретал HTML.
Базовый документ CSS состоит из наборов правил. Каждый набор правил начинается с селектора, шаблона, который соответствует элементам в документе HTML или XML, за которым следует блок из нуля или более объявлений свойств, определяющих представление соответствующих элементов. Селектор практически идентичен селектору, используемому в JavaScript .querySelectorAll
. Например:
/* This is a comment */
a { /* Select all <a> elements (HTML links), */
color: orange; /* change their text color to orange, */
background-color: pink; /* their background color to pink, */
text-decoration: none; /* and remove text decorations like underlines. */
}
a:hover { /* Select all <a> elements which are currently being hovered over with the :hover pseudo-class*/
color: red; /* change the color to red */
text-decoration: underline; /* and add an underline again */
}
Простой пример выше также иллюстрирует каскадный элемент CSS. Когда вы наводите указатель мыши на ссылку (т. Е. На элемент <a>
) в HTML-странице, к которой применена эта таблица стилей, применяются оба правила. Из-за первого правила ссылка будет иметь розовый фон. Но, поскольку селектор a:hover
более специфичен, его свойства color
и text-decoration
переопределяют свойства из набора <a>
правил.
каскадный порядокопределяет, как специфичностьи другие факторы определяют, какое значение свойства применяется к элементу.
Селекторный приоритет и специфичность
Каждый компонент селектора CSS может быть основан на одном или нескольких из четырех возможных атрибутов элемента HTML:
- ID элемента (из атрибута
id
) - Имя одного из классов элемента (в атрибуте
class
) - Имя тега элемента
- Свойства элемента или их значения
Селекторы, использующие селектор идентификатора, имеют более высокий приоритет, чем селекторы, использующие имена классов, а селекторы, использующие имя класса, имеют более высокий приоритет, чем селекторы, использующие имена тегов. Это называется приоритетом селектора. Аннотацию !important
можно использовать для переопределения приоритета селектора путем повышения обычного объявления в важную декларацию. Однако, когда это возможно, более высокую специфичность в обычном объявлении следует использовать вместо создания важного объявления с помощью аннотации !important
, чтобы предотвратить переопределения любых других стилей, которые могут потребоваться добавить, особенно те, которые которые впоследствии добавляются с естественным намерением приоритета.
Например:
/* any anchor element */
a {
color: orange;
}
/* any element with class name class1 */
.class1 {
color: red;
}
/* the element with id anchor1 */
#anchor1 {
color: green;
}
<!-- Creates an anchor with a class of class1 and an ID of anchor1 -->
<a class="class1" id="anchor1">Sample</a>
В приведенном выше примере цвет текста содержимого элемента <a>
, строка «Образец», будет зеленым.
Повторяющиеся вхождения одного и того же селектора также повышают специфичность, как отмечается в Рекомендации по выбору 3-го уровня W3C.
.class1.class1 { /* repeated class selector */
font-weight: bold;
}
.class1 {
font-weight: normal;
}
Здесь повторный селектор имеет более высокую специфичность, чем сингулярный селектор, и font-weight
нашей строки образца будет выделен жирным шрифтом.
Согласно MDN,
Специфичность - это мера того, насколько конкретен селектор - сколько элементов он может сопоставить. [...] селекторы элементов имеют низкую специфичность. Селекторы классов имеют более высокую специфичность, поэтому [классы] выиграют у селекторов элементов. Селекторы идентификаторов имеют более высокую специфичность, поэтому [идентификаторы] будут выигрывать у селекторов классов.
Сложные селекторы могут быть созданы путем объединения нескольких простых. Также возможно стилизовать элементы в зависимости от атрибута:
/* The first <a> element inside a <p> element that's next to an <h3> element
that's a direct child of #sidebar matches this rule */
#sidebar > h3 + p a:first-of-type {
border-bottom: 1px solid #333;
font-style: italic;
}
/* Only <img> elements with the 'alt' attribute match this rule */
img[alt] {
background-color: #F00;
}
Калькулятор специфичности правил CSS доступен здесь. Это может помочь, когда у проекта есть один или несколько больших CSS-файлов.
Наследование
Наследование является ключевой особенностью в CSS.
Наследование - это механизм, с помощью которого свойства применяются не только к указанному элементу, но и к его потомкам. Как правило, элементы-потомки автоматически наследуют свойства, связанные с текстом, но свойства, связанные с полями, не наследуются автоматически.
- Свойства, которые наследуются по умолчанию:
color
,font
,letter-spacing
,line-height
,list-style
,text-align
,text-indent
, { {X7}},visibility
,white-space
иword-spacing
. - Свойства, которые обычно не наследуются:
background
,border
,display
,float
иclear
,height
иwidth
,margin
,min
/max-height
/width
,outline
,overflow
,padding
,position
, {{ X15}},vertical-align
иz-index
.
Стоит отметить, что любое свойство можно наследоватьс помощью inherit
значение свойства. Однако это следует использовать с осторожностью, поскольку Internet Explorer (до версии 7 включительно) не поддерживает это ключевое слово. Например:
/* Set the color of <p> elements to a light blue */
p {
color: #C0FFEE;
}
/* Set the color of #sidebar to a light red */
#sidebar {
color: #C55;
}
/* <p> elements inside #sidebar inherit their parent's color (#C55) */
#sidebar p {
color: inherit;
}
/* You may also override inherited styles using the !important annotation */
#sidebar p:first-of-type {
color: orange !important;
}
Важное замечание:
Для вопросов, связанных с CSS, попробуйте продемонстрировать свой код воспроизводимым способом, используя Stack Snippets Stack Exchangeили любой другой онлайн-редактор, который позволяет запускать и делиться кодом, таким как JS Bin, JSFiddleили CodePen(хотя обязательно включайте в вопрос соответствующий код).
Ссылки
- Справочник по Википедии
- W3C CSS2.1 Спецификация
- Спецификация селекторов W3C CSS3
- Спецификация W3C CSS3 Media Queries
- Домашняя страница каскадных таблиц стилей W3C
- Way2Tutorial CSS Tutorial
- Ссылка на SitePoint CSS
- HTML Dog: учебники по HTML и CSS
- Каскадные таблицы стилей в учебной программе по веб-стандартам
- 30 селекторов CSS, которые вы должны запомнить
- Руководство по доступности веб-контента W3C
- DevDocs - Сервис поиска документации
- Учебные пособия по CSS для W3Schools
- Изучите CSS макеты
- Демонстрация всей комбинации селекторов CSS от w3schools
- CSS-хитрости Альманах - список всех селекторов CSS с примером и объяснением
- Сеть разработки Mozilla - CSS - содержит справочник по CSS, учебные пособия, демонстрационные материалы по CSS3 и ссылки на инструменты разработки
Интерактивный учебник
- CSS Diner- интерактивная игра для изучения CSS-селекторов.
Видеоурок
- Скринкаст CSS CodeSchool- изучите основы и основные элементы CSS с помощью CSS Cross-Country
CSS псевдо-селектор
Проверка
Соглашения об именах и методологии
- Атомная OOBEMITSCSS
- BEM
- SMACSS
- Point North
- ITCSS
- OOCSS
- Название CSS
- идиоматическое - CSS
- Атомный дизайн
- Костюм CSS
- Kickoff CSS
- MaintainableCSS
- NCSS
Поддержка браузера
- MDN: диаграмма поддержки Mozilla CSS
- MSDN: CSS-совместимость и Internet Explorer
- Страницы поддержки веб-спецификаций Opera
- Поддержка Konqueror CSS
- QuirksMode CSS
- Когда я могу использовать ... Таблицы совместимости для CSS3 и более
- Тест селекторов CSS3
- Википедия: Сравнение компоновщиков
CSS препроцессоры
Постпроцессоры CSS
- PostCSSpostcss
- Pleeeasepleeease
- cssnextcssnext
- Autoprefixerautoprefixer
- -prefix - бесплатноprefixfree
- stylelintstylelint
Сбросить таблицы стилей
- Эрик Майер reset.css
- HTML5 Сбросить таблицу стилей
- CSS Wizardry Reset перезапущен
- Normalize.cssnormalize-css
CSS Framework css-frameworks
- 960 Сетка960.gs
- светокопияblueprint-css
- Бульмаbulma
- Cascade Frameworkcascade-framework
- Columnalcolumnal-css-framework
- eFrolic
- Бездонная решеткаgridless-boilerplate
- Gumbygumby-framework
- ШАБЛОН HTML5html5boilerplate
- инуитовinuit.css
- Джит Grid Systemjeet-grid
- JQuery UI CSS Frameworkjquery-ui-css-framework
- Кубэkube-css
- Marmertkitmaxmertkit
- Материализоватьmaterialize
- Metro UI CSSmetro-ui-css
- Чистыйyui-pure-css
- Semantic.gssemantic.gs
- остовskeleton-css-boilerplate
- подразумеваемый
- Попутный ветер CSStailwind-css
- Twitter Bootstraptwitter-bootstrap
- Unsemanticunsemantic-css
- YAMLyaml
- YUI CSS Сеткиyui
- Zurb Foundationzurb-foundation
Будущее
Следующие в настоящее время очень мало (если таковые имеются) поддержка браузера и все еще в стадии разработки:
Комната чата
Поговорите о CSS (и HTML / DOM) с другими пользователями Stack Overflow:
Связанные теги для определенных функций
css-animationscss-calccss-contentcss-filterscss-floatcss-gridcss-modulescss-multicolumn-layoutcss-positioncss-preprocessorcss-selectorscss-shapescss-specificitycss-spritescss-tablescss-transformscss-transitionscss-variables