CSS (Cascading Style Sheets - Каскадные таблицы стилей) – это технология описания внешнего вида документа, написанного языком разметки. Основная идея CSS состоит в том, чтобы отделить описание логической структуры документа (HTML) от его внешнего вида(CSS). Чтобы поменять отображение сайта, достаточно изменить описание стиля. Один и тот же документ с помощью CSS можно отобразить различными способами, например: на экран, печать, голосом, шрифтом Брайля.
Таблицы стилей CSS позволяют уменьшить размер HTML кода, улучшить его читаемость, сократить объем работ разработчиков веб-страниц, менять внешний вид документа без изменения HTML кода. Одна таблица стилей может применяться и к нескольким документам.
CSS используется как средство оформления веб-страниц в формате HTML и XHTML, но может применяться с любыми видами документов в формате XML.
Способы включения каскадных таблиц стилей
CSS можно включить в HTML-документ четырьмя способами:
Встраивание стиля (inline styles) с помощью атрибута style. Стиль встраивается непосредственно в один из тегов HTML – документа в свойстве style этого тега. Например:
<p style="font-size: 21px; color: green;">текст</p>
<span style="color:red; background-color:yellow;
font-variant:small-caps">Красный текст на желтом фоне,
маленькими заглавными буквами.</span>
Кроме приведенных в примере тегов, стили часто встраиваются в теги h, body.
Считается, что способ встраивания стиля нарушает идеологию CSS.
Внедрение таблицы стилей в заголовок HTML документа (embedded style sheet) с помощью тега style. При этом CSS-стили располагаются между открывающим и закрывающим тегами style. Тег <style> размещается в заголовке HTML-документа между тегами <head> и </head> и содержит определения стилей для всего HTML-документа:
<head>
<style type="text/css">
<!—описание стиля-->
</style>
</head>
Связывание с внешней таблицей стилей. Если предполагается использовать один стиль для нескольких страниц документа или нескольких документов, можно описать стиль в отдельном файле с расширением.CSS, например style.css. Для подключения стилевого файла используется тег <link>, расположенный внутри тега <head>.
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
Первые два свойства указывают браузеру, что на странице используется CSS. Значение последнего свойства - имя файла, в котором прописан стиль страницы.
Импортирование - добавление внешней таблицы стилей при помощи правила @import. В отличие от HTML-тега <link> правило @import является языковой конструкцией CSS и добавляется в элемент style:
<head>
<style type=”text/css”>
@import "style.css";
</style>
</head>
Свойство @import таблицы стилей следует задавать в начале стилевого блока или связываемой таблицы стилей перед заданием остальных правил. Значением свойства @import является URL файла, содержащего таблицы стилей. Импортирование - позволяет встраивать в документ таблицу стилей, расположенную на сервере.
Таблицы стилей не чувствительны к регистру. Текстовые комментарии в таблицах стилей оформляются так же, как и в языке Си:
h1{ color: red } /* color is red */
Стили
Стиль – это правило, описывающее форматирование фрагмента документа. Каждое правило состоит из селектора и определения. Селектор определяет, на какую часть документа распространяется правило, а определение задает значения его свойств в фигурных скобках.
Selector{ Property1: value1 value2; Property2: value3 value4; Property3: value5 value6;}Селекторы правил CSS могут быть селекторами элементов (тегов HTML), селекторами классов, селекторами псевдоклассов, селекторами идентификаторов, селекторами потомков и др.В фигурных скобках после селектора задаются значения свойств. Если у свойства несколько значений, то значения отделяются друг от друга пробелами. Описания свойств отделяются друг от друга точкой с запятой.
Селектором может быть любой элемент HTML, например
html {color: black;}
p {color: red;}
h2 {font-size: 110 %;}
Рассмотрим пример использования таблицы стилей, определяющей стиль заголовков первого уровня h1:
<html>
<head>
<style type=text/css>
h1 {font-weight:bold; color:red;}
</style>
</head>
<body>
<h1>Жирный заголовок красного цвета </h1>
</body>
<html>
Ниже приводится пример более сложного кода CSS, встраиваемого в теги HTML, в том числе в теги body и html.
<DOCTYPE html>
<html>
<head>
<title>Пример css, встраиваемого в HTML страницу</title>
<style type="text/css">
<!-- body { color: gold; background: blue; font: bold 14px comic sans ms; text-align: justify; margin: 10px; } -->
html {color: black; }
p {color: red;}
h1{font-family: arial; font-weight: bold; font-size: 14pt; color:green;}
h2{font-family: arial; font-size: 110 %; color:black;}
</style>
Текст из раздела Head
</head>
<body>
<h1>Примеры CSS - это заголовок H1</h1>
<p>
пример кода CSS, встраиваемого в HTML страницу. <br>
Этот код должен располагаться внутри элемента head. Селектором является тег body
</p>
<h2>Примеры CSS - это заголовок H2</h2>
Этот текст имеет вид, определенный таблицей стилей: золотые буквы на голубом фоне, <br>жирный шрифт Comic Sans MS размером 14 пикселей и выровненный по обоим краям с <br> отступами со всех сторон 10 пикселей.
</body>
</html>
По традиции для совместимости со старыми браузерами, не понимающими CSS содержимое элемента <style> могут заключать в комментарий <!-- -->. Новые браузеры поймут, что в комментариях заключена таблица стилей и подключат ее. В старых браузерах содержимое не будет отображено в окне браузера. В таблицу стилей можно ставить любое количество пробелов и переносов строк, браузер оставит столько, сколько нужно.
Значения свойств, являющихся адресами устанавливается следующим образом: url(адрес).
Группирование. Если двум селекторам присваивается одинаковое определение, то их можно записывать через запятую:
h1, h2 {
font-family: arial
}
Если селектор имеет несколько определений:
h1{font-weight:bold} h1 {font-size: 14pt}
то они записываются через точку с запятой:
h1 {font-weight: bold; font-size: 14pt;}
Наследование. При определении стиля элемента, вложенные элементы наследуют свойства головного элемента. Например, если в параграфе <p> задается красный цвет шрифта, то выделенный с помощью <b> текст также будет красным:
<p style=”color: red;”>Внутри параграфа с красным цветом текста, <b>выделенный текст</b> наследует цвет головного тега.</p>
Наследование удобно использовать для описания свойств элементов по умолчанию. Для этого достаточно описать стиль тега <body>, порождающего остальные элементы документа.
При сложении стилей приоритет имеют атрибуты, определенные в более конкретном стиле. Стили в порядке убывания конкретности: <body>, остальные теги html, CSS – классы, комбинированные стили, встроенные стили.
CSS- Классы
Чтобы иметь возможность отображать одни и те же элементы в разных случаях по-разному, необходимо использовать классы. Это позволяет для каждого тега использовать несколько стилей. Свойства класса присваиваются данному тегу с помощью атрибута class: class="classname". Имя класса и его свойства должны быть определены в виде селектора класса:
.classname{свойства}
Это можно продемонстрировать на следующем примере:
<html>
<head>
<title>Использование классов</title>
<style type="text/css">
html{color:green;}
.font1 {
color: yellow;
background: red;
}
.font2 {
color: blue;
background: yellow;
}
</style>
</head>
<body>
<span class="font1">Желтый текст на красном фоне</span>
<span class="font2">Синий текст на желтом фоне</span>
А здесь цвет фона и текста заданы тегом HTML
<table class="font2" border="2">
<tr>
<td>Это ячейка1 </td>
<td>это ячейка2</td>
</tr>
</table>
</body>
</html>
В примере определены два класса «font1» и «font2» задающие цвет фона и изображения. Эти классы были затем применены к тегу <span>. Свойства класса, могут быть присвоены любому тегу, который обладает свойствами, описанными в классе. Например, класс font2 может быть применен к таблице:
<table class="font2">
Если необходимо поменять стиль выделения текста с помощью класса
.select{color:red;}
во всем документе с красного, на другой цвет, то достаточно поменять значение цвета в определении этого класса. Изменения вступят в силу сразу же во всем документе. Если на всех страницах сайта подключается один и тот же стилевой файл, то изменение свойств класса в этом файле приведет и к изменению стиля соответствующий тегов на всех страницах сайта.
.select{ font-size: 9pt; color:green }
Начинающийся с точки класс определяет универсальный класс, который может быть применен к любому тегу при помощи конструкции:
<p class=select>Накладываем стиль на этот текст</p>
Если необходимо определить класс не для любого, а только для конкретного тега, то используется конструкция:
имя_тега.имя_класса {свойства}
Класс, определенный таким образом, сработает только в том теге, для которого он предназначен, а для всех остальных будет проигнорирован. Это так называемые теговые классы:
p.small { font-size: 9pt; }
<p class=small>Этот текст будет выведен стилем small</p>
Рассмотрим, например, случай когда нам нужно часть текста выделить красным. Определим класс select для тега <span>:
<html>
<head>
<title>Использование классов</title>
<style type="text/css">
span.select {color: red;}
</style>
</head>
<body>
Здесь мы выделили <span class="select">часть текста красным.</span>
</body>
</html>
Значением class может быть множественный класс-список слов, разделенный пробелами. Например:
<p class=”urgent warning”>Опасность! Предупреждение!</p>
Чтобы выделить курсивом все элементы, атрибут class которых имел значение ”urgent warning”, нужно описать множественный класс следующим образом:
.warning.urgent {font-style: italic;}
Объединяя 2 селектора класса, можно выбрать только те элементы, которые имеют оба имени класса, стоящие в любом порядке.
В каких тегах лучше определять стили посредством класса? Чаще всего для этого используется одна из следующих конструкций:
<p class="big">Что-то</p>
<td class="big">Что-то</td>
<div class="big">Что-то</div>
<span class="big">Что-то</span>
Тег <div> подобен <span>, но только с тем отличием, что делает до и после себя отбивку (так же, как и <p>). Стиль текста, которым набрано основное содержимое странички, лучше всего сделать переопределением тега <p>, а не определением отдельного класса.
Можно определять параметры не только для одного тега, но и сразу для нескольких. Для этого в определении стиля перечислим их через запятую:
p, td { font-size: 9pt; color:green;}
Селекторы идентификаторов (ID-селекторы)
ID-селекторы используются для определения уникальных частей веб-страницы. При объявлении стиля перед ID-селектором ставится #:
#green {color: green;}
Затем HTML элементу, подлежащему форматированию, присваивается соответствующее значение атрибута id:
<p id=”green”>Text</p>.
Символы “#” и ”.” используются только при описании стилей в таблицах. При вставке имени идентификатора или класса в HTML-теги их указывать не нужно!
Что использовать – классы или идентификаторы? Для стиля, используемого неоднократно, применяются классы. Идентификаторы используются, когда необходимо определить разделы страницы, которые встречаются один раз.
Теги div, span и link
Элементы <span> и <div> используются для структурирования документа, часто совместно с атрибутами class и id. Элемент <span> ничего не добавляет к содержимому документа. Но, в сочетании с CSS, <span> может использоваться для визуальных эффектов применимо к отдельным блокам текста. Пример
<p>Если ты умный, почему не здоровый и не богатый </p>
<p> Если ты умный, то <span class="benefit">здоровый</span>,
и<span class="benefit">богатый</span> </p>
span.benefit {
color:red;
}
Пример. Использование тега <span>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Тег SPAN</title>
<style type="text/css">
BODY {
font-family: Arial, sans-serif; /* Рубленый шрифт */
}
.letter {
color: red; /* Красный цвет символов */
font-size: 200%; /* Размер шрифта в процентах */
font-family: serif; /* Шрифт с засечками */
position: relative; /* Относительное позиционирование */
top: 5px; /* Сдвиг сверху */
}
</style>
</head>
<body>
<p><span class="letter">Р</span>азумные люди приспосабливаются к окружающему миру.
Неразумные люди приспосабливают мир к себе. Вот почему прогресс определяется действиями неразумных людей.</p>
<p>Бернард Шоу</p>
</body>
</html>
В то время как <span> используется в элементах уровня блока, <div> применяется для группирования блок-элементов. Посмотрим на пример - два списка президентов США, сгруппированных по их политической принадлежности:
#democrats {
background:blue;
}
#republicans {
background:red;
}
<div id="democrats">
<ul>
<li>Франклин Д. Рузвелт</li>
<li>Джон Ф. Кеннеди</li>
<li>Билл Клинтон</li>
</ul>
</div>
<div id="republicans">
<ul>
<li>Роналд Рейган</li>
<li>Джордж Буш</li>
<li>Джордж У. Буш</li>
</ul>
</div>
Тег link довольно активно используется разработчиками сайтов для установки связи между HTML документом и CSS файлом:
<link rel="stylesheet" href="/s.css" type="text/css" media="all" />
С помощью тега link можно задавать другие типы ссылок, особенно хорошо подходящие для контент-сайтов, электронных книг и т. п. Кроме того, взаимосвязи, устанавливаемые в head тегом link, позволяют поисковым машинам легче пробираться через дебри сайта. Давайте рассмотрим реальный пример
<head>
<link rel="start" href="/" />
<link rel="search" href="/Search/" />
<link rel="author" href="/About/" />
…
</head>
Свойства шрифтов (фонтов).