Подключение стилей
Писать стили сегодня принято в отдельном CSS-файле и затем подключать его с помощью тега . А вот инлайн-стилей стараются избегать, хотя они тоже бывают полезными.
Почему это важно
Скопировать ссылку «Почему это важно» Скопировано
От того, как вы подключаете стили на страницу, зависит, как быстро она отобразится, однако некоторые варианты подключения стилей могут привести к неожиданным последствиям. Например, если к элементу одновременно применить и внешние, и инлайн-стили с разными значениями CSS-свойств, то применятся инлайн-стили, так как у них более высокий приоритет. Разберёмся, какие у каждого способа достоинства и недостатки, и какой из них вам подойдёт.
Внешний файл со стилями
Скопировать ссылку «Внешний файл со стилями» Скопировано
При этом подходе CSS пишется в отдельном файле с расширением .css. Такие стили ещё называют связанными.
Для связывания страницы с файлом стилей используется тег внутри :
head> link rel="stylesheet" href="main.css"> head>
Атрибут rel = "stylesheet" указывает, что этот файл является таблицей стилей. В href указывается относительный или абсолютный путь к CSS-файлу.
А вот какие стили содержатся в файле main.css:
h1 color: green; font-size: 24px;> p font-size: 24px;>h1 color: green; font-size: 24px; > p font-size: 24px; >
Ещё таким образом можно подключать файл стилей, который находится на другом сайте. Например, когда подключаете шрифты с Google Fonts.
Преимущества
Скопировать ссылку "Преимущества" Скопировано
- Можно использовать один CSS-файл для нескольких страниц. Изменение стилей в таком файле автоматически применится ко всем страницам, к которым он подключён.
- При первой загрузке страницы файл со стилями кэшируется, и в следующие разы она открывается быстрее.
- Во внешних стилях можно свободно использовать псевдоклассы и псевдоэлементы. Например, задавать интерактивные состояния отдельно выбранным кнопкам, стилизовать каждый чётный элемент списка и тому подобное.
Внешний CSS также позволяет использовать кастомные свойства.
Встроенные стили
Скопировать ссылку "Встроенные стили" Скопировано
Вариант, когда CSS-свойства описываются в самом HTML-документе внутри тега в шапке страницы:
h1 color: tomato; > p font-size: 24px; >head> style> h1 color: tomato; > p font-size: 24px; > style> head>
Преимущества
Скопировать ссылку "Преимущества" Скопировано
- Поскольку код находится непосредственно в HTML-файле, браузер не загружает сторонние файлы. Это позволяет отрисовать страницу быстрее.
- Встроенные стили работают изолированно и применяются непосредственно к странице, на которой прописаны.
- Можно использовать псевдоклассы и псевдоэлементы.
Недостатки
Скопировать ссылку "Недостатки" Скопировано
- С каждым новым правилом вес HTML-файла будет увеличиваться и страница будет загружаться медленнее.
- Со временем такие же стили могут понадобиться на других страницах, и CSS придётся дублировать.
Импорт CSS
Скопировать ссылку "Импорт CSS" Скопировано
Этот вариант тоже требует подключения внешнего файла стилей. Отличие в том, что этот файл содержит не весь CSS-код разом, а стили разбиты на отдельные файлы и подключаются с помощью директивы @import .
Посмотрим, как это делается. Даём ссылку на CSS-файл через тег :
link rel="stylesheet" href="main.css">
Затем в main.css импортируем несколько других CSS-файлов, header.css для шапки сайта, navbar.css для меню, и так далее:
@import url("header.css");@import url("navbar.css");@import url("footer.css");@import url("grid.css");@import url("header.css"); @import url("navbar.css"); @import url("footer.css"); @import url("grid.css");
Преимущества
Скопировать ссылку "Преимущества" Скопировано
По мере того как ваш проект растёт в размерах и сложности, поддержка CSS-файлов тоже усложняется. @import помогает разбить массивную таблицу стилей на более мелкие и понятные части.
Недостатки
Скопировать ссылку "Недостатки" Скопировано
Подключение стилей при помощи CSS-файла, в котором директивы @import подключают другие файлы, может значительно увеличить время отрисовки страницы. Браузер узнает о существовании других CSS-файлов слишком поздно, а если и в них окажутся импорты, то всё будет ещё хуже.
Если вам очень нужно подключить несколько файлов, лучше добавить несколько элементов .
Иногда так всё же делают при разработке сайтов, чтобы не тратить время на сборку многих файлов и просто подключать их одним файлом с кучей импортов. Но перед публикацией сайта все эти импорты «склеиваются» в один файл для более эффективной загрузки.
Инлайн-стили
Скопировать ссылку "Инлайн-стили" Скопировано
В этом варианте элементам, которые необходимо оформить, добавляется атрибут style . Значением этого атрибута могут быть свойства и значения CSS, которые и применятся к элементу:
Заголовок
Текст
h1 style="сolor: yellow; margin: 10px 20px">Заголовокh1> p style="text-align: right; font-size: 12px">Текстp>
Преимущества
Скопировать ссылку "Преимущества" Скопировано
- Как и со встроенными стилями, браузеру не нужно запрашивать файл, что ускоряет рендеринг.
- Не нужно писать селекторы, потому что стили применяются сразу к нужному элементу.
- Удобно отлаживать код или делать быстрые правки прямо в админке, без разворачивания проекта.
Недостатки
Скопировать ссылку "Недостатки" Скопировано
Однако несмотря на преимущества, инлайн-стили — это антипаттерн. Недостатков у этого подхода слишком много.
Приоритет. У инлайн-стилей наивысший приоритет, их нельзя переопределить с помощью селекторов по идентификатору, классу или тегу во внешнем CSS. Единственный способ это сделать — добавить !important к значению свойства. Но этот приём тоже считается плохой практикой.
Переиспользование. При использовании инлайн-стилей мы будем вынуждены добавлять инлайн-стили к каждому элементу, который необходимо оформить. Если элементов на странице много, прописывать стили вручную станет неудобно.
Всё в одну кучу. Оформление при помощи инлайн-стилей нарушает принцип «разделения содержимого и оформления».
Псевдоклассы и псевдоэлементы. В инлайн-стилях нельзя использовать псевдоклассы и псевдоэлементы.
Восприятие кода. Если писать стили внутри атрибута style , то HTML становится трудно читать. Логическая структура перестаёт быть видна, стили размазываются по всему коду. И чем крупнее проект, тем сложнее управлять оформлением.
Согласитесь, что такой код читать намного труднее:
Заголовок
У моей кошки светло-синие глаза.
h1 style="сolor: yellow; margin: 10px 20px 15px 10px;">Заголовокh1> div style="border: 1px solid red; max-widht: 500px; margin: auto"> p>У моей кошки span style="color: lightblue;">светло-синиеspan> глаза.p> div>
Заголовок
У моей кошки светло-синие глаза.
h1 class="title">Заголовокh1> div class="wrapper"> p>У моей кошки span class="eyes">светло-синиеspan> глаза.p> div>
На практике
Скопировать ссылку "На практике" Скопировано
Никита Канищев советует
Скопировать ссылку "Никита Канищев советует" Скопировано
Одна из самых распространённых областей применения инлайн-стилей — почтовые рассылки.
По соображениям безопасности почтовые службы (например, Яндекс.Почта или Gmail) блокируют загрузку внешних ресурсов, в том числе и файлы стилей. Поэтому разработчикам ничего не остаётся, кроме как использовать инлайн-стили.
Вот так может выглядеть HTML-разметка при вёрстке письма:
border="0" cellpadding="0" cellspacing="0" width="100%" style block-code__original-line"> font-size:28px;font-weight:500; text-align:center;padding:0;margin:0"> style="padding-top:20px;padding-bottom:20px;" align="right" valign="middle" > style block-code__original-line"> font-size:12px;font-weight:400; line-height:20px;padding:0;margin:0" > Привет, это рассылка!table border="0" cellpadding="0" cellspacing="0" width="100%" style="color:#000;font-family:Poppins,sans-serif; font-size:28px;font-weight:500; text-align:center;padding:0;margin:0" > tbody> tr> td style="padding-top:20px;padding-bottom:20px;" align="right" valign="middle" > p style="color:#bbb;font-family:'Open Sans',sans-serif; font-size:12px;font-weight:400; line-height:20px;padding:0;margin:0" > Привет, это рассылка! p> td> tr> tbody> table>
Конспект: основы CSS
CSS — это язык для оформления структурированных документов, например, HTML- документов. Синтаксис — это плоский список CSS-правил. CSS-правило состоит из селектора и перечня свойств и их значений:
селектор
Для комментариев в CSS используются символы /* и */ .
Селекторы
Селектор находится в начале CSS-правила, до фигурных скобок, и определяет, к каким HTML-элементам применятся свойства и значения из правила.
.feature-kitten
Простейшие (и самые популярные) селекторы — это селекторы по тегам и по классам. Селекторы по тегам содержат имя тега без символов < и >и применяются ко всем подходящим тегам. Селекторы по классам начинаются с точки, за которой идёт имя класса, и применяются ко всем тегам с подходящим атрибутом class .
h1 < color: red; >.info
На странице может быть несколько списков, и стили применятся ко всем спискам, даже к тем, которые вы менять не хотели. Чтобы избежать таких ситуаций, лучше не использовать селекторы по тегам или использовать их как можно реже.
Если у CSS-правил отличаются только селекторы, а свойства и значения одинаковые, то их можно сгруппировать через запятую.
Также можно комбинировать любые типы селекторов через пробел. Такие селекторы называются вложенными или контекстными и читаются справа налево. Например:
nav a .menu ul .post .title
Свойства и значения
Список свойств и значений находится внутри фигурных скобок CSS-правила. Свойство определяет, какую характеристику внешнего вида мы хотим изменить, а значение — как именно.
.feature-kitten
Каждый раз, когда мы добавляем новое свойство или изменяем его значение, мы меняем что-то на странице.
Наследование
Наследование в CSS — это механизм, с помощью которого значения свойств элемента-родителя передаются его элементам-потомкам. Стили, присвоенные одному элементу, наследуются всеми потомками (вложенными элементами), но только в том случае, если они где-то явно не переопределены.
Составные свойства
В CSS есть обычные свойства, управляющие одним параметром отображения, и есть составные свойства, управляющие одновременно несколькими параметрами. Например, свойство font . Оно задаёт сразу шесть параметров: размер и название шрифта, высоту строки и некоторые другие.
font: 16px/26px "Arial", sans-serif;
Если значение обычного свойства не было задано в составном, то браузер при «расшифровке» использует исходное значение этого свойства.
Типы значений: абсолютные и относительные
Абсолютные единицы измерения привязаны к настоящим физическим размерам и связаны между собой жёсткими пропорциями. Пиксели, px , используют чаще всего, остальные абсолютные единицы почти не применяют. Примеры абсолютных единиц измерения:
font-size: 1cm; font-size: 10mm; font-size: 38px;
Относительные единицы измерения описывают значения, которые зависят от других значений. Например, ширина элемента в процентах зависит от ширины родительского элемента, а ширина элемента в em зависит от размера шрифта самого элемента. К относительным единицам относятся em , rem , vh , vw и некоторые другие, ну и, конечно же, проценты.
Стили по умолчанию
-
есть отступы и маркеры. Такие стили называются стилями по умолчанию и задаются внутри браузерных стилей изначально. Их можно переопределить или сбросить, задав другие значения свойств элементу.
Каскадирование
Когда браузер отрисовывает страницу, он должен определить итоговый вид каждого HTML-элемента. Для этого он собирает все CSS-правила, которые относятся к каждому элементу, ведь на элемент могут влиять сразу несколько CSS-правил. Механизм комбинирования стилей из разных источников в итоговый набор свойств и значений для каждого тега называется каскадностью. Например, есть такой элемент в разметке:
Зелёный - мой любимый цвет
.beloved-color
margin: 1em 0;
color: green; margin: 1em 0;
Конфликт свойств
На один элемент могут действовать несколько CSS-правил. Если в этих правилах есть одинаковые свойства с разными значениями, то возникает конфликт. Например:
ul < list-style: disc; >.blog-navigation ul
Браузеру нужно как-то решать, какими будут итоговые значения конфликтующих свойств. Конфликт разрешается максимум за три шага. Если на текущем шаге определиться не удалось, то выполняется следующий шаг. Вот эти шаги:
- Сравниваются приоритеты стилевых файлов, в которых находятся конфликтующие свойства. Например, авторские (то есть наши) стили приоритетнее браузерных.
- Сравнивается специфичность селекторов у CSS-правил с конфликтующими свойствами. Например, селектор по классу более специфичен, чем селектор по тегу.
- Побеждает то свойство, которое находится ниже в коде.
Каскад работает и внутри CSS-правил.
Встраивание и подключение внешних стилей
Внешние стили подключаются через тег
Встраивание стилей в тег . Его обычно размещают внутри :
Такой способ используется для оптимизации загрузки страницы, ведь в таком случае браузер не будет отправлять дополнительных запросов на сервер.
Встраивание в атрибут style :
</div>
Свойства и значения, прописанные таким образом, применятся точечно к одному элементу.
Обычно использование этого способа считается плохой практикой. Но иногда в виде исключения бывает удобнее воспользоваться встраиванием стилей в атрибут style , чем писать отдельные CSS-правила. Например, когда нужно управлять стилями именно из разметки, и создавать отдельные классы при этом будет излишне. Так бывает, когда какие-то стилевые параметры устанавливаются с помощью сторонних программ или другими людьми, например, через CMS.
- Наша группа в VK
- Наш канал на YouTube
- Наша страница в Twitter
- Наш канал в Telegram
Обучение CSS
Начинаем работу с HTML + CSS
Это краткое руководство предназначено для людей, начинающих свое изучение CSS в первый раз.
В конце данной статьи Вы создадите HTML файл который будет выглядеть как этот:
Полученная HTML страница с цветами и разметкой сделанной при помощи CSS.
Заметьте, что я не претендую на то, что это очень красиво ☺
Разделы помеченные даным знаком необязательны. Они содержат дополнительные объяснения HTML и CSS кода в приведенных примерах. Знак “внимание!” в начале абзаца обозначает более расширенную информацию чем остальной текст.
ШАГ 1: написание HTML кода
Для этой статьи я предлагаю использовать простейшие утилиты, например Блокнот от Windows, TextEdit на Mac или KEdit под KDE вполне подойдут под задачу. Как только Вы поймете основные принципы, вы можете переключиться на использование более продвинутых инструментов разработки, например на такие коммерческие программы как Style Master или DreamWeaver. Но для создания первого CSS файла не стоит отвлекаться на множество расширенных возможностей.
Не используйте текстовый редактор наподобие Microsoft Word или OpenOffice. Эти программы обычно создают файлы, которые не могут быть прочитаны браузерами. Для HTML и CSS файлов нам нужны обычные текстовые файлы без какого-либо формата.
Первый шаг заключается в открытии пустого окна текстового редактора (Notepad, TextEdit, KEdit или любого Вашего любимого) и наборе в нем следующего текста:
Вам не обязательно это перенабирать - вы можете просто скопировать и вставить текст с этой страницы в редактор.
(Если вы используете TextEdit на Макинтоше, не забудьте указать TextEdit'у, что это действительно простой текстовый файл, открыв меню Format и выбрав опцию “Make plain text”.)
Первая строчка нашего HTML файла говорит браузеру о типе документа (DOCTYPE обозначает DOCument TYPE). В нашем случае - это HTML версии 4.01.
Слова между < и >называются тэгами и как вы можете видеть, документ содержится между и тэгами. Между
and находится различная информация, которая не отображается в самом документе. Например там содержится заголовок документа. Позже мы добавим туда и связь с CSS файлом.Тэг это место содержимого документа. В принципе, все что находится внутри этого тэга за исключением текста между , являющегося комментариями, будлет выведено на экран. Комментарий браузером игнорируется.
-
в нашем примере задает отображение “неупорядоченного списка” (Unordered List), т.е. списка, элементы которого непронумерованы. Тэги
начинают “элементы списка” (List Item). Тэг
является “параграфом”. А тэг - “якорь” (Anchor), с помощью которого создаются гиперссылки.

Код HTML в редактор KEdit.
- Тэг “ul” - список состоящий из одной ссылки на каждый элемент списка. Эта структура послужит нам “навигацией” по нашему сайту связывая с нами другие страницы нашего гипотетического сайта . Предполагается, что все страницы нашего сайта будут иметь схожее или идентичное меню.
- Элементы “h1” и “p” задают содержимое уникальное каждой страницы, в то время как подпись (“address”) снизу снова будет повторяться на всех страницах.
Давайте предположим, что данная страница будет одной из страниц Веб сайта, состоящего из нескольких похожих страниц. Как мы и договорились, эта страница будет содержать ссылки на другие страницы нашего гипотетического сайта, уникальное содержимое и подпись.
Выберите “Сохранить как…” или “Save As…” из выпадающего меню Файл или File, укажите каталог для сохранения файла (например Рабочий Стол) и сохраните данный файл как “mypage.html”. Не закрывайте редактор, он нам еще потребуется.
(Если вы используете TextEdit для Mac OS X версии меньше чем 10.4, вы увидите опцию "Don't append the .txt extension" в диалоговом окне "Save as". Выберите эту опцию, потому что имя файла “mypage.html” уже включает в себя расширение. Более новые версии TextEdit заметят .html расширение автоматически.)
Далее, откройте файл в браузере. Вы можете сделать это следующим образом: найдите файл вашим файловым менеджером (Проводник, Windows Explorer, Finder or Konqueror) и щелкните (единожды или дважды) на нем. Если вы делали все как описано то имя файла будет “mypage.html”. У вас должен открыться файл в браузере, установленном по умолчанию. (Если нет, то откройте браузер и перетащите файл в его окно.)
Как Вы видите, страница выглядит достаточно скучно…
ШАГ 2: изменяем цвета
Возможно, вы видите некоторый черный текст на белом фоне, но это зависит от конфигурации браузера. Для того чтобы страница выглядела более стильно, мы можем сделать очень легко одну простую вещь - добавить цвета. (Оставьте окно браузера открытым - мы к нему еще вернемся)
Мы начнем со стилей, встроенных в HTML файл. Позже, мы положим CSS стили и HTML разметку в разные файлы. Раздельное хранение хорошо тем, что легче использовать те же самые стили для множества HTML файлов: Вам нужно написать CSS стили только один раз. Но на этом шаге мы оставим все в одном файле.
Нам нужно добавить элемент к HTML файлу. Определения стилей будут внутри этого тэга. Возвращаемся к редактору и добавляем следующие пять строчек в заголовок HTML кода между тэгами
и . Строки, которые надо добавить выделены красным (с 5-й по 9-ю) .My first styled page body [и т.д.]
Первая строка говорит браузеру о том, что это таблица стилей и что она написана на CSS (“text/css”). Вторая строка говорит, что мы применяем стиль к элементу “body”. Третья устанавливает цвет текста в пурпурный, а следующая устанавливает цвет фона в желто-зеленый оттенок.
- селектор (в нашем примере: “body”), которые говорит о том, к какой части документа применить правило;
- свойство (в нашем примере свойствами являются 'color' и 'background-color'), которое указывает что именно мы устанавливаем у данного элемента, выбранного селектором;
- и значение ('purple' и '#d8da3d'), которое устанавливает значение атрибута.
Наш пример показывает что правила могут быть скомбинированы. Мы установили два свойства, так же мы могли задать их раздельно:
body < color: purple >body
Фон элемента body так же является фоном целого документа. Мы явно не назначили другим элементам (p, li, address…) фона, так что по умолчанию у них его нет (или он прозрачный). Свойство 'color' устанавливает цвет текста элемента body, но все остальные элементы внутри body наследуют этот цвет, пока для них не задан другой в виде другого правила. (Мы добавим другие цвета позже.)
Теперь сохраните этот файл (используйте команду “Сохранить” или “Save” из файлового меню) и переключитесь обратно в браузер. Если вы нажмете кнопку “обновить” , то изображение сменится со “скучной” страницы на разукрашенную (но все еще однообразную) страницу. Кроме ссылок сверху, весь текст должен быть пурпурный на желто-зеленом фоне.
Теперь браузер показывает страницу к которой мы добавили цвет.
В CSS можно задавать цвета несколькими способами. Наш пример показывает два из них: по имени (“purple”) и по шестнадцатиричному коду (“#d8da3d”). Существует порядка 140 имен цветов и 16 шестнадцатиричных значений. Добавляя прикосновение стиля объясняет детали относительно этих кодов.
ШАГ 3: изменяем шрифты
Еще одна вещь которую можно сделать - шрифтовое разнообразие разных элементов на странице. Давайте напишем шрифтом “Georgia” весь текст, исключая заголовки, которые мы напишем “Helvetica.”
В текстовом редакторе добавьте следующие строки (строки 7-8 и 11-13) :
My first styled page [и т.д.]
Если вы сохраните файл снова и нажмете “обновить” в браузере, то у вас должны быть разные шрифты в заголовках и в тексте.
Сейчас шрифт заголовков и основного текста различается.
ШАГ 4: добавляем навигацию
Список наверху HTML страницы представляет из себя навигацию по сайту. Множество сайтов имеют навигационное меню вверху страницы или по сторонам от содержимого. Наша страница тоже не будет исключением. Мы поместим меню слева, потому что это несколько привлекательнее, чем наверху.
-
вверху. Ссылки в нем не работают, потому что наш “сайт” пока что состоит только из одной страницы, но это неважно в данный момент. Конечно же, на настоящем сайте не должно быть неработающих ссылок.
Нам нужно переместить список налево и сдвинуть остальное содержимое немного вправо, чтобы создать пространство для него. Свойства CSS которые мы будем использовать для этого - 'padding-left' (для сдвига текста) и 'position', 'left' и 'top' (для сдвига меню).
Есть и другие пути. Если вы поищете термины “столбец” или “верстка” на странице изучая CSS , вы найдете несколько готовых к использованию шаблонов. Но для наших целей сгодится и такой.
В окне редактора добавьте следующие строки к HTML файлу (строки 7 и 12-16) :
My first styled page body < padding-left: 11em; font-family: Georgia, "Times New Roman", Times, serif; color: purple; background-color: #d8da3d > ul.navbar h1 [и т.д.]
Если вы снова сохраните файл и обновите его в браузере то список ссылок получится у вас слева от основного текста. Это уже смотрится интереснее, не так ли?
В отличии от предыдущего файла, в этом главный текст переместился направо а навигация налево
Свойство 'position: absolute' говорит что элемент ul расположен независимо от любого текста который предшествовал или будет следующим за этим элементом, а свойства 'left' и 'top' обозначают это расположение. В нашем случае это 2em сверху и 1em от левого края окна.
'2em' обозначает 2 раза по растоянию, равному размеру текущего шрифта. Т.е., если меню отображается шрифтом в 12 пунктов, то 2em будет равняться 24 пунктам. `em` очень полезная единица измерения в CSS, поскольку может адаптироваться автоматически к шрифту, используемому браузером. Большинство браузеров имеют возможность изменять размеры шрифта: вы можете попробовать увеличить или уменьшить размер и увидеть, что меню будет изменяться в зависимости от размера шрифта, чего бы не случилось, если бы мы указали отступ в пикселях
ШАГ 5: украшаем ссылки
Навигационое меню все еще по-прежнему выглядит как список, вместо меню. Давайте стилизуем его. Мы уберем маркеры списков и переместим элементы налево, где были маркеры. Так же мы нарисуем каждый элемент списка на белом фоне в своем черном квадрате (зачем? просто так, потому что можем).
Мы так же не сказали какими должны быть цвета ссылок, так что давайте добавим и это свойство: синими будут ссылки которые пользователь еще не смотрел, пурпурными - те которые он уже посещал. (строки 13-15 и 23-33) :
My first styled page [etc.]
Обычно браузеры выделяют гиперссылки цветом и подчеркиванием. Обычно, цвета похожи на те, что мы указали: синие для ссылок которые пользователь еще не открывал (или открывал долгое время назад), пурпурные дял страниц, которые он уже видел.
ШАГ 6: добавляем горизонтальные линии
Последним добавлением к нашей таблице стилей станет горизонтальная полоса для разделения текста и подписи снизу. Мы используем свойство 'border-top' для того чтобы добавить прерывистую линию над элементом (строки 34-37) :
My first styled page [и т.д.]
Теперь наше оформление закончено. Давайте вынесем таблицу стилей в отдельный файл, чтобы остальные файлы могли использовать ту же самую таблицу стилей, что и первый файл.
ШАГ 7: внешний CSS
Сейчас у нас есть HTML файл со встроенной таблицей стилей. Но если наш сайт будет разрастаться, возможно, нам потребуется множество страниц, использующих один и тот же стиль оформления. Есть метод получше, чем вставка таблицы в каждую страницу - мы можем вынести стили в отдельный файл, на который будут указывать все страницы.
Для создания отдельного файла таблицы стилей нам нужен другой пустой текстовый документ. Вы можете выбрать пункт “Новый” из меню "Файл" в редакторе , для создания пустого файла. (Если вы используете TextEdit, не забудьте сделать его текстовым снова, используя меню Format.)
Затем вырежьте и вставьте все содержимое внутри
. Они принадлежат HTML коду, а не CSS. В новом окне у вас теперь должен быть полная таблица стилей:
body < padding-left: 11em; font-family: Georgia, "Times New Roman", Times, serif; color: purple; background-color: #d8da3d >ul.navbar < list-style-type: none; padding: 0; margin: 0; position: absolute; top: 2em; left: 1em; width: 9em >h1 < font-family: Helvetica, Geneva, Arial, SunSans-Regular, sans-serif >ul.navbar li < background: white; margin: 0.5em 0; padding: 0.3em; border-right: 1em solid black >ul.navbar a < text-decoration: none >a:link < color: blue >a:visited < color: purple >address
Выберите “Сохранить как…” из меню "Файл", убедитесь что вы в той же директории/папке что и файл mypage.html, и сохраните таблицу стилей под именем “mystyle.css”.
Теперь вернитесь к HTML коду. Уберите все содержимое от
включительно и замените убранное элементом как показано (строка 5) :
My first styled page [etc.]
Такая конструкция скажет браузеру о том, что таблица стиле располагается в файле под названием “mystyle.css”, и поскольку директория не упомянута, браузер будет искать этот файл там же, где лижит HTML файл.
Если вы сохраните файл и обновите его в браузере, то не должно произойти никаких изменений: страница по прежнему использует то же оформление что и в прошлый раз, но на этот раз оформление хранится во внешнем файле.
Следующий шаг - положить оба файла mypage.html и mystyle.css на ваш сайт. (Конечно, вы можете захотеть слегка изменить их сперва…) Как положить файлы на сайт зависит от вашего интернет провайдера.
Дальнейшее изучение
Другая информация, включая большее количество уроков может быть найдена в разделе изучения CSS.
Языки
Activities Tech. reports Site index Translations Software Search Nearby: Style CSS

Last updated Пн 20 ноя 2023 21:46:04 Bert Bos, style activity lead
Copyright © 1994–2023 W3C ® Privacy policy
2.1. Основы CSS

CSS (Cascading Style Sheets) — язык таблиц стилей, который позволяет прикреплять стиль (например, шрифты и цвет) к структурированным документам (например, документам HTML и приложениям XML).
Обычно CSS-стили используются для создания и изменения стиля элементов веб-страниц и пользовательских интерфейсов, написанных на языках HTML и XHTML, но также могут быть применены к любому виду XML-документа, в том числе XML, SVG и XUL.
Отделяя стиль представления документов от содержимого документов, CSS упрощает создание веб-страниц и обслуживание сайтов.
CSS поддерживает таблицы стилей для конкретных носителей, поэтому авторы могут адаптировать представление своих документов к визуальным браузерам, слуховым устройствам, принтерам, брайлевским устройствам, карманным устройствам и т.д.
Каскадные таблицы стилей описывают правила форматирования элементов с помощью свойств и допустимых значений этих свойств. Для каждого элемента можно использовать ограниченный набор свойств, остальные свойства не будут оказывать на него никакого влияния.
Объявление стиля состоит из двух частей: селектора и объявления. В HTML имена элементов нечувствительны к регистру, поэтому «h1» работает так же, как и «H1». Объявление состоит из двух частей: имя свойства (например, color ) и значение свойства ( grey ). Селектор сообщает браузеру, какой именно элемент форматировать, а в блоке объявления (код в фигурных скобках) перечисляются форматирующие команды — свойства и их значения.

Хотя приведенный пример пытается влиять только на пару свойств, необходимых для рендеринга HTML-документа, он сам по себе квалифицируется как таблица стилей. В сочетании с другими таблицами стилей (одна фундаментальная особенность CSS заключается в том, что таблицы стилей объединяются), правило будет определять окончательное представление документа.
Виды каскадных таблиц стилей и их специфика
- Содержание:
- 1. Виды таблиц стилей
- 2. Виды селекторов
- 3. Комбинация селекторов
- 4. Группировка селекторов
- 5. Наследование и каскад
1. Виды таблиц стилей
1.1. Внешняя таблица стилей
Внешняя таблица стилей представляет собой текстовый файл с расширением .css , в котором находится набор CSS-стилей элементов. Файл создаётся в редакторе кода, так же как и HTML-страница. Внутри файла могут содержатся только стили, без HTML-разметки. Внешняя таблица стилей подключается к веб-странице с помощью элемента , расположенного внутри раздела . Такие стили работают для всех страниц сайта.
К каждой веб-странице можно присоединить несколько таблиц стилей, добавляя последовательно несколько элементов , указав в атрибуте media назначение данной таблицы стилей. rel="stylesheet" указывает тип ссылки (ссылка на таблицу стилей).
Атрибут type="text/css" не является обязательным по стандарту HTML5, поэтому его можно не указывать. Если атрибут отсутствует, по умолчанию используется значение type="text/css" .
1.2. Внутренние стили
Внутренние стили встраиваются в раздел HTML-документа и определяются внутри элемента . Внутренние стили имеют приоритет над внешними, но уступают встроенным стилям (заданным через атрибут style ).
h1, h2 .
1.3. Встроенные стили
Когда мы пишем встроенные стили, мы пишем CSS-код в HTML-файл, непосредственно внутри элемента с помощью атрибута style :
Обратите внимание на этот текст.
Такие стили действуют только на тот элемент, для которого они заданы.
1.4. Правило @import
Правило @import позволяет загружать внешние таблицы стилей. Чтобы директива @import работала, она должна располагаться в таблице стилей (внешней или внутренней) перед всеми остальными правилами:
@import url(mobile.css); p
Правило @import также используется для подключения веб-шрифтов:
@import url(https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,cyrillic);
2. Виды селекторов
Селекторы представляют структуру веб-страницы. С их помощью создаются правила для форматирования элементов веб-страницы. Селекторами могут быть элементы, их классы и идентификаторы, а также псевдоклассы и псевдоэлементы.
2.1. Универсальный селектор
Соответствует любому HTML-элементу. Например, * обнулит внешние отступы для всех элементов сайта. Также селектор может использоваться в комбинации с псевдоклассом или псевдоэлементом: *:after , *:checked .
2.2. Селектор элемента
Селекторы элементов позволяют форматировать все элементы данного типа на всех страницах сайта. Например, h1 задаст общий стиль форматирования всех заголовков h1 .
2.3. Селектор класса
Селекторы класса позволяют задавать стили для одного и более элементов с одинаковым именем класса, размещенных в разных местах страницы или на разных страницах сайта. Например, для создания заголовка с классом headline необходимо добавить атрибут class со значением headline в открывающий тег и задать стиль для указанного класса. Стили, созданные с помощью класса, можно применять к другим элементам, не обязательно данного типа.
Инструкция пользования персональным компьютером
.headline
Если элемент имеет несколько атрибутов класса, их значения объединяются с пробелами.
Инструкция пользования персональным компьютером
2.4. Селектор идентификатора
Селектор идентификатора позволяет форматировать один конкретный элемент. Значение id должно быть уникальным, на одной странице может встречаться только один раз и должно содержать хотя бы один символ. Значение не должно содержать пробелов.
Нет никаких других ограничений на то, какую форму может принимать id , в частности, идентификаторы могут состоять только из цифр, начинаться с цифры, начинаться с подчеркивания, состоять только из знаков препинания и т. д.
Уникальный идентификатор элемента может использоваться для различных целей, в частности, как способ ссылки на конкретные части документа с использованием идентификаторов фрагментов, как способ нацеливания на элемент при создании сценариев и как способ стилизации конкретного элемента из CSS.
#sidebar
2.5. Селектор потомка
Селекторы потомков применяют стили к элементам, расположенным внутри элемента-контейнера. Например, ul li — выберет все элементы li , являющиеся потомками всех элементов ul .
Если нужно отформатировать потомки определенного элемента, этому элементу нужно задать стилевой класс:
- p.first a — данный стиль применится ко всем ссылкам, потомкам абзаца с классом first ;
- p .first a — если добавить пробел, то будут стилизованы ссылки, расположенные внутри любого элемента класса .first , который является потомком элемента
;
- .first a — данный стиль применится к любой ссылке, расположенной внутри другого элемента, обозначенного классом .first .
2.6. Дочерний селектор
Дочерний элемент является прямым потомком содержащего его элемента. У одного элемента может быть несколько дочерних элементов, а родительский элемент у каждого элемента может быть только один. Дочерний селектор позволяет применить стили только если дочерний элемент идёт сразу за родительским элементом и между ними нет других элементов, то есть дочерний элемент больше ни во что не вложен.
Например, p > strong — выберет все элементы strong , являющиеся дочерними по отношению к элементу p .
2.7. Сестринский селектор
Сестринские отношения возникают между элементами, имеющими общего родителя. Селекторы сестринских элементов позволяют выбрать элементы из группы элементов одного уровня:
- h1 + p — выберет все первые абзацы, идущие непосредственно за любым элементом , не затрагивая остальные абзацы;
- h1 ~ p — выберет все абзацы, являющиеся сестринскими по отношению к любому заголовку h1 и идущие сразу после него.
2.8. Селектор атрибута
Селекторы атрибутов выбирают элементы на основе имени атрибута или значения атрибута:
- [атрибут] — все элементы, содержащие указанный атрибут, [alt] — все элементы, для которых задан атрибут alt ;
- селектор[атрибут] — элементы данного типа, содержащие указанный атрибут, 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. Группировка селекторов
Один и тот же стиль можно одновременно применить к нескольким элементам. Для этого необходимо в левой части объявления перечислить через запятую нужные селекторы:
h1, h2, p, span
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-стили
Стили могут наследоваться от родительского элемента (наследуемые свойства или с помощью значения inherit ).
Стили, расположенные в таблице стилей ниже, отменяют стили, расположенные в таблице выше.
К одному элементу могут применяться стили из разных источников. Проверить, какие стили применяются, можно в режиме разработчика браузера. Для этого над элементом нужно щёлкнуть правой кнопкой мыши и выбрать пункт «Посмотреть код» (или что-то аналогичное). В правом столбце будут перечислены все свойства, которые заданы для этого элемента или наследуются от родительского элемента, а также файлы стилей, в которых они указаны, и порядковый номер строки кода.

При определении стиля можно использовать любую комбинацию селекторов — селектор элемента, псевдокласса элемента, класса или идентификатора элемента.
div #wrap .box .clear
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 ;
- универсальный селектор не имеет специфичности.
h1 /*специфичность 0, 0, 0, 1*/ em /*специфичность 0, 0, 0, 1*/ h1 em /*специфичность: 0, 0, 0, 1 + 0, 0, 0, 1 = 0, 0, 0, 2*/ div#main p.about /*специфичность: 0, 0, 0, 1 + 0, 1, 0, 0 + 0, 0, 0, 1 + 0, 0, 1, 0 = 0, 1, 1, 2*/ .sidebar /*специфичность 0, 0, 1, 0*/ #sidebar /*специфичность 0, 1, 0, 0*/ li#sidebar /*специфичность: 0, 0, 0, 1 + 0, 1, 0, 0 = 0, 1, 0, 1*/
В результате к элементу применятся те правила, специфичность которых больше. Например, если на элемент действуют две специфичности со значениями 0, 0, 0, 2 и 0, 1, 0, 1 , то выиграет второе правило.
Порядок подключённых таблиц
Вы можете создать несколько внешних таблиц стилей и подключить их к одной веб-странице. Если в разных таблицах будут встречаться разные значения свойств одного элемента, то в результате к элементу применится правило, находящееся в таблице стилей, идущей в списке ниже.