CSS (Каскадные таблицы стилей) является языком таблицы стилей представления, используемым для описания взгляда и форматирования HTML (Язык разметки гипертекста), XML (Расширяемый язык разметки) документы и элементы SVG включая (но не ограниченный) цвета, расположение, шрифты и анимации. Это также описывает, как элементы должны быть представлены на экране, на бумаге, в речи, или на других медиа.
CSS или Каскадные таблицы стилей, является языком, используемым для управления визуальной презентацией документов, записанных на языке разметки, включая HTML, XML, XHTML, SVG и XUL.
Визуальная презентация HTML была первоначально определена HTML-атрибутами, но HTML 4 удержал от использования эти атрибуты, поскольку CSS был представлен для разделения управления визуальной презентации от содержания. В октябре 1994 Håkon Wium Lie сначала предложил Каскадные Таблицы стилей HTML при работе в CERN с сэром Tim Berners-Lee, который разрабатывал веб-браузер и изобретал 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
атрибут)class
атрибут)Селекторы с помощью идентификационного селектора имеют более высокий приоритет, чем селекторы с помощью имен классов, и селекторы с помощью имени класса имеют более высокий приоритет, чем селекторы с помощью имен тега. Это называют селекторным приоритетом. !important
аннотация может использоваться для переопределения селекторного приоритета путем подъема нормального объявления до важного объявления. Каждый раз, когда возможно, однако, более высокая специфика в нормальном объявлении должна использоваться в предпочтении к созданию важного объявления через !important
аннотация, для предотвращения переопределений на любых других стилях, которые, возможно, должны были бы быть добавлены, особенно те, которые впоследствии добавляются с естественным намерением приоритета.
Например:
a { /* any anchor element */ color: orange; } .class1 { /* any element with class name class1 */ color: red; } #anchor1 { /* the element with id 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
, text-transform
, visibility
, white-space
и word-spacing
.background
, border
, display
, float
и clear
, height
, и width
, margin
, min
/max-height
/width
, outline
, overflow
, padding
, position
, text-decoration
, 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, попытайтесь продемонстрировать свой код восстанавливаемым способом с помощью или Стека Отрывки Стека биржи или альтернативно любого редактора онлайн, который позволяет выполнять и совместно использовать код, такой как Мусорное ведро JS, JSFiddle или CodePen (хотя, несомненно, всегда включать соответствующие нормы в вопрос).
Посетитель CSS - Интерактивная игра для приобретения знаний о селекторах CSS.
Следующие в настоящее время имеют очень мало (если таковые имеются) поддержка браузера и являются все еще происходящей работой:
Чат о CSS (и HTML / DOM) с другими пользователями Переполнения стека:
анимации CSS css-calc содержимое файла CSS фильтры CSS плавание CSS сетка CSS модули CSS многостолбцовое расположение CSS позиционный CSS препроцессор CSS селекторы CSS формы CSS специфика CSS спрайты CSS таблицы CSS преобразовывает CSS переходы CSS переменные CSS