Введение в CSS, встраивание в HTML
CSS — Cascading Style Sheets (каскадные таблицы стилей) — это средство, позволяющее задавать различные визуальные свойства HTML-тегам.
Официальный сайт разработчиков: http://www.w3.org/TR/CSS21/cover.html.
CSS состоит из правил. Правила представляют из себя название и значение. Разделяются они двоеточием (название правила : значение правила). Никаких кавычек в значениях правил не ставим! Пример:
Но как CSS связать с HTML? Как прописывать стили оформления документа в html-коде? Для этого есть 3 решения:
- Вложение(inline).
- Встраивание(embeding).
- Связывание(linking).
Основа документа — html, а к нему уже применяется css. Именно к документу, сам по себе css ничего не значит.
Метод вложения (inline) CSS
Используется атрибут style. Его можно поставить в любом визуально отображаемом элементе. В style записываются правила css (название правила : значение правила), несколько правил разделены точкой с запятой (; является окончанием правила в css):
Метод встраивания (embeding) CSS
Используется специальный элемент “style”, внутри которого записываются правила css. Внутри style пишем только язык css. Пример:
В этом примере мы прописали правило для элемента “p” абзац. Во 2-й строке мы прописали селектор (к каким тегам будет применяться правило css). Само правило записано в фигурных скобках “< >”.
Элемент “style” ставят только в элементе “head”.
Метод связывания (linking) CSS
Чтобы каждый раз в документ не писать стилевое оформление (не загружать документ), надо в одном месте написать правила css и применять их к разным документам (к неограниченному из количеству).
Для этого все правила css выносим в отдельный текстовый файл. Обычно этому файлу дают расширение .css. И тогда сразу видно, что в нем прописаны стилевые правила. Ни с чем не перепутаешь.
Как же тогда связать этот отдельный css-файл с нашим html-документом? Для этого используем следующий код в разделе head:
Т.е. указываем файл со стилями через гиперссылку на него. Браузер подгружает стилевой файл и применяет правила из него ко всему документу. По сути это работает так же, как и элемент “style”, но только находится в отдельном файле. И мы можем в любом документе поставить ссылку на css-файл. Это очень удобно, т.к. я правлю стили в одном единственном файле; один раз загрузив таблицу стилей, при переходе на следующие страницы браузер больше за этим файлом css не полезет, он достанет его из кэша (типа временного хранилища загруженных файлов). Тем самым я экономлю трафик и ускоряю отображение страницы.
Внимание! Элемент “link” не сработает с одним атрибутом href. Т.к. эта гиперсылка используется для разных целей. Это служебная гиперссылка, которая может указывать на различные типы файлов, которые могут использоваться для разных целей для ваших страниц. Чтобы дать понять браузеру, что это таблица стилей, используется атрибут rel ( rel=”stylesheet”). В нем указывается тип отношения загружаемого документа и нашего основного документа. Теперь браузер понимает, что загружаемый документ — это таблица стилей.
Источник статьи: http://1st-network.ru/prog/css-html
Создание сайтов с нуля — урок 6 — Введение в CSS, способы задания стилей для тегов html
Начнем как обычно с расшифровки новых понятий. CSS это аббревиатура от словосочетания «Cascading Style Sheets», что переводится на русский как « Каскадные Таблицы Стилей ». Но выговаривать каждый раз «Каскадные Таблицы Стилей» довольно долго, поэтому в среде веб-разработчиков принято говорить стили CSS или просто CSS.
Дело в том, что когда-то, до создания CSS, все свойства для тегов задавались прямо внутри этих тегов. Например, чтоб задать какому-либо абзацу красный цвет, нужно было содержимое этого параграфа дополнительно обернуть в тег font, которому задать атрибут color и указать название нужного цвета, т.е. red. Теперь представьте, что в абзаце нужно что-то сделать жирным, что-то курсивом, что-то зачеркнутым, что-то подчеркнутым. Каждое из перечисленных действий – это дополнительные теги с необходимыми атрибутами. В конце концов код страницы становился настолько захламленный и загруженный подобного рода вставками тегов и атрибутов, что разобраться в нем было сложно не только сторонним людям, но и авторам самого проекта.
Создание CSS стало реальным решением данной проблемы и с тех пор в веб-разработке используется следующий принцип разделения задач: при помощи языка разметки HTML строят структуру веб-документа, а при помощи стилей CSS – оформляют его внешний вид , т.е. размеры и параметры отображения любого тега, включая ширину, высоту, отступы, различные цветовые, фоновые и текстовые настройки, и даже позиционирование самих элементов на странице тоже задается через стили CSS.
Как же пользоваться CSS и задавать тегам необходимые стили?
Очень просто. И для этого существует аж целых 3 способа.
Самый простой из них — применить стили CSS к тегу при помощи универсального атрибута style . Напомню, что универсальные атрибуты, это атрибуты, которые можно применять ко всем тегам. Например:
В данном примере при помощи универсального атрибута style каждому из абзацев задан свой цвет. Обратите внимание, что атрибут задан один и тот же, на то он и является универсальным, что его можно задавать абсолютно любому тегу на странице. А вот значение у этого атрибута в каждом случае разное. И сейчас нас как раз интересует, что же является значением этого атрибута. Это и есть задание каких-то свойств тегу p на языке CSS. Синтаксис довольно простой: сначала пишется название свойства, которое мы хотим изменить у тега, потом – двоеточие, далее – значение свойства, и завершается это все знаком точка с запятой. В данном примере слово color является свойством элемента, которое отвечает за цвет текста. После него стоит двоеточие, а далее указаны конкретные цвета, которые мы хотим задать каждому абзацу. Еще раз обращаю ваше внимание на то, что важно помнить о точке с запятой, которую необходимо ставить в конце. Почему это важно. Потмоу что у каждого тега свойств может быть задано сразу несколько.
Такой способ задания стилей называют «инлайновые стили». Но задавать стили таким образом для каждого тега с помощью атрибута style , скажем так, не очень правильно. Во-первых, код становится плохо читаемым, а во-вторых появляется большое количества повторяющегося кода.
Вторым вариантов задания стилей для элементов является использование тега style .
Но когда мы задавали стили инлайновым способом ни у нас, ни у браузера не возникало вопросов относительно того, к какому элементу применятся заданные стили. В том теге, в котором мы их написали, к тому они и применялись. Сейчас же возник вопрос: а как нам задать нужные стили нашим параграфам? Для решения этой задачи в CSS существует такое понятие, как селектор .
Общий синтаксис CSS-правил выглядит так:
Что такое селектор лучше всего понять на примерах: p
В данном случае мы использовали самый простой тип селекторов — селектор по имени тега p . Что произошло? Браузер увидел селектор p , нашел их все на странице и применил ко всем абзацам заданные стили.
Но ведь у нас была задача сделать все абзацы разными цветами, а не одним. Частичным решением проблемы является использование на странице различных тегов. Например, h1 , h2 , …, h6 , blockquote , div и т.д.
Теперь используя разные селекторы имен всем группам элементов можно задать свои свойства.
Но, думаю, вы прекрасно понимаете, что это далеко не лучшее решение, т.к. нам нужно использовать именно теги р, а не какие-либо другие.
Поэтому более лучшим решением будет использование «классов» .
Напомню, что класс — это один из универсальных атрибутов HTML-тегов.
Вся сила и мощь использования CSS – это возможность задания одинаковых свойств для целого ряда однотипных элементов. Представьте, что у вас на странице есть 25 параграфов. Задание им всем красного цвета текста – это написание в CSS буквально одной строчки кода.
А теперь представьте, сколько нужно затратить времени, чтобы 25 раз задать этим параграфам красный цвет при использовании атрибута style . Ориентировочно тоже самое было раньше, до создания CSS, когда все свойства тегам задавались приблизительно таким же способом – каждому тегу отдельно.
Теперь я покажу третий, самый наилучший и самый распространенный способ использование стилей CSS – при помощи подключаемого внешнего файла с помощью тега link .
Общий смысл заключается в том, чтобы вынести все правила CSS из html-документа в отдельный файл .
Делается это с помощью специального тега link , который необходимо писать в теге head .
При этом, в теге link должны быть 2 обязательных атрибута. Одним из них, естественно, должен задаваться путь к файлу CSS, который мы хотим подключить к данному документу html. Задается он в атрибуте href .
Вторым должен быть атрибут rel со значением stylesheet т.к. тег link может использоваться для многих абсолютно разных целей. Этим мы говорим браузеру, что тип подключаемой ссылки – ссылка на таблицу стилей.
Теперь, после подключения файла CSS нам остается лишь перенести в него все написанные правила из тега style , ну и при необходимости – дополнить другими правилами.
Еще хочу отметить важность фигурных скобок как группирующих элементов, а также важность наличия закрывающей скобки, иначе код перестанем работать.
Итак, подытоживая сегодняшний урок, еще раз хочу отметить, что язык CSS состоит из селекторов и набора свойств для каждого из них.
При помощи селекторов происходит выборка нужных тегов, а при помощи свойств CSS мы можем отобранные теги форматировать.
CSS-свойств существует очень много, некоторые из них можно применять для любых тегов, некоторые – являются более специфичными и применяются лишь к какому-то конкретному.
В завершении хочу отметить, что из трех показанных методов задания CSS-свойств для тегов лучше всего использовать третий, т.е. выносить все стили в отдельный файл и подключать его к документу html.
2.1. Основы CSS
CSS (Cascading Style Sheets) — язык таблиц стилей, который позволяет прикреплять стиль (например, шрифты и цвет) к структурированным документам (например, документам HTML и приложениям XML). Обычно CSS-стили используются для создания и изменения стиля элементов веб-страниц и пользовательских интерфейсов, написанных на языках HTML и XHTML, но также могут быть применены к любому виду XML-документа, в том числе XML, SVG и XUL. Отделяя стиль представления документов от содержимого документов, CSS упрощает создание веб-страниц и обслуживание сайтов.
CSS поддерживает таблицы стилей для конкретных носителей, поэтому авторы могут адаптировать представление своих документов к визуальным браузерам, слуховым устройствам, принтерам, брайлевским устройствам, карманным устройствам и т.д.
Каскадные таблицы стилей описывают правила форматирования элементов с помощью свойств и допустимых значений этих свойств. Для каждого элемента можно использовать ограниченный набор свойств, остальные свойства не будут оказывать на него никакого влияния.
Объявление стиля состоит из двух частей: селектора и объявления. В HTML имена элементов нечувствительны к регистру, поэтому «h1» работает так же, как и «H1». Объявление состоит из двух частей: имя свойства (например, color ) и значение свойства ( grey ). Селектор сообщает браузеру, какой именно элемент форматировать, а в блоке объявления (код в фигурных скобках) перечисляются форматирующие команды — свойства и их значения.
Рис. 1. Структура объявления
Хотя приведенный пример пытается влиять только на пару свойств, необходимых для рендеринга HTML-документа, он сам по себе квалифицируется как таблица стилей. В сочетании с другими таблицами стилей (одна фундаментальная особенность CSS заключается в том, что таблицы стилей объединяются), правило будет определять окончательное представление документа.
Виды каскадных таблиц стилей и их специфика
1. Виды таблиц стилей
1.1. Внешняя таблица стилей
Внешняя таблица стилей представляет собой текстовый файл с расширением .css , в котором находится набор CSS-стилей элементов. Файл создаётся в редакторе кода, так же как и HTML-страница. Внутри файла могут содержатся только стили, без HTML-разметки. Внешняя таблица стилей подключается к веб-странице с помощью тега
, расположенного внутри раздела . Такие стили работают для всех страниц сайта.
К каждой веб-странице можно присоединить несколько таблиц стилей, добавляя последовательно несколько тегов
, указав в атрибуте тега media назначение данной таблицы стилей. rel=»stylesheet» указывает тип ссылки (ссылка на таблицу стилей).
Атрибут type=»text/css» не является обязательным по стандарту HTML5, поэтому его можно не указывать. Если атрибут отсутствует, по умолчанию используется значение type=»text/css» .
1.2. Внутренние стили
Внутренние стили встраиваются в раздел HTML-документа и определяются внутри тега . Внутренние стили имеют приоритет над внешними, но уступают встроенным стилям (заданным через атрибут style ).
1.3. Встроенные стили
Когда мы пишем встроенные стили, мы пишем CSS-код в HTML-файл, непосредственно внутри тега элемента с помощью атрибута style :
Такие стили действуют только на тот элемент, для которого они заданы.
1.4. Правило @import
Правило @import позволяет загружать внешние таблицы стилей. Чтобы директива @import работала, она должна располагаться в таблице стилей (внешней или внутренней) перед всеми остальными правилами:
Правило @import также используется для подключения веб-шрифтов:
2. Виды селекторов
Селекторы представляют структуру веб-страницы. С их помощью создаются правила для форматирования элементов веб-страницы. Селекторами могут быть элементы, их классы и идентификаторы, а также псевдоклассы и псевдоэлементы.
2.1. Универсальный селектор
Соответствует любому HTML-элементу. Например, *
2.2. Селектор элемента
Селекторы элементов позволяют форматировать все элементы данного типа на всех страницах сайта. Например, h1
2.3. Селектор класса
Селекторы класса позволяют задавать стили для одного и более элементов с одинаковым именем класса, размещенных в разных местах страницы или на разных страницах сайта. Например, для создания заголовка с классом headline необходимо добавить атрибут class со значением headline в открывающий тег
и задать стиль для указанного класса. Стили, созданные с помощью класса, можно применять к другим элементам, не обязательно данного типа.
Если элемент имеет несколько атрибутов класса, их значения объединяются с пробелами.
2.4. Селектор идентификатора
Селектор идентификатора позволяет форматировать один конкретный элемент. Значение id должно быть уникальным, на одной странице может встречаться только один раз и должно содержать хотя бы один символ. Значение не должно содержать пробелов.
Нет никаких других ограничений на то, какую форму может принимать id , в частности, идентификаторы могут состоять только из цифр, начинаться с цифры, начинаться с подчеркивания, состоять только из знаков препинания и т. д.
Уникальный идентификатор элемента может использоваться для различных целей, в частности, как способ ссылки на конкретные части документа с использованием идентификаторов фрагментов, как способ нацеливания на элемент при создании сценариев и как способ стилизации конкретного элемента из CSS.
2.5. Селектор потомка
Селекторы потомков применяют стили к элементам, расположенным внутри элемента-контейнера. Например, ul li
Если нужно отформатировать потомки определенного элемента, этому элементу нужно задать стилевой класс:
p.first a
p .first a
.first a
2.6. Дочерний селектор
Дочерний элемент является прямым потомком содержащего его элемента. У одного элемента может быть несколько дочерних элементов, а родительский элемент у каждого элемента может быть только один. Дочерний селектор позволяет применить стили только если дочерний элемент идёт сразу за родительским элементом и между ними нет других элементов, то есть дочерний элемент больше ни во что не вложен.
Например, p > strong — выберет все элементы strong , являющиеся дочерними по отношению к элементу p .
2.7. Сестринский селектор
Сестринские отношения возникают между элементами, имеющими общего родителя. Селекторы сестринских элементов позволяют выбрать элементы из группы элементов одного уровня.
h1 + p — выберет все первые абзацы, идущие непосредственно за любым тегом
, не затрагивая остальные абзацы;
p — выберет все абзацы, являющиеся сестринскими по отношению к любому заголовку h1 и идущие сразу после него.
2.8. Селектор атрибута
Селекторы атрибутов выбирают элементы на основе имени атрибута или значения атрибута:
селектор[атрибут] — элементы данного типа, содержащие указанный атрибут, img[alt] — только картинки, для которых задан атрибут alt ;
селектор[атрибут=»значение»] — элементы данного типа, содержащие указанный атрибут с конкретным значением, img[title=»flower»] — все картинки, название которых содержит слово flower ;
=»значение»] — элементы частично содержащие данное значение, например, если для элемента задано несколько классов через пробел, p[class
=»feature»] — абзацы, имя класса которых содержит feature ;
селектор[атрибут|=»значение»] — элементы, список значений атрибута которых начинается с указанного слова, p[class|=»feature»] — абзацы, имя класса которых feature или начинается на feature ;
селектор[атрибут^=»значение»] — элементы, значение атрибута которых начинается с указанного значения, a[href^=»http://»] — все ссылки, начинающиеся на http:// ;
селектор[атрибут$=»значение»] — элементы, значение атрибута которых заканчивается указанным значением, img[src$=».png»] — все картинки в формате png ;
селектор[атрибут*=»значение»] — элементы, значение атрибута которых содержит в любом месте указанное слово, a[href*=»book»] — все ссылки, название которых содержит book .
2.9. Селектор псевдокласса
Псевдоклассы — это классы, фактически не прикрепленные к HTML-тегам. Они позволяют применить CSS-правила к элементам при совершении события или подчиняющимся определенному правилу. Псевдоклассы характеризуют элементы со следующими свойствами:
:link — не посещенная ссылка;
:visited — посещенная ссылка;
:hover — любой элемент, по которому проводят курсором мыши;
:focus — интерактивный элемент, к которому перешли с помощью клавиатуры или активировали посредством мыши;
:active — элемент, который был активизирован пользователем;
:valid — поля формы, содержимое которых прошло проверку в браузере на соответствие указанному типу данных;
:invalid — поля формы, содержимое которых не соответствует указанному типу данных;
:enabled — все активные поля форм;
:disabled — заблокированные поля форм, т.е., находящиеся в неактивном состоянии;
:in-range — поля формы, значения которых находятся в заданном диапазоне;
:out-of-range — поля формы, значения которых не входят в установленный диапазон;
:lang() — элементы с текстом на указанном языке;
:not(селектор) — элементы, которые не содержат указанный селектор — класс, идентификатор, название или тип поля формы — :not([type=»submit»]) ;
:target — элемент с символом # , на который ссылаются в документе;
:checked — выделенные (выбранные пользователем) элементы формы.
2.10. Селектор структурных псевдоклассов
Структурные псевдоклассы отбирают дочерние элементы в соответствии с параметром, указанным в круглых скобках:
:nth-child(odd) — нечётные дочерние элементы;
:nth-child(even) — чётные дочерние элементы;
:nth-child(3n) — каждый третий элемент среди дочерних;
:nth-child(3n+2) — выбирает каждый третий элемент, начиная со второго дочернего элемента (+2) ;
:nth-child(n+2) — выбирает все элементы, начиная со второго;
:nth-child(3) — выбирает третий дочерний элемент;
:nth-last-child() — в списке дочерних элементов выбирает элемент с указанным местоположением, аналогично с :nth-child() , но начиная с последнего, в обратную сторону;
:first-child — позволяет оформить только самый первый дочерний элемент тега;
:last-child — позволяет форматировать последний дочерний элемент тега;
:only-child — выбирает элемент, являющийся единственным дочерним элементом;
:empty — выбирает элементы, у которых нет дочерних элементов;
:root — выбирает элемент, являющийся корневым в документе — элемент html .
2.11. Селектор структурных псевдоклассов типа
Указывают на конкретный тип дочернего тега:
:nth-of-type() — выбирает элементы по аналогии с :nth-child() , при этом берёт во внимание только тип элемента;
:first-of-type — выбирает первый дочерний элемент данного типа;
:last-of-type — выбирает последний элемент данного типа;
:nth-last-of-type() — выбирает элемент заданного типа в списке элементов в соответствии с указанным местоположением, начиная с конца;
:only-of-type — выбирает единственный элемент указанного типа среди дочерних элементов родительского элемента.
2.12. Селектор псевдоэлемента
Псевдоэлементы используются для добавления содержимого, которое генерируется с помощью свойства content :
:first-letter — выбирает первую букву каждого абзаца, применяется только к блочным элементам;
:first-line — выбирает первую строку текста элемента, применяется только к блочным элементам;
:before — вставляет генерируемое содержимое перед элементом;
:after — добавляет генерируемое содержимое после элемента.
3. Комбинация селекторов
Для более точного отбора элементов для форматирования можно использовать комбинации селекторов:
a[href][title] — выберет все ссылки, для которых заданы атрибуты href и title ;
img[alt*=»css»]:nth-of-type(even) — выберет все четные картинки, альтернативный текст которых содержит слово css .
4. Группировка селекторов
Один и тот же стиль можно одновременно применить к нескольким элементам. Для этого необходимо в левой части объявления перечислить через запятую нужные селекторы:
5. Наследование и каскад
Наследование и каскад — два фундаментальных понятия в CSS, которые тесно связаны между собой. Наследование заключается в том, что элементы наследуют свойства от своего родителя (элемента, их содержащего). Каскад проявляется в том, как разные виды таблиц стилей применяются к документу, и как конфликтующие правила переопределяют друг друга.
5.1. Наследование
Наследование является механизмом, с помощью которого определенные свойства передаются от предка к его потомкам. Спецификацией 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 можно принудить элемент наследовать любое значение свойства родительского элемента. Это работает даже для тех свойств, которые не наследуются по умолчанию.
Как задаются и работают CSS-стили
1) Стили могут наследоваться от родительского элемента (наследуемые свойства или с помощью значения inherit );
2) Стили, расположенные в таблице стилей ниже, отменяют стили, расположенные в таблице выше;
3) К одному элементу могут применяться стили из разных источников. Проверить, какие стили применяются, можно в режиме разработчика браузера. Для этого над элементом нужно щёлкнуть правой кнопкой мыши и выбрать пункт «Посмотреть код» (или что-то аналогичное). В правом столбце будут перечислены все свойства, которые заданы для этого элемента или наследуются от родительского элемента, а также файлы стилей, в которых они указаны, и порядковый номер строки кода.
Рис. 2. Режим разработчика в браузере Google Chrome
4) При определении стиля можно использовать любую комбинацию селекторов — селектор элемента, псевдокласса элемента, класса или идентификатора элемента.
5.2. Каскад
Каскадирование — это механизм, который управляет конечным результатом в ситуации, когда к одному элементу применяются разные CSS-правила. Существует три критерия, которые определяют порядок применения свойств — правило !important , специфичность и порядок, в котором подключены таблицы стилей.
Правило !important
Вес правила можно задать с помощью ключевого слова !important , которое добавляется сразу после значения свойства, например, span
Специфичность
Для каждого правила браузер вычисляет специфичность селектора, и если у элемента имеются конфликтующие объявления свойств, во внимание принимается правило, имеющее наибольшую специфичность. Значение специфичности состоит из четырех частей: 0, 0, 0, 0 . Специфичность селектора определяется следующим образом:
для id добавляется 0, 1, 0, 0 ;
для class добавляется 0, 0, 1, 0 ;
для каждого элемента и псевдоэлемента добавляется 0, 0, 0, 1 ;
для встроенного стиля, добавленного непосредственно к элементу — 1, 0, 0, 0 ;
универсальный селектор не имеет специфичности.
В результате к элементу применятся те правила, специфичность которых больше. Например, если на элемент действуют две специфичности со значениями 0, 0, 0, 2 и 0, 1, 0, 1 , то выиграет второе правило.
Порядок подключённых таблиц
Вы можете создать несколько внешних таблиц стилей и подключить их к одной веб-странице. Если в разных таблицах будут встречаться разные значения свойств одного элемента, то в результате к элементу применится правило, находящееся в таблице стилей, идущей в списке ниже.
Источник статьи: http://html5book.ru/osnovy-css/