- Что такое CSS, для чего нужны каскадные таблицы стилей CSS
- Что такое селекторы CSS.
- 30 CSS-селекторов, о которых полезно помнить
- Учебник CSS для начинающих. Что такое CSS?
- наглядное введение в систему компоновки элементов на веб-странице
- Что верстальщик должен знать про OOCSS и организацию CSS
- Всё о свойстве float | CSS-Tricks по-русски
- Что такое CSS
- Мой первый пример CSS
- Мой первый пример CSS
- Несколько Стили каскадируются в один
- Что такое CSS (и как он работает)?
- Наследование CSS, каскад и специфичность
- Что такое CSS? — Учебник CSS
- CSS 101 | Учебник | Институт передовых средств массовой информации Беркли
- Джереми Рю
- Моя первая веб-страница
- Фотографии с моего последнего отпуска
- Фотографии с моего последнего отпуска
- Добавление стилей корпуса
- Изменение размера изображения
- Центрирование изображения
- Назначение рецептурной практики
- Часто задаваемые вопросы о назначении рецептов CSS
- Обзор CSS-селекторов
- Селекторы CSS с разделителями-запятыми
- Селекторы CSS с разделением пробелами
- Коробка модель
- Указание нескольких значений поля или заполнения
- Правильное измерение коробчатой модели
- Как использовать свойство! Important в CSS
- CSS в терминах непрофессионала
Что такое CSS, для чего нужны каскадные таблицы стилей CSS
CSS – это язык, с помощью которого описывается внешний вид документа HTML, XML, XHTML. Название означает «каскадная таблица стилей», или Cascading Style Sheets. CSS-стили незаменимы при оформлении страниц сайтов: в одном файле содержатся сведения об отображении всех элементов документа.
Для чего используется CSS
По сути, таблица стилей – это файл, где описывается, как будет выглядеть каждый из элементов на странице. В HTML-документе, таким образом, остается только структура странички: сами блоки, их содержимое и расположение. Создать страницу и оформить ее можно и без использования таблиц, прописывая визуальные свойства каждого элемента в его описании. Но, если страниц сотни и тысячи, применять такой метод неудобно: при изменении оформления приходится менять множество документов, вдобавок это загромождает верстку. Поэтому использование CSS считается золотым стандартом оформления сайтов: так получилось благодаря гибкости и многообразию возможностей каскадных таблиц.
Преимущества CSS
- Это существенно упрощает верстку и снижает временные затраты. Один созданный файл стилей можно распространить на множество страниц, так что внешний вид элементов достаточно описать один раз.
- Если что-то нужно изменить, достаточно внести правки в один файл. Это касается и изменений в оформлении, и найденных ошибок.
- Применение CSS серьезно облегчает структуру документа, что хорошо и для пользователей, и для поисковых программ.
- Вариативность оформления становится шире. CSS поддерживает намного больше возможностей, чем имеется при использовании чистого HTML, вдобавок к одной странице можно применить несколько стилей в зависимости от обстоятельств (размер монитора пользователя, устройство, с которого выполнен вход, – ПК или мобильное).
- Страницы начинают загружаться быстрее: браузер кеширует таблицу стилей при первом посещении сайта, при последующих подгружаются только данные, что намного быстрее.
Как развивалась технология
Начало было положено в 1990-х, когда консорциум W3C решил, что технология, позволяющая разделять содержание и представление документов, необходима. Стандарт CSS1 появился в 1996 году и позволял изменять с помощью таблиц параметры шрифтов, цвета элементов, свойства блоков и текстов, такие как отступы и выравнивание. Длина и ширина блоков задавались там же. С развитием интернета появились новые уровни:
- CSS2. Стандарт расширил технические возможности, дал возможность работать с аудио и страничными носителями (например, при печати документов), включил в себя поддержку блочной структуры и генерируемого содержимого;
- CSS3. Еще более масштабное расширение, находится в разработке до сих пор, поддерживает сглаживание, градиенты, тени и анимацию, для этого не приходится использовать JavaScript;
- CSS4. Находится в разработке, новые модули пока доступны как черновики. Дополняют предыдущие версии новыми расширениями и значениями.
Синтаксис и структура
Файл CSS сводится к набору правил, описанных по определенному синтаксису. Правило состоит из селекторной части и блока объявлений: ими описываются всевозможные элементы страницы. Формат примерно таков: селектор { параметр: значение }.
Селекторы. Указывают, к каким элементам будут применяться те или иные параметры стиля. Пишутся в начале строки, по сути, являются названиями тегов, для которых справедливо правило.
- Можно использовать любой тег, написанный латиницей.
- Если вариантов стиля для одного типа элементов несколько, используются так называемые классы. У одного тега их может быть несколько (применяются все стили, что описаны в таблице). Запись в этом случае выглядит так: тег.Класс { параметр: значение }.
- Есть возможность видоизменить только один конкретный элемент. Это делается с помощью идентификаторов – уникальных имен, которые можно присвоить элементам. Идентификатор будет использоваться как селектор.
- Можно создавать правила, которые применяются к какому угодно тегу, если он входит в тот или иной класс. Строку нужно начать с .Класс без указания тега.
Блок объявлений. Все, что находится в фигурных скобках, по сути, сводится к указанию параметра и значения, которое ему нужно присвоить. К регистру, пробелам и табуляции нечувствителен.
Как подключить стили CSS
Элементы CSS можно использовать внутри HTML-документа с помощью тега <style> и атрибута type=»text/css» или за счет атрибута style без указания селектора. Но более распространенный способ – выносить стили в отдельный файл и подключать с помощью такой строчки: <link href=»ссылка на таблицу» rel=»stylesheet»>. Значение аргумента rel показывает, что это CSS-стили.
Другие термины на букву «C»
Все термины SEO-ВикипедииТеги термина
Что такое селекторы CSS.
HTML-страницы, к которым могут применяться стили CSS, могут содержать огромное количество элементов.
Это могут быть:
+ Текст (вполоть для каждой буквы, каждого абзаца и.т.д.)
+ Изображения
+ Таблицы (каждая их строка, столбец или ячейка, и.т.д.)
+ Списки
+ и.т.д.
В общем, все эти и многие другие элементы, которые только можно видеть на веб-странице, можно оформлять и менять их внешний вид с помощью технологии CSS.
Но, для того, чтобы применить какие-то конкретные стили, нужно сообщить браузеру, к какому элементу они будут применяться.
В технологии CSS это можно сделать с помощью так называемых селекторов.
Селекторы ( от англ. select — выбирать) — это элементы каскадной таблицы стилей CSS, которые указывают на тот элемент на веб-странице, к которому должны будут применяться стили.
Например, для того, чтобы выделить какой-то абзац в тексте красным цветом, в CSS-файле нужно с помощью селектора указать на него.
В CSS селекторы располагаются самой первой составляющей стиля.
Синтаксис здесь следующий:
селектор { стили, которые будут применяться к элементу выбранному этим селектором }
Сначала идет указание селектора, а за ним, уже в фигурных скобках, следуют стили, которые будут применяться к выбранному с помощью селекторов элементу.
По-сути, весь CSS-файл и состоит из таких конструкций, указания селекторов и стилей, которые к ним относятся.
селектор1 { стили } селектор2 { стили } селектор3 { стили } и.т.д.
Надеюсь, что общий смысл этого понятен. Впрочем, при дальнейшем изучении технологии CSS, все должно встать на свои места.
30 CSS-селекторов, о которых полезно помнить
- Главная
- ->
- Материалы
- ->
- 30 CSS-селекторов, о которых полезно помнить
Reg.ru: домены и хостинг
Крупнейший регистратор и хостинг-провайдер в России.
Более 2 миллионов доменных имен на обслуживании.
Продвижение, почта для домена, решения для бизнеса.
Более 700 тыс. клиентов по всему миру уже сделали свой выбор.
Перейти на сайт->
Бесплатный Курс «Практика HTML5 и CSS3»
Освойте бесплатно пошаговый видеокурс
по основам адаптивной верстки
на HTML5 и CSS3 с полного нуля.
Фреймворк Bootstrap: быстрая адаптивная вёрстка
Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.
Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.
Верстайте на заказ и получайте деньги.
Получить в подарок->
Бесплатный курс «Сайт на WordPress»
Хотите освоить CMS WordPress?
Получите уроки по дизайну и верстке сайта на WordPress.
Научитесь работать с темами и нарезать макет.
Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!
Получить в подарок->
*Наведите курсор мыши для приостановки прокрутки.
Назад Вперед
30 CSS-селекторов, о которых полезно помнить
Итак, Вы разобрались с основными селекторами: id, class, селекторами потомков. И все? Если да, то Вы теряете очень много в плане гибкости управления внешним видом элементов на странице.
Несмотря на то, что многие из упомянутых здесь селекторов входят в спецификацию CSS3 и, соответственно, поддерживаются только современными браузерами, Вам все же следует ознакомиться с ними и держать их в памяти.
1. *
* { margin: 0; padding: 0; }
Начнем с простейших вещей для новичков, прежде чем перейдем к продвинутым селекторам.
Символ звездочки позволяет выбрать все элементы на странице. Многие веб-разработчики используют это для «обнуления» всех внешних и внутренних отступов.
Также символ * можно использовать для дочерних элементов объекта.
#container * { border: 1px solid black; }
Этот код нацелен на все элементы, которые являются дочерними по отношению к блоку с идентификатором container.
Совместимость:
* IE6+
* Firefox
* Chrome
* Safari
* Opera
2. #X
#container { width: 960px; margin: auto; }
Символ решетки позволяет нам отбирать элементы по идентификатору. Это один из наиболее распространенных способов отбора элементов, однако будьте осторожны при его использовании.
«Спросите себя: Мне точно необходимо использовать id для какого-то элемента, чтобы сослаться на него?»
Селекторы id негибки и их трудно использовать повторно в разных проектах. Если возможно, пытайтесь сначала использовать имя тэга или даже псевдо-класс.
Совместимость:
* IE6+
* Firefox
* Chrome
* Safari
* Opera
3. .X
.error { color: red; }
Это селектор класса. Разница между id и классами в том, что с помощью классов можно выбирать сразу несколько элементов. Используйте классы, если Вам нужно применить один стиль к группе элементов.
В противном случае используйте id для нахождения «иголки в стоге сена» и применения стиля только к одному конкретному объекту.
Совместимость:
* IE6+
* Firefox
* Chrome
* Safari
* Opera
4. X Y
li a { text-decoration: none; }
Следующий часто используемый тип селектора — селектор потомка. Его следует использовать, когда нужно производить более точечный отбор элементов.
К примеру, как быть, если нужно выбрать не все тэги ссылок, а только те, что находятся внутри неупорядоченного списка? Это как раз тот случай, когда следует использовать селектор потомка.
«Совет: Если Ваш селектор похож на X Y Z A B.error, то Вы, вероятно, что-то делаете на так. Всегда спрашивайте себя, действительно ли это самый простой способ»
Совместимость:
* IE6+
* Firefox
* Chrome
* Safari
* Opera
5. X
a {color: red;} ul {margin-left: 0px;}
Что, если Вы хотите сослать на все элементы определенного типа на странице, если у них нет id или классов? Делайте проще, используйте селекторы типа. Если Вам нужно выбрать все неупорядоченные списки, используйте ul{}.
Совместимость:
* IE6+
* Firefox
* Chrome
* Safari
* Opera
6. X:visited и X:link
a:link {color: red;} a:visited {color: purple;}
Здесь мы используем псевдо-класс :link для выбора всех ссылок, на которых еще не был совершен клик.
Также есть псевдо-класс :visited, который, как Вы и ожидали, позволяет нам применить стиль только к тем ссылкам, по которым был совершен клик или переход.
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
7. X + Y
ul + p { color: red; }
Это так называемый смежный селектор. В этом случае каждый параграф следующий сразу после каждого элемента ul будет красного цвета.
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
8. X > Y
#container > ul { border: 1px solid black; }
Различие между X Y и X > Y в том, что последний выберет только прямых потомков. Рассмотрим следующий пример:
<div> <ul> <li>Элемент списка <ul> <li>Потомок</li> </ul> </li> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ul> </div>
Селектор #container > ul выберет только те элементы ul, которые являются прямыми потомками блока div с идентификатором container. Т.е. в данном случае этот селектор не отберет элемент ul, который является потомком первого элемента li.
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
9. X ~ Y
ul ~ p { color: red; }
Эта комбинация сестринских (сиблинговых) элементов похожа на X + Y, но она менее строгая. Если в случае ul + p будут выбраны только первые элементы p, следующие за ul (т.е. наблюдается смежность в выборе), то рассматриваемый нами сейчас селектор более общий.
В нашем случае он отберет все элементы p, следующие за элементом ul.
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
10. X[title]
a[title] { color: green; }
Здесь мы обращаемся к атрибуту селектора. В нашем примере будут окрашены в зеленый цвет только ссылки, имеющие атрибут title.
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
11. X[href=»foo»]
a[href="http://www.codeharmony.ru"] { color: red; }
Код выше позволит придать стиль всем ссылкам, атрибут href у которых равен http://www.codeharmony.ru. Эти ссылки будут красного цвета. Остальные ссылки не получат данного стиля.
Это работает хорошо, но это немного негибко. Что, если ссылка на самом деле ведет на Codeharmony.ru но, возможно, адрес указан, как codeharmony.ru а не http://www.codeharmony.ru? В таких случаях мы можем использовать основы регулярных выражений.
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
12. (карат). Он обычно используется в регулярных выражениях для обозначения начала строки. Если мы хотим отобрать ссылки, у которых атрибут href начинается с http, то мы можем использовать селектор из примера выше.
«Обратите внимание, что мы не ищем http://. Это необязательно и, к тому же, не учитывает ссылки по протоколу https://.»
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
14. X[href$=».jpg»]
a[href$=".jpg"] { color: red; }
И снова мы используем регулярное выражение и символ $ для того, чтобы обозначить конец строки. В данном примере мы ищем все ссылки, которые ссылаются на картинки с расширением .jpg. Разумеется, такой подход не будет работать для картинок с расширениями .gif, .png и т.д.
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
15. X[data-*=»foo»]
a[data-filetype="image"] { color: red; }
Как же мы можем охватить различные типы картинок? Мы можем создать, например, несколько селекторов:
a[href$=".jpg"], a[href$=".jpeg"], a[href$=".png"], a[href$=".gif"] { color: red; }
Но это муторно и не элегантно. Другой вариант — это создать собственный атрибут data-filetype и добавить его к каждой ссылке, ведущей на картинку.
<a href="path/to/image.jpg" data-filetype="image">Ссылка</a>
Поступив таким образом, мы можем использовать код данного примера:
a[data-filetype="image"] { color: red; }
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
16. X[foo~=»bar»]
a[data-info~="external"] { color: red; } a[data-info~="image"] { border: 1px solid black; }
Вот еще один интересный трюк, о котором не все знают. Знак ~ (тильда) позволяет нам выбирать атрибуты со значениями, разделенными пробелами, т.е.
<a href="path/to/image.jpg" data-info="external image">Кликни сюда</a>
Используя данный прием мы можем делать выборки с нужными нам комбинациями:
/* Отобрать атрибут data-info, который содержит значение external */ a[data-info~="external"] { color: red; } /* и отобрать атрибут data-info, который содержит значение image */ a[data-info~="image"] { border: 1px solid black; }
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
17. X:checked
input[type=radio]:checked { border: 1px solid black; }
Этот псевдо-класс отбирает те элементы, которые были отмечены, например, радиокнопку или чекбокс.
Совместимость:
* IE9+
* Firefox
* Chrome
* Safari
* Opera
18. X:after
Данный псевдо-класс позволяет сгенерировать контент вокруг выбранного элемента.
.clearfix:after { content: ""; display: block; clear: both; visibility: hidden; font-size: 0; height: 0; } .clearfix { *display: inline-block; _height: 1%; }
Данный пример показывает, как с помощью псевдо-класса :after после блока с классом .clearfix создаётся пустая строка, после чего очищается. Хороший метод, когда невозможно применить overflow: hidden.
Совместимость:
* IE8+
* Firefox
* Chrome
* Safari
* Opera
19. X:hover
div:hover { background: #e3e3e3; }
Это Вы точно знаете. Официальное название звучит вроде «псевдо-класс, основанный на действии пользователя». Звучит страшновато, хотя на деле все просто. Хотите применить к элементу определенный стиль, когда на него наводится курсор мыши? Это оно самое!
«Помните, что старые версии IE не понимают этого псевдо-класса по отношению к чему-бы то ни было, кроме тэга а.»
Часто данный прием используется для задания нижней границы для ссылок при наведении на них курсора:
a:hover { border-bottom: 1px solid black; }
«Мега-чит: border-bottom: 1px solid black; выглядит лучше, чем text-decoration: underline;»
Совместимость:
* IE6+ (в IE6 работает только по отношению к ссылкам)
* Firefox
* Chrome
* Safari
* Opera
20. X:not(selector)
div:not(#container) { color: blue; }
Отрицание может быть также очень полезным. Предположим, я хочу выбрать все блоки div, кроме одного с идентификатором container. Для этого отлично подойдет код выше.
Если же мне нужно выбрать все элементы, кроме тэгов параграфов, то можно написать так:
*:not(p) { color: green; }
Совместимость:
* IE9+
* Firefox
* Chrome
* Safari
* Opera
21. X::pseudoElement
p::first-line { font-weight: bold; font-size: 1.2em; }
Псевдоэлементы можно использовать для придания стилей фрагменту элемента, например, первой строке или первой букве. Применяется только к блочным элементам.
Выбираем первую букву параграфа:
p::first-letter { float: left; font-size: 2em; font-weight: bold; font-family: cursive; padding-right: 2px; }
Этот кусок кода найдет все параграфы на странице и применит к первой букве каждого из них указанные стили. Часто это используется для создания эффекта «газетного заголовка».
Выбираем первую строку параграфа:
p::first-line { font-weight: bold; font-size: 1.2em; }
Аналогично предыдущему примеру, но в данном случае будет выбрана первая строка каждого параграфа.
Совместимость:
* IE6+
* Firefox
* Chrome
* Safari
* Opera
22. X:nth-child(n)
li:nth-child(3) { color: red; }
Помните времена, когда мы не имели возможности обратиться к конкретному порядковому элементу-потомку? Данный псевдо-класс решает эту проблему!
В качестве параметра принимается целое число. Если нужно выбрать 2-й элемент списка, нужно использовать конструкцию: li:nth-child(2).
Мы можем даже выбирать группы элементов-потомков. К примеру, чтобы выбрать каждый четвертый элемент списка, нужно использовать конструкцию: li:nth-child(4n).
Совместимость:
* IE9+
* Firefox
* Chrome
* Safari
23. X:nth-last-child(n)
li:nth-last-child(2) { color: red; }
Что, если у Вас есть большой неупорядоченный список и Вам нужно, к примеру, выбрать третий элемент с конца. Вместо того, чтобы писать li:nth-child(397), Вы можете воспользоваться псевдо-классом nth-last-child.
Совместимость:
* IE9+
* Firefox 3.5+
* Chrome
* Safari
* Opera
24. X:nth-of-type(n)
ul:nth-of-type(3) { border: 1px solid black; }
Иногда бывают ситуации, когда вместо того, чтобы выбирать определенных потомков, нужно сделать выбор по типу элемента.
Представьте, что на странице есть пять неупорядоченных списков. Если Вам нужно применить стили только к третьему списку, но у него нет уникального идентификатора и иных «зацепок», то можно воспользоваться псевдо-классом nth-of-type(n). В коде выше показан способ придания стиля только третьему неупорядоченному списку.
Совместимость:
* IE9+
* Firefox 3.5+
* Chrome
* Safari
25. X:nth-last-of-type(n)
ul:nth-last-of-type(3) { border: 1px solid black; }
Да, для полноты картины есть и такой вариант. Так можно выбрать n-ный элемент определенного типа с конца.
Совместимость:
* IE9+
* Firefox 3.5+
* Chrome
* Safari
* Opera
26. X:first-child
ul li:first-child { border-top: none; }
Этот псевдо-класс позволяет выбрать только первого потомка родительского элемента. Часто используется для удаления границ первого и последнего элементов списка.
К примеру, если у вас есть список рядов, каждый из которых имеет border-top и border-bottom, то последний и первый элементы списка будут немного выбиваться из общего строя.
Для устранения этого недостатка можно использовать данный псевдо-класс.
Совместимость:
* IE7+
* Firefox
* Chrome
* Safari
* Opera
27. X:last-child
ul > li:last-child { color: green; }
В противоположность классу first-child, last-child выберет последний элемент родительского элемента.
Совместимость:
* IE9+
* Firefox
* Chrome
* Safari
* Opera
28. X:only-child
div p:only-child { color: red; }
Честно говоря, это довольно редко используемый псевдо-класс, но, тем не менее, он тоже бывает полезен. Он позволяет выбрать Вам те элементы, которые являются единственными потомками для своих родителей.
В нашем примере стиль будет применен только к параграфу, который является единственным потомком блока div.
Давайте рассмотрим для наглядности такую разметку:
<div><p>Здесь идет единственный в блоке параграф.</p></div> <div> <p>Здесь идет первый параграф в блоке.</p> <p>Здесь идет второй параграф в блоке.</p> </div>
В этом случае параграфы во втором блоке div выбраны не будут. Стиль будет применен только к параграфу из первого блока div.
Совместимость:
* IE9+
* Firefox
* Chrome
* Safari
* Opera
29. X:only-of-type
li:only-of-type { font-weight: bold; }
Этот псевдо-класс выбирает элементы, которые не имеют сестринских элементов в содержащем их контейнере. Например, давайте выберем все ul, которые содержат одинокие li.
Вы могли бы написать ul li, но этот способ выберет все элементы li. Единственный способ — использовать only-of-type.
ul > li:only-of-type { font-weight: bold; }
Совместимость:
* IE9+
* Firefox 3.5+
* Chrome
* Safari
* Opera
30. X:first-of-type
Этот псевдо-класс позволяет отобрать первого сиблинга того же типа.
Чтобы лучше это понять, скопируйте в свой редактор следующий код:
<div> <p>Здесь параграф.</p> <ul> <li>Элемент 1.</li> <li>Элемент 2.</li> </ul> <ul> <li>Элемент 3.</li> <li>Элемент 4.</li> </ul> </div>
Сейчас, не читая дальше, попробуйте придать стиль только «элементу 2». Когда догадаетесь (либо сдадитесь), читайте дальше.
Решение 1
Есть много способов решить данную задачу. Рассмотри лишь некоторые из них. Начнем с использования first-of-type:
ul:first-of-type > li:nth-child(2) { font-weight: bold; }
Данный код гласит: «Найди первый неупорядоченный список на странице, затем найди только его прямых потомков, являющихся элементами li. После этого выбери только второй по порядку элемент li.»
Решение 2
Другой вариант — воспользоваться смежным селектором:
p + ul li:last-child { font-weight: bold; }
Здесь мы находим ul, следующий непосредственно за тэгом параграфа, после чего находим самый последний его дочерний элемент.
Решение 3
Можно еще немного поиграть с селекторами и поступить таким образом:
ul:first-of-type li:nth-last-child(1) { font-weight: bold; }
Сейчас мы уже получаем первый элемент ul на странице, затем ищем самый первый элемент li, но начиная с конца.
Совместимость:
* IE9+
* Firefox 3.5+
* Chrome
* Safari
* Opera
Вывод
Если Вы все еще пишете код, принимая во внимание существование IE6, то Вам нужно быть предельно осторожным при использовании новых селекторов. Но не делайте из этого оправдания, не говорите, что Вам это не нужно знать — этим Вы осложните жизнь самому себе.
Если Вы работаете с какими-либо JavaScript-библиотеками, например, с jQuery, то всегда старайтесь использовать «родные» CSS3 селекторы, когда это возможно. В этом случае Ваш код будет работать быстрее.
Благодарю за внимание, надеюсь, Вы нашли для себя хотя бы пару-тройку полезных трюков.
По материалам www.net.tutsplus.com
Перевод — Дмитрий Науменко.
P.S. Уже верстаете сайты или планируете глубже освоить CSS? Посмотрите еще серию бесплатных видео по резиновой верстке и бесплатный курс по основам адаптивной верстки. Эти материалы помогут вам продвинуться вперед гораздо быстрее:
Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!
Смотрите также:
Наверх
Учебник CSS для начинающих. Что такое CSS?
Введение
Если Вы уже прошли курс обучения по учебнику HTML или же хорошо знакомы с HTML почерпнув необходимые знания из других источников, то настало время взяться за изучение CSS.
CSS (Cascading Style Sheets) — Каскадные таблицы стилей — это свод стилевых описаний, тех или иных HTML тегов (далее элементов HTML), который может быть применён как к отдельному тегу — элементу, так и одновременно ко всем идентичным элементам на всех страницах сайта. CSS по сути своего рода дополнение к HTML, которое значительно расширяет его возможности.
Ну и что? Спросите Вы.. Зачем мне этот пресловутый CSS? Я и HTML-ом в чистом виде неплохо обходился!
Приведу ряд доводов в пользу использования CSS:
HTML в чистом виде имеет весьма ограниченный набор инструментов не позволяющий решать те или иные дизайнерские и функциональные задумки веб-мастера. Ну вот хотя бы, к примеру, взять больной вопрос всех начинающих веб-ремесленников «Как убрать подчеркивание ссылки?» или «Как сделать чтобы наведя курсором на эту самую ссылку она меняла цвет и подсвечивалась?» с помощью одного HTML этого никак не сделать!! А сколько их еще таких «больных вопросов»? — тьма.. Тут то и приходит на помощь CSS, который решает большинство задач касающихся дизайна сайта.
Предположим, Вы написали сайт в нем 100 страниц.. хороший сайт, информативный, люди на него ходят.. И вдруг по каким либо причинам Вам понадобилось изменить его дизайн, ну не знаю, мода изменилась, Вы нашли более лучшее дизайнерское решение, заказчику пришлось не по душе.. да мало ли еще почему.. Сколько времени и сил у Вас уйдёт на то что бы полностью переделать все 100 страниц сайта? CSS предлагает разумное решение этой задачи. А что если один раз в отдельном файле полностью описать весь дизайн сайта? Допустим: все заголовки <h2> делать красным цветом, параграфы <p> писать курсивам, ссылки <a> не подчёркивать 🙂 фон на всех страницах залить зелёным, и т. д. … а потом просто заставить эти 100 страниц HTML обращаться к файлу CSS и черпать из него нужную информацию? Теперь когда Вам вздумается, к примеру, перекрасить все заголовки из красного в зеленый, Вам ненужно открывать все 100 страниц находить в них теги <h2> и указывать в каждом что ты теперь не красный а зелёный! Вам нужно всего лишь открыть файл описание и изменить в нем цвет элемента <h2> на зелёный и всё!! Все заголовки на всех страницах сайта как по взмаху волшебной палочки станут зелеными.
Ввиду того, что CSS позволяет выносить повторяющиеся стилевые описания одних и тех же элементов в один файл происходит значительная «разгрузка» документов HTML, а это экономия объема, трафика, времени, денег.. HTML код становится лёгким, удобным для чтения и редакции.
Ну как? Заинтриговал? Если да то рекомендую перейти к непосредственному изучению CSS. В главах этого учебника Вы научитесь внедрять каскадные таблицы стилей на страницы Вашего сайта, познакомитесь с основными стилевыми свойствами элементов на примере создания сайта с использованием CSS, вникните в тонкости и хитрости дела. Если Вы уже знакомы c каскадными таблицами стилей и Вас интересует исключительно справочная информация, то предлагаю заглянуть в справочник CSS где собранны и кратко описаны свойства CSS и их возможные значения.
наглядное введение в систему компоновки элементов на веб-странице
CSS Flexbox — это технология для создания сложных гибких макетов за счёт правильного размещения элементов на странице. О самой технологии пишут здесь. Мы же решили объяснить возможности CSS Flexbox с использованием гифок.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
1
display: flex
Есть страница:
На ней размещено 4 div
разных размеров, которые находятся внутри серого div
. У каждого div
есть свойство display: block
. Поэтому каждый блок занимает всю ширину строки. Чтобы начать работать с CSS Flexbox, нужно сделать контейнер flex-контейнером. Делается это так:
#container {
display: flex;
}
Так у блоков появилось свойство flex-контекст, которое в дальнейшем позволит ими управлять гораздо проще, чем с использованием стандартного CSS.
2
flex-direction
У flex-контейнера есть две оси: главная и перпендикулярная ей.
По умолчанию все предметы располагаются вдоль главной оси — слева направо. Именно поэтому блоки в предыдущем примере выстроились в линию, когда мы применили display: flex
. А вот flex-direction
позволяет вращать главную ось.
#container {
display: flex;
flex-direction: column;
}
Обратите внимание, что flex-direction: column
не выравнивает блоки по оси, перпендикулярной главной. Главная ось сама меняет своё расположение, и теперь направлена сверху вниз.
Есть ещё парочка свойств для flex-direction
: row-reverse
и column-reverse
.
3
justify-content
Отвечает за выравнивание элементов по главной оси:
#container {
display: flex;
flex-direction: row;
justify-content: flex-start;
}
Justify-content
может принимать 5 значений:
flex-start
flex-end
center
space-between
space-around
Space-between
задаёт одинаковое расстояние между блоками, но не между контейнером и блоками. Space-around
также задаёт одинаковое расстояние между блоками, но теперь расстояние между контейнером и блоками равно половине расстояния между блоками.
4
align-items
Если justify-content
работает с главной осью, то align-items
работает с осью, перпендикулярной главной оси. Вернёмся к flex-direction: row
и пройдёмся по командам align-items
:
flex-start
flex-end
center
stretch
baseline
Стоит заметить, что для align-items: stretch
высота блоков должна быть равна auto
. Для align-items: baseline
теги параграфа убирать не нужно, иначе получится так:
Чтобы получше разобраться в том, как работают оси, объединим justify-content
с align-items
и посмотрим, как работает выравнивание по центру для двух свойств flex-direction
:
5
align-self
Позволяет выравнивать элементы по отдельности:
#container {
align-items: flex-start;
}
. square#one {
align-self: center;
}
// Only this square will be centered.
Для двух блоков применим align-self
, а для остальных — align-items: center
и flex-direction: row
.
6
flex-basis
Отвечает за изначальный размер элементов до того, как они будут изменены другими свойствами CSS Flexbox:
flex-basis
влияет на размер элементов вдоль главной оси. Давайте посмотрим, что случится, если мы изменим направление главной оси:
Заметьте, что нам пришлось изменить и высоту элементов: flex-basis
может определять как высоту элементов, так и их ширину в зависимости от направления оси.
7
flex-grow
Это свойство немного сложнее. Для начала зададим блокам одинаковую ширину в 120px:
По умолчанию значение flex-grow
равно 0. Это значит, что блокам запрещено увеличиваться в размерах. Зададим flex-grow
равным 1 для каждого блока:
Теперь блоки заняли оставшееся место в контейнере. Но что значит flex-grow: 1
? Попробуем сделать flex-grow
равным 999:
И… ничего не произошло. Так получилось из-за того, что flex-grow
принимает не абсолютные значения, а относительные. Это значит, что не важно, какое значение у flex-grow
, важно, какое оно по отношению к другим блокам:
Вначале flex-grow
каждого блока равен 1, в сумме получится 6. Значит, наш контейнер разделён на 6 частей. Каждый блок будет занимать 1/6 часть доступного пространства в контейнере. Когда flex-grow
третьего блока становится равным 2, контейнер делится на 7 частей: 1 + 1 + 2 + 1 + 1 + 1. Теперь третий блок занимает 2/7 пространства, остальные — по 1/7. И так далее.
flex-grow
работает только для главной оси, пока мы не изменим её направление.
8
flex-shrink
Прямая противоположность flex-grow
. Определяет, насколько блоку можно уменьшиться в размере. flex-shrink
используется, когда элементы не вмещаются в контейнер. Вы определяете, какие элементы должны уменьшиться в размерах, а какие — нет. По умолчанию значение flex-shrink
для каждого блока равно 1. Это значит, что блоки будут сжиматься, когда контейнер будет уменьшаться.
Зададим flex-grow
и flex-shrink
равными 1:
Теперь поменяем значение flex-shrink
для третьего блока на 0. Ему запретили сжиматься, поэтому его ширина останется равной 120px:
flex-shrink
основывается на пропорциях. То есть, если у первого блока flex-shrink
равен 6, а у остальных он равен 2, то, это значит, что первый блок будет сжиматься в три раза быстрее, чем остальные.
9
flex
Заменяет flex-grow
, flex-shrink
и flex-basis
. Значения по умолчанию: 0 (grow) 1 (shrink) auto (basis)
.
Создадим два блока:
.square#one {
flex: 2 1 300px;
}
.square#two {
flex: 1 2 300px;
}
У обоих одинаковый flex-basis
. Это значит, что оба будут шириной в 300px (ширина контейнера: 600px плюс margin
и padding
). Но когда контейнер начнет увеличиваться в размерах, первый блок (с большим flex-grow
) будет увеличиваться в два раза быстрее, а второй блок (с наибольшим flex-shrink
) будет сжиматься в два раза быстрее:
Ещё больше возможностей свойства вы можете найти в анимированном руководстве по CSS flex.
10
Дополнительно
Как с CSS Flexbox меняется размер?
Когда увеличивается первый блок, он не становится в два раза больше второго, и когда уменьшается второй, он также не становится в два раза меньше первого. Это происходит из-за того, что flex-grow
и flex-shrink
отвечают за темп роста и сокращения.
Немного математики
Начальный размер контейнера: 640px. Вычтем по 20px с каждой стороны для padding
, и у нас останется 600px для двух блоков. Когда ширина контейнера становится равной 430px (потеря в 210px), первый блок (flex-shrink: 1
) теряет 70px. Второй блок (flex-shrink: 2
) теряет 140px. Когда контейнер сжимается до 340px, мы теряем 300px. Первый блок теряет 100px, второй — 200px. То же самое происходит и с flex-grow
.
Если вы также интересуетесь CSS Grid, можете ознакомиться с нашей статьёй, где мы рассматриваем Flexbox и Grid.
Перевод статьи «How Flexbox works — explained with big, colorful, animated gifs»
69Что верстальщик должен знать про OOCSS и организацию CSS
В курсах профессии «Верстальщик» и его проектах часто используется понятие OOCSS. По этому принципу выстроена большая часть организации CSS-кода внутри профессии. Что же обозначают эти символы?
OOCSS — Object Oriented CSS или объектно-ориентированный CSS. Это один из подходов к организации CSS-кода, отличительной чертой которого является разделение структуры элемента и его оформление.
Зачем же вообще организовывать код CSS и как здесь помогает OOCSS? Чтобы разобраться, возьмём типичный пример CSS, который можно встретить во многих проектах, где нет соглашения об организации кода.
/* Эту часть писал разработчик №1 */
.btn {
width: 150px;
height: 50px;
font-size: 13px;
background: white;
border: 1px solid #333;
}
/* Эту часть писал разрабочик №2 */
.form-order button {
width: 150px;
height: 50px;
font-size: 13px;
background: blue;
}
.button-project {
width: 150px;
height: 50px;
font-size: 13px;
border: 1px solid;
}
/* Разрабочик №1 вернулся и дописал новую кнопку */
.btn-blue-text {
width: 150px;
height: 50px;
font-size: 13px;
color: blue;
background: white;
border: 1px solid #333;
}
Здесь можно увидеть две проблемы, от которых можно избавиться:
- Многие стили повторяются. Если в проекте возникнет потребность изменить размер кнопок, то придётся править много классов.
- Разработчики используют разные подходы к именованию. Может сложиться впечатление, что верстальщики будут смотреть стиль написания предыдущего класса, но зачастую этого не происходит. Каждый начинает писать так, как удобно и привычно ему.
Чем больше проект и чем больше задействовано разработчиков, тем больше таких разных классов в нём возникает. А ведь элементы одинаковые. В них изменяются только внешние признаки: цвет, стиль границ и так далее.
На сегодняшний день существуют разные способы, которые помогают избежать всех этих проблем и привести CSS к единому виду, который возможно легко масштабировать и читать. Одним из таких подходов и является OOCSS.
Как и было сказано в самом начале, методология OOCSS базируется на двух основных вещах:
- Стили структуры
- Стили оформления
К структуре относится всё, что непосредственно влияет на расположение контента внутри. Пользователи обычно «не видят» эти стили — пока у элемента нет оформления, он просто будет представлен пустым блоком. К стилям структуры можно отнести:
- Высоту
- Ширины
- Внутренние и внешние отступы
К стилям оформления относятся:
- Фон
- Шрифты
- Тени и цвет границ.
Для понимания разницы можно использовать следующий принцип: если стиль отвечает за то, как элемент расположен, то это стиль структуры, а если как выглядит, то это стиль оформления.
Теперь возьмём стили из примера выше и определим, что из них является структурой, а что оформлением.
/* Стили структуры */
.btn {
width: 150px;
height: 50px;
}
/* Стили оформления */
.btn-blue {
background: blue;
color: white;
border: 1px solid #f9f9f9;
}
.btn-red {
background: red;
color: white;
border: 1px solid #f9f9f9;
}
Теперь все кнопки стандартизированы. У них есть общий класс .btn
, который отвечает за структуру кнопок. При доработках структуры будет достаточно изменить этот класс, и он применится ко всем кнопкам сразу. Оформление кнопок теперь тоже основывается на классах, что помогает быстро их менять при необходимости.
Начните изучать разработку с бесплатного курса «Основы современной вёрстки». Вы научитесь создавать статические веб-страницы, стилизовать элементы, использовать редакторы кода с полезными расширениями. В конце курса вы опубликуете свой первый сайт на GitHub Pages.
Ещё одной особенностью подхода OOCSS является то, что отсутствует привязка к конкретному тегу. Все структурные классы можно применять к любым тегам (в рамках разумного, конечно же). Как кнопки могут быть оформлены не только элементы с тегом <button></button>
, но и ссылки <a></a>
. Если доработать класс .btn
, то он может учитывать все эти моменты.
.btn {
display: block;
width: 150px;
height: 50px;
border: none;
background: none;
cursor: pointer;
}
Использование данных классов выглядит следующим образом:
<a href="#best-section">Перейти к блоку</a>
<form action="/index.php">
<label for="name">Имя:</label>
<input type="text">
<button>Отправить</button>
</form>
Достоинства OOCSS
Масштабируемость
Применение OOCSS позволяет легко дополнять CSS-код и переиспользовать его. Не привязывая классы к конкретному элементу, мы оставляем простор для переиспользования и комбинации различных классов. В совместной разработке этот подход позволит легче войти новым разработчикам. Последнее относится не только к OOCSS, но и к любой методологии организации CSS кода.
Простота
Для новичков такой подход может быть легче, чем другие. Дело в том, что OOCSS не накладывает ограничения на именование, не закрыт в рамках конкретного стандарта, что позволяет думать конкретно о реализации разделения структуры и оформления, а не об именовании и грамотной вложенности элементов внутри HTML.
Недостатки OOCSS
Большое количество классов в HTML
Все подходы к организации CSS можно разделить на две условные группы:
- Чистота CSS при усложнённом HTML
- Чистый HTML при усложнённом CSS
OOCSS относится к первой группе. За чистотой и переиспользованием CSS стоит захламление HTML. Один элемент при данном подходе может иметь много классов. Это нормальная ситуация.
Ограниченное применение
OOCSS — подход для больших проектов. Его использование на маленьких проектах может быть излишним, поэтому сфера применения достаточно узкая. Всегда подходите к вёрстке «с головой» и не используйте большие инструменты там, где можно обойтись без них. Чем больше планируется проект, тем больше стоит задумываться над организацией CSS.
Заключение
OOCSS не является магическим знанием, которое решит все ваши проблемы. Это не под силу никакой методологии. По мере получения опыта вы найдёте подходящую для вас методологию, которая будет отвечать всем вашим требованиям. Приучайте себя организовывать код с самого начала пути в разработке. Это выработает привычку, которая поможет вам в будущем быстро создавать читаемый и поддерживаемый CSS-код.
Всё о свойстве float | CSS-Tricks по-русски
Всё о свойстве float
Что такое «float»?
Float — это свойство CSS для позиционирования элементов. Для того чтобы понять его назначение и происхождение, можно обратиться к полиграфическому дизайну. В компоновке при печати, изображения могут располагаться на странице так, чтобы текст «обтекал» их. Обычно это так и называется: «обтекание текстом».
В программах для вёрстки страниц, элементы с текстом, могут учитывать изображения, а также и игнорировать их. В случае если они будут проигнорированы, текст будет отображаться над картинками, как будто их и нет. Это главная разница между тем, являются ли изображения частью основного потока страницы, или нет. Веб-дизайн очень похож.
В веб-дизайне, элементы страницы с установленным свойством float, ведут себя точно также как и изображения в полиграфии, когда текст «обтекает» их. Такие элементы являются частью основного потока веб-страницы. Однако всё обстоит иначе, если элементы используют абсолютное позиционирование. Абсолютно позиционированные элементы удаляются из основного потока страницы, подобно примеру выше, когда в полиграфии текст игнорирует изображения. Такие элементы не влияют на позицию остальных элементов, соприкасаются они или нет.
Установка свойства float происходит следующим образом:
#sidebar {
float : right;
}
Всего есть 4 значения для свойства float. Left и right используются для соответствующих направлений. None (по умолчанию) — обеспечивает, что элемент не будет «плавать». И inherit, которое говорит, что поведение должно быть такое же, как и у родительского элемента.
Для чего можно использовать float?
Помимо обтекания текстом изображений, float может использоваться для создания макета всего сайта.
Свойство float также полезно и в меньших масштабах. Для примера рассмотрим маленькую область на странице сайта. Допустим вы используете float для аватара, при изменении размера изображения, размер текста будет подогнан в соответствии с изображением.
Такое же расположение объектов может быть достигнуто путём использования позиционирования. Объекту-контейнеру присваивается относительное (relative) позиционирование, а объекту с изображением — абсолютное (absolute). В этом случае аватар не повлияет на положение текста.
Отмена свойства float
Для float, родственное свойство — clear. Любой элемент, у которого установлено свойство clear, не будет поднят вверх, как от него ожидается, а отобразится ниже, после float-элементов. Возможно, пример на картинке объяснит лучше, чем слова.
В примере, сайд-бар прижат к правому краю (float: right;), а его высота меньше, чем область основного контента. Поэтому footer будет поднят выше, поскольку для него хватает высоты и этого требует поведение float. Чтобы исправить ситуацию, ему необходимо установить свойство clear, которое гарантирует, что элемент выведется ниже float-элементов.
#footer {
clear: both;
}
Свойство clear может принимать четыре значения. Both, наиболее используемое, применяется для отмены float каждого из направлений. Left и Right — используются для отмены float одного из направлений. None — по умолчанию, обычно не используется, за исключением случаев, когда необходимо отменить значение clear. Значение inherit было бы пятым значением, но оно странным образом не поддерживается в Internet Explorer. Отмена только левого или правого float, встречается гораздо реже, но, безусловно, имеет свои цели.
Большой коллапс
Ещё одна удивительная вещь при работе со свойством float — это то, что его использование может влиять на родительский элемент. Если такой элемент содержит только float-элементы, то он буквально схлопывается, то есть его высота равна нулю. Это не всегда заметно, если у родительского элемента не установлен какой-либо видимый фон.
Такое схлопывание выглядит нелогичным, однако альтернатива ещё хуже. Рассмотрим такой пример:
Если блочный элемент, располагающийся наверху, будет автоматически увеличиваться, чтобы вместить все float-элементы, то мы получим неестественный разрыв в тексте между параграфами, без всякой возможности это исправить. Если бы было именно так, наши дизайнеры жаловались бы гораздо чаще такому поведению, чем схлопыванию.
Таким образом, схлопывание почти всегда необходимо, чтобы предотвратить трудности в вёрстке. Для того чтобы изменить такое поведение, необходимо добавить элемент отменяющий float после float-элементов, но до закрытия родительского элемента.
Способы отмены float
Если вам известно, что следом после float-элементов, всегда будет выводится какой-либо другой элемент (например футер), то вам достаточно ему установить свойство clear: both;, как в примере выше, и заниматься дальше своими делами. Это идеальный вариант, поскольку он не требует каких-либо хаков, или дополнительных элементов. Конечно не всё в нашей жизни так гладко и бывают случаи когда такого способа не достаточно. Поэтому необходимо иметь несколько дополнительных способов в своём арсенале.
И, как вы понимаете, каждый из способов используется в различных ситуациях. Возьмём, к примеру, сетку из блочных элементов, отличающихся типами.
Для более лучшего визуального представления было бы неплохо объединить подобные блоки. Например мы хотим, чтобы каждый тип начинался с новой строки, в нашем случае тип элемента определяется цветом. Мы можем использовать метод с overflow или «метод простой очистки», если у каждой группы есть свой элемент-контейнер. Или же мы можем использовать метод пустого div-а между каждой из групп. Три элемента-контейнера, или три пустых div-а, что лучше для вашей задачи — решать вам.
Проблемы с float
Float часто стараются обходить, поскольку работать с ними надо очень аккуратно. Большинство ошибок пришло вместе с IE6. Поскольку всё больше и больше веб-дизайнеров отказываются от поддержки IE6, то вас могут и не волновать эти проблемы. Но для тех, кому не всё равно, вот краткий список.
- «Выталкивание» (pushdown). Возникает когда элемент внутри float-элемента оказывается шире его (обычно это изображения). Большинство браузеров обработает такие элементы вне float-структуры и вёрстка не будет сломана. IE расширит элемент, чтобы изображение влезло, зачастую это ломает дизайн. На картинке представлен пример, как изображение торчит из основного контента и таким образом «выталкивает» сайд-бар вниз. Самый просто способ избежать этого — это проверить что все ваши изображения подходят по ширине. Можно использовать overflow: hidden;, чтобы обрезать выступающую часть.
- Двойной внешний отступ. Ошибка проявляющаяся в IE6, в случае если вы устанавливаете внешний отступ в том же направлении, в котором у вас указан float. В этом случае отступ удваивается. Чтобы исправить это, необходимо установить плавающему (float) элементу свойство display: inline;, не беспокойтесь, элемент по прежнему будет блочным.
- Трёх-пиксельный прыжок (3px Jog). Ошибка, которая проявляется следующим образом: текст, который расположен рядом с float-элементом неожиданно съезжает на 3 пикселя. Чтобы избежать этого, необходимо установить ширину или высоту пострадавшему тексту.
- В IE7 существует Ошибка нижнего внешнего отступа (Bottom Margin Bug) — возникает когда элемент с установленным свойством float, содержит в себе ещё один float-элемент. В таких случаях, нижний внешний отступ дочернего элемента игнорируется. Для обхода этой проблемы необходимо использовать внутренний отступ родительского элемента, вместо внешнего отступа дочернего.
Альтернативы float
Если вам необходимо обтекание картинки текстом, то альтернатив нет. Но для макета страницы, определённо есть выбор. Существуют очень интересные подходы, в которых комбинируется гибкость float с мощью абсолютного позиционирования. В CSS3 есть, так называемый, Модуль разметки шаблона (Template Layout Module), который в будущем предоставит достойную альтернативу float.
Что такое CSS
CSS обозначает C ascading S tyle S heets
CSS описывает, как должны отображаться HTML элементов
Пример CSS
кузов
{цвет фона: голубой; выравнивание текста: центр;}
h2
{цвет синий; font-size: 40px;}
p
{семейство шрифтов: вердана;
font-size: 20px;}
Попробуй сам »
Нажмите кнопку «Попробуйте сами», чтобы увидеть, как это работает.
Синтаксис CSS
Правило CSS состоит из селектора и блока декларации :
Селектор указывает на элемент HTML для стиля (h2).
Блок объявлений (в фигурных скобках) содержит одно или несколько объявлений, разделенных символом точка с запятой.
Каждое объявление включает имя свойства CSS и значение, разделенные двоеточием.
В следующем примере все элементы
будут выровнены по центру, красные и иметь размер шрифта 32 пикселя:
Пример
<стиль>
п.
{размер шрифта: 32 пикс; красный цвет;
выравнивание текста: центр;}
Тот же пример можно записать так:
<стиль>
п.
{
размер шрифта: 32 пикселя;
цвет: красный;
выравнивание текста: центр;
}
Внешняя таблица стилей
Таблица стилей CSS может храниться во внешнем файле :
mystyle.CSS
тело {цвет фона: оранжевый; font-family: verdana}
h2 {color: white;}
p {font-size: 20px;}
Внешние таблицы стилей связаны с HTML-страницами с помощью тегов :
Пример
Мой первый пример CSS
Это абзац.