Даний підручник спробує навчити вас використовувати каскадні таблиці стилів — важливий елемент веб-дизайну. Перед його прочитанням бажано мати певне уявлення про HTML.

Каскадні стилі сторінок (англ. Cascading Style Sheets) — спеціальна мова, що використовується для запису оформлення сторінок, написаних мовами розмітки даних.

Основні поняття

ред.

Стилі дають змогу спростити процес створення сторінок і поліпшити їхній зовнішній вигляд. Концепція стилів подібна до ідеї стилів, яка реалізована в сучасних текстових редакторах — текст спочатку вводять, а потім форматують, користуючись стилями. Застосування стилів дає змогу вводити на сторінку потрібні тексти та інші елементи, не задумуючись над їхнім зовнішнім виглядом і розташуванням.

Стилі програміст зазвичай створює окремо від html-файлу. Під час створення html-файлу він концентрує увагу на змісті сторінки, а не на її зовнішньому вигляді, а під час створення таблиці стилів — навпаки. Отже, стилі дають змогу розмежувати етапи створення html-файлу й удосконалення зовнішнього вигляду сторінки.

Вважатимемо, що таблиця стилів уже створена. Тепер нам потрібно забезпечити взаємодію таблиці з html-файлом. Розглянемо три способи такої взаємодії: зв'язування, імпортування, вбудовування.

Зв'язування

ред.

Стилі створюють і зберігають в окремому файлі з розширенням ".css". Таку таблицю називають зовнішньою. Щоб зв'язати основний файл з таблицею стилів, у середині тега <head> застосовують одинарний тег <link> з інформацією про таблицю:

<head>
<link href="адреса таблиці стилів" 
      type="text/css"
      rel="stylesheet"
      title="назва таблиці стилів">
</head>

Імпортування

ред.

Це те ж саме, що і зв'язування, але взаємодію файлів забезпечують засобами тегу <style> і команди @import URL("адреса таблиці стилів")

Вбудовування

ред.

Якщо таблицю створено лише для деякого конкретного html-файлу, то її розташовують у цьому файлі за допомогою контейнера <style>. Таку таблицю стилів називають внутрішньою або вбудованою.

Також стиль можна вбудувати прямо в html-тег за допомогою атрибуту style, наприклад:

<span style="color: red">RED</span>

Це дасть нам блок з текстом червоного кольору: RED

Мова CSS

ред.

Таблиця стилів складається з правил, а правило — з назви тега чи списку назв тегів і описів стилів, які діятимуть у межах деякого html-файлу.

Опис стилю — це послідовність пар властивість:значення, які записують через крапку з комою та охоплюють фігурними дужками.

Отже, загальний вигляд правила такий:

Селектор {
    властивість1: значення1;
    властивість2: значення2;
    властивістьN: значенняN;
}

Приклад правила для одного тега:

p {
    color: red;
}

Браузер виводить на екрані тексти всіх абзаців червоним кольором.

Ось приклад складнішого правила для списку тегів:

h3,li { 
    color: green; 
    font-family: pragmatica; 
    font-size: 16pt; 
    text-align: left;
    border-style: ridge; 
    border-width: 2mm;
}

Браузер виведе всі заголовки третього рівня h3 і елементи списків li зеленим кольором, шрифтом Прагматика розміру 16 пунктів, вирівняє їх до лівого краю вікна й охопить рамкою товщиною 2 мм з видавленим контуром (ridge).

Властивості стилів та їх значення

ред.

Імена властивостей складаются з одного чи декількох англійських слів, що записуются через риску. Властивість діє лише в межах тега, зазначеного у відповідному правилі.

Властивості стилів наведені у таблиці:

Властивість Значення Пояснення
background-attachment fixed, scroll Тло фіксоване чи прокручуєтся
background-color red, green, #343434 Колір тла
background-image url("Адреса графічного файлу для тла") Фонове зображення
background-position 0% 0% Початкове положення тла
background-repeat repeat, repeat-x, repeat-y, no-repeat Повторює зображення
border-top/border-right/border-bottom/border-left/border 4mm Рамка
border-color red, green, #343434 Колір рамки
border-style none, dotted, dashed, solid, double, groove, ridge, inset, outset Стиль рамки
border-width 2mm, 3mm Товщина рамки
font-family arial, sans-serif Назва шрифта
font-size 16px Розмір шрифта
font-style normal, italic, oblique Стиль шрифта
font-variant normal, small-caps Варіант шрифта
font-weight normal(400), bold(700), bolder, lighter, 100 - 900 Жирність шрифта
word-spacing 1mm, 2mm Відстань між словами
letter-spacing 1mm Відстань між символами
line-height 2mm, 4mm Відстань між рядками
text-align left, right, center, justify Вирівнювання тексту
text-decoration none, underline, blink, overline, line-through Оформлення тексту
text-indent 2cm Абзацний відступ
text-transform none, uppercase, lowercase, capitalize Трансформація тексту
vertical-align baseline, sub, super, top, text-top, middle, bottom, text-bottom Вертикальне вирівнювання
white-space normal, pre, nowrap, pre-wrap, pre-line Пробіли та перенесення між словами
margin-top/margin-right/margin-bottom/margin-left/margin 4mm Зовнішній відступ
padding-top/padding-right/padding-bottom/padding-left/padding 4mm Внутрішній відступ
height 4cm Висота елемента
width 14cm Ширина елемента
float none, left, right Обтікання об'єкта текстом
clear none, left, right, both Заборона обтікання
color red, green, #343434 Колір елемента
list-style-image url("Адреса графічного файлу маркера списку") Зображення для маркера
list-style-position inside, outside Позиція маркера
list-style-type disc, circle, square, decimal, lower-alpha, lower-roman, upper-alpha, upper-roman Вигляд маркера
position static, relative, absolute, fixed Спосіб позиціонування елемента
top/right/bottom/left px, in, pt, %, auto тощо Позиціонування елемента
z-index ціле число, auto Положення елемента за віссю z
display block, inline-block, inline, list-item, none, table, table-row, table-cell Поведінка елемента в документі
visibility visible, hidden, collapse Відобразити чи сховати елемент
overflow visible, hidden, scroll, auto Спосіб відображення вмісту елемента, якщо він повністю не вміщується в задану область
clip shape(rect), auto Визначає прямокутну область, де буде показано частину елемента
outline-color/outline-style/outline-width/outline значення, аналогічні border Зовнішня рамка
cursor default, pointer, help, wait, progress, text, move, crosshair, auto Вигляд курсору

Теги <style>,<div>,<span>

ред.

Внутрішні таблиці стилів описують у головному файлі в контейнері тега <head>...</head> за допомогою тега-контейнера <style>...</style>.

Правила можуть починатися або з назви тега без кутових дужок, або з деякого слова користувача, перед яким є крапка. Це слово стає назвою типу, який можна застосувати в контейнері тега <BODY> до іншого текстового блока, фрагмена тексту чи деякого елемента, наприклад:

.mystyle1 {
    color: red;
    font-size: 40pt;
    margin-top: 30px;
}
.mystyle2 {
    color: black;
    font-size: 16pt;
    margin-top: -50px;
}

Для відокремлення текстового блока, до якого застосовуватимуть стиль, призначений тег-контейнер <DIV параметр></DIV> з параметром CLASS, який задає конкретний стиль, що діятиме на блок: <DIV CLASS=назва стилю>блок</DIV>.

Для відокремлення у блоці текстового фрагмента, для якого будуть переозначувати стиль, застосовують тег-контейнер <SPAN>...</SPAN>

Селектори CSS

ред.

Селектор class

ред.

Припустимо, ми хочемо зробити сторінку, на якій буде два види абзаців <p>, причому обидва види будуть постійно чергуватися і часто повторюватися. Приклад такої сторінки — інтерв'ю, в якому чергуются питання журналіста і відповіді людини. Звичайно, при створені такої сторінки ми захочемо візуально відділити питання і відповіді одне від одного. Якщо б нам необхідно було це робити можливостями CSS, які ми розглянули вище, то ми мали б створити дві різні таблиці стилів. На щастя, це нам не потрібно. Ми можемо створити в одній таблиці стилів два різних класи абзаців за допомогою селектора класу. Це буде виглядати так:

<html>
<head>
...
<style>
...
p.ask {
    font-style: italic;
    font-weight: bold;
    font-family: Arial, sans-serif;
    font-size: 10pt;
    color: gray;
    margin-left: 15px;
}
p.answer {
    font-family: 'Times New Roman', serif;
    font-size: 12pt;
    color: black;
}
...
</style>
...
</head>
<body>
...
<p class="ask">Питання журналіста</p>
<p class="answer">Відповідь</p>
...
</body>
</html>

В наведеному прикладі питання журналіста будуть відображатися шрифтом Arial сірого кольору, напівжирним курсивом, розміром 10 пунктів з відступом 15 пікселів від лівого краю сторінки. Відповіді ж будуть відображені шрифтом Times New Roman розміром 12 пунктів чорного кольору. Ви можете створювати будь-яку кількість класів для будь-яких елементів сторінки.

Селектор id

ред.

Візьмемо наступний приклад. Наприклад, ви хочете створити на сторінці які-небудь унікальні предмети, до яких в майбутньому хочете звертатись за допомогою JavaScript. Можливо, ці елементи будуть повторюватися на інших сторінках, і ви хотіли б задати їм єдине оформлення за допомогою CSS. На цей випадок в таблицях стилів є можливість присвоєння унікальним елементам ідентифікаторів (id). Ось приклад призначення ідентифікатора і правил CSS таким елементам:

<html>
<head>
...
<style>
...
input#green {
    color: green;
}
input#red {
    color: red;
}
...
</style>
...
</head>
<body>
...
<form ...>
<p>Текст, введений в це поле, буде відображений зеленим кольором:
<input type="text" id="green" name="info1" size="20"></p>
<p>Текст, введений в це поле, буде відображений червоним кольором:
<input type="text" id="red" name="info2" size="20"></p>
</form>
...
</body>
</html>

Аналогічним чином унікальні ідентифікатори можуть бути призначені будь-якій кількості будь-яких елементів на сторінці.