Что такое CSS, для чего нужны стили CSS
CSS – это формальный язык, служащий для описания оформления внешнего вида документа, созданного с использованием языка разметки (HTML, XHTML, XML). Название происходит от английского Cascading Style Sheets, что означает «каскадные таблицы стилей».
Зачем используется CSS
Назначение CSS – отделять то, что задает внешний вид страницы, от ее содержания. Если документ создан только с использованием HTML, то в нем определяется не только каждый элемент, но и способ его отображения (цвет, шрифт, положение блока и т. д.). Если же подключены каскадные таблицы стилей, то HTML описывает только очередность объектов. А за все их свойства отвечает CSS. В HTML достаточно прописывать класс, не перечисляя все стили каждый раз.
Такая технология:
- обеспечивает относительно простую и быструю разработку, потому что однажды созданное оформление можно применять ко многим страницам;
- повышает гибкость и удобство редактирования – достаточно внести правку в CSS, чтобы оформление изменилось везде;
- делает код более простым, снижая повторяемость элементов. Его проще читать программистам и поисковым ботам;
- ускоряет время загрузки, потому что CSS может кэшироваться при первом открытии, а в последующих считываются только структура и данные;
- увеличивает количество визуальных решений для представления содержимого;
- обеспечивает возможность легко применять к одному документу разные стили (например, создавать адаптированную версию для мобильных устройств или специальные стили для слабовидящих).
То есть каскадные таблицы служат не только для воплощения дизайна, но и кардинально меняют подход к сайтостроению, упрощая труд разработчиков и обеспечивая гибкость реализации. Вот для чего нужен CSS.
Развитие CSS
Необходимость разработки CSS была признана консорциумом W3C в 1990-х годах. В 1996 году был принят стандарт CSS1, позволяющий изменять параметры шрифта, цвет, атрибуты текста, выравнивания и отступы. В 1998 году состоялся выход CSS2, добавивший возможности использования блочной верстки, звуковых таблиц, генерируемого содержания, указателей, страничных носителей. Версия CSS3 заметно увеличила возможности стилей: стало доступным создание анимированных элементов без использования JavaScript, появилась поддержка сглаживания, теней, градиентов и т. д. Спецификация была разделена на модули, каждый из которых стал развиваться обособленно. С 2011 года ведется разработка модулей CSS4. Возможности пока описаны в черновых вариантах.
Структура языка
CSS можно охарактеризовать простыми словами как набор правил, описывающих, как должен выглядеть элемент.
Правило состоит из селектора и блока объявлений.
css1.png
css1.pngСелекторы
Селектор сообщает, к какому элементу будут применены описываемые в CSS свойства стиля. В качестве селектора может выступать любой тег, которому задается форматирование (размер, цвет и т. д.). Если для тега нужно задать разные стили или применить один для отличных элементов, используются классы и запись вида «Тег.Класс {свойство: значение;}». Имя класса задается латиницей, может содержать подчеркивание или дефис. Если не указывать тег, а начинать запись с «.Класс», то можно использовать правило для любого тега. Если перечислять несколько классов для одного тега, к нему применятся все описанные стили. Идентификатор задает уникальное имя элемента для изменения стиля или обращения с помощью скрипта. Запись «#Идентификатор {свойство: значение;}». Название идентификатора состоит из букв латинского алфавита, допустимо использовать дефис и подчеркивание. Чтобы применить идентификатор к конкретному тегу, указывается его имя, потом без пробела и через знак решетки название идентификатора.
Блок объявлений
Блок объявлений состоит из пар «свойство: значение» (запись всегда черед двоеточие), размещенных в фигурных скобках. Записи заканчиваются точкой с запятой. CSS нечувствителен к табуляции, пробелам, регистру. Выбор способа записи (столбиком с отступами или просто в строчку) остается на усмотрение разработчика. Если для одного селектора прописаны разные значения для одного свойства, то приоритет отдается нижней записи.
Подключение CSS
CSS можно связать с HTML несколькими способами:
- внутри тега с помощью атрибута style. При этом нет нужды указывать селектор;
- добавить тег <style> с атрибутом type=»text/css»;
- подключить внешнюю таблицу стилей: <link rel=»stylesheet» href=»путь до style.css» type=»text/css»/>.
Третий способ является наиболее популярным и рекомендуемым, потому что позволяет в полной мере пользоваться преимуществами разделения формы и содержания, обеспечиваемого с помощью CSS.
Что такое CSS: объясняем простыми словами | GeekBrains
Почему нельзя обойтись одним HTML и при чём тут какие-то каскады
https://d2xzmw6cctk25h.cloudfront.net/post/2270/og_image/9969a3f6341d09d7adb07e4042d1c690.png
Встречая аббревиатуру CSS впервые, новички уже догадываются, что это как-то связано с сайтами. Разберёмся: CSS — Cascading Style Sheets — это каскадные таблицы стилей. По сути — язык, который отвечает за описание внешнего вида HTML-документа. Подавляющее большинство современных веб-сайтов работают на основе связки HTML+CSS.
Теперь ответим на вопрос о том, что делает CSS. Всё просто: если HTML структурирует контент на странице, то CSS позволяет отформатировать его, сделать более привлекательным для читателя. Изначально веб-разработчики использовали исключительно HTML — так было на заре развития интернет-технологий. С помощью разметки можно было выделить параграф, заголовок, изменить начертание текста. А большего и не требовалось.
Со временем этих возможностей стало мало — и появилась технология форматирования без изменения самого содержимого и структуры документа. CSS решил проблему «зоопарка» тегов форматирования, когда разные браузеры поддерживали разные теги. Их унификация и единая база упростили работу с веб-документами и облегчили жизнь веб-мастерам.
CSS и стили
CSS используется для определения стилей (правил) оформления документов — включая дизайн, вёрстку и вариации макета для различных устройств и размеров экрана. У такого способа форматирования несколько достоинств:
- теги не дублируются;
- документ проще обслуживать;
- внешний вид всего сайта можно изменить централизованно, а не корректировать форматирование каждой странички.
Стили можно разметить внутри тега <HEAD> или использовать отдельный CSS-файл.
Вот так можно прописать CSS в качестве атрибута непосредственно в HTML:
А так CSS прописывается при помощи тега <style> и в теге <head> документа HTML.
Теперь разберёмся, что такое CSS-файл. Всё просто — это файл с расширением .css, где прописываются правила оформления документа. Чтобы привязать файл к оформлению страницы, нужно использовать тег <link>:
Современный способ оформления веб-документов вошёл в практику в 2011 году. Это свойство CSS grid — теперь оно поддерживается практически всеми браузерами. И если раньше приходилось верстать документы с использованием элементов вроде <div>, то сейчас всё это выполняется средствами CSS.
После того как этот способ стал стандартом, проблема разделения содержания (HTML) и оформления (CSS) решилась раз и навсегда.
Синтаксис CSS
У языка CSS относительно простой синтаксис. Сначала прописывается селектор — он выбирает конкретный элемент на странице. Потом, после фигурных скобок, указываются свойства со значениями — между ними ставится двоеточие. Сами свойства отделяются друг от друга точкой с запятой.
Что такое селектор в CSS? Это конструкция, которая позволяет выбрать отдельные или однотипные элементы на странице, чтобы их стилизовать. С селектора начинается каждый блок объявлений в CSS:
.my-class { background-color: #999; }
В качестве селектора в примере используется my-class. Все элементы с этим классом получают единое оформление — серый фон цвета #999.
Каскады в CSS
И всё-таки почему CSS — это именно Cascading Style Sheets? Дело в том, что в единую схему стили организуются при помощи каскада. Вот простой пример, который также поможет понять, что такое CSS-код и как он выглядит:
p { color: green; font-size: 20px; } p { color: red; }
При помощи каскадов мы присвоили элементу p красный цвет. Зелёный цвет, указанный выше красного, учитываться не будет. Используется то значение параметра, которое указано ниже, и это помогает избежать конфликтов. При этом размер шрифта — 20 пикселей — не меняется. Если упростить написанное выше, то получится:
p { color: red; font-size: 20px; }
Кроме того, один элемент можно сделать зависимым от нескольких селекторов разного типа. Пример:
p { color: red; } p.important { font-size: 20px; } #intro { font-style: italic; }
Чтобы использовать все параметры, в HTML указываем:
<p> CSS упрощает форматирование документов. </p>
Здесь мы присвоили элементу следующие свойства: он красный, размером 20 пикселей и написан курсивом. Важно, что в данном случае у разных селекторов — разный приоритет. Их порядок:
- Селектор типа элемента (p).
- Селектор класса (.important).
- Селектор id (#intro).
1 — низкий приоритет, 3 — высокий.
Приоритеты в CSS
Обговорим подробнее вопрос приоритетов. Их иерархия работает следующим образом:
- Самый высокий приоритет у свойств, в конце объявления которых указано !important.
- Затем идут инлайновые стили, которые прописываются в теге через атрибут style.
- Ещё ниже приоритет стилей, заданных в теге style в самом документе.
- Далее следуют стили, подключённые к документу как внешний CSS-файл с использованием тега <link>
Методологии CSS
Начинающему веб-мастеру для работы с CSS достаточно просто знать, что такое стили и как их использовать, изучить основные свойства и способы их задавать. А вот при работе с большими проектами уже необходимо использовать специализированные инструменты, а также чёткие стандарты написания CSS. Иначе другие разработчики просто не смогут нормально обслуживать код.
Единой методологии CSS нет. Существует несколько вариантов, и задача разработчика — выбрать ту методологию, которая оптимально ему подходит. Но сначала стоит разобраться с основами, научиться работать с CSS. Кстати, новые варианты появляются не так уж редко, так что за новинками стоит следить.
Наиболее популярные современные методологии CSS — это Atomic CSS (Functional CSS) и CSS в JavaScript. В основе первого варианта лежит использование максимального количества базовых классов, чтобы как можно чаще применять их повторно. Сторонники второго варианта считают, что стили CSS стоит определять не в отдельной таблице, а внутри каждого компонента.
Будущее CSS
CSS постоянно развивается — сейчас активно разрабатывается уже третье поколение этого стандарта. В нём спецификация разделяется на модули, причём разработка и развитие каждого из них идут независимо. Разработчики современных браузеров постепенно расширяют поддержку стандарта CSS3.
Несколько лет назад начало формироваться и четвёртое поколение стандарта CSS, но пока спецификации находятся на уровне драфтов.
Все премудрости CSS, HTML и их совместного использования вы можете освоить на отдельном интерактивном курсе GeekBrains. В течение месяца вы научитесь верстать статические сайты, освоите блочную вёрстку, препроцессор Less, Bootstrap и другие полезные инструменты.
Основы CSS — Изучение веб-разработки
CSS (Cascading Style Sheets) — это код, который вы используете для стилизации вашей веб-страницы. Основы CSS помогут вам понять, что вам нужно для начала работы. Мы ответим на такие вопросы как: Как сделать мой текст черным или красным? Как сделать так, чтобы контент появлялся в определённом месте на экране? Как украсить мою веб-страницу с помощью фоновых изображений и цветов?
Как и HTML, CSS на самом деле не является языком программирования. Это не язык разметки — это язык таблицы стилей. Это означает, что он позволяет применять стили выборочно к элементам в документах HTML. Например, чтобы выбрать все элементы абзаца на HTML странице и изменить текст внутри них с чёрного на красный, вы должны написать этот CSS:
p {
color: red;
}
Давайте попробуем: вставьте эти три строки CSS в новый файл в ваш текстовый редактор, а затем сохраните файл как style.css
в вашей папке styles
.
Но нам всё равно нужно применить CSS к нашему HTML документу. В противном случае, CSS стиль не повлияет на то, как ваш браузер отобразит HTML документ. (Если вы не следили за нашим проектом, то прочитайте раздел Работа с файлами и Основы HTML, чтобы узнать, что вам нужно сделать в первую очередь.)
- Откройте ваш файл
index.html
и вставьте следующую строку куда-нибудь в шапку, между<head>
и</head>
тегами:<link href="styles/style.css" rel="stylesheet" type="text/css">
- Сохраните
index.html
и загрузите его в вашем браузере. Вы должны увидеть что-то вроде этого:
Если текст вашего абзаца теперь красный, примите наши поздравления! Вы написали свой первый успешный CSS!
Анатомия набора правил CSS
Давайте взглянем на вышеупомянутый CSS немного более подробно:
Вся структура называется набором правил (но зачастую для краткости «правило»). Отметим также имена отдельных частей:
- Селектор (Selector)
- Имя HTML элемента в начале набора правил. Он выбирает элемент(ы) для применения стиля (в данном случае, элементы
p
). Для стилизации другого элемента, просто измените селектор. - Объявление (Declaration)
- Единственное правило, например
color: red;
указывает, какие из свойств элемента вы хотите стилизовать. - Свойства (Properties)
- Способы, которыми вы можете стилизовать определённый HTML элемент (в данном случае,
color
является свойством для элементов<p>
). В CSS вы выбираете, какие свойства вы хотите затронуть в вашем правиле. - Значение свойства (Property value)
- Справа от свойства, после двоеточия, у нас есть значение свойства, которое выбирает одно из множества возможных признаков для данного свойства (существует множество значений
color
, помимоred
).
Обратите внимание на важные части синтаксиса:
- Каждый набор правил (кроме селектора) должен быть обёрнут в фигурные скобки (
{}
). - В каждом объявлении необходимо использовать двоеточие (
:
), чтобы отделить свойство от его значений. - В каждом наборе правил вы должны использовать точку с запятой (
;
), чтобы отделить каждое объявление от следующего.
Таким образом, чтобы изменить несколько значений свойств сразу, вам просто нужно написать их, разделяя точкой с запятой, например так:
p {
color: red;
width: 500px;
border: 1px solid black;
}
Выбор нескольких элементов
Вы также можете выбрать несколько элементов разного типа и применить единый набор правил для всех из них. Добавьте несколько селекторов, разделённых запятыми. Например:
Разные типы селекторов
Существует множество различных типов селектора. Выше мы рассматривали только селектор элементов, который выбирает все элементы определённого типа в HTML документе. Но мы можем сделать выбор более конкретным. Вот некоторые из наиболее распространённых типов селекторов:
Имя селектора | Что выбирает | Пример |
---|---|---|
Селектор элемента (иногда называемый селектором тега или типа) | Все HTML элемент(ы) указанного типа. | p Выбирает <p> |
ID селектор | Элемент на странице с указанным ID на данной HTML. Лучше всего использовать один элемент для каждого ID (и конечно один ID для каждого элемента), даже если вам разрешено использовать один и тот же ID для нескольких элементов. | #my-id Выбирает <p> или <a> |
Селектор класса | Элемент(ы) на странице с указанным классом (множество экземпляров класса может объявляться на странице). | .my-class Выбирает <p> и <a> |
Селектор атрибута | Элемент(ы) на странице с указанным атрибутом. | img[src] Выбирает <img src="myimage.png"> но не <img> |
Селектор псевдокласса | Указанные элемент(ы), но только в случае определённого состояния, например, при наведении курсора. | a:hover Выбирает <a> , но только тогда, когда указатель мыши наведён на ссылку. |
Существует ещё много селекторов для изучения, и вы можете найти более подробный список в нашем Руководстве селекторов (en-US).
Теперь, когда мы изучили некоторые основы CSS, давайте добавим ещё несколько правил и информацию в наш файл style.css
, чтобы наш пример хорошо выглядел. Прежде всего, давайте сделаем, чтобы наши шрифты и текст выглядели немного лучше.
- Прежде всего, вернитесь и найдите вывод из Google Fonts, который вы уже где-то сохранили. Добавьте элемент
<link>
где-нибудь внутри шапки вашегоindex.html
(снова, в любом месте между тегами<head>
и</head>
). Это будет выглядеть примерно так:
Этот код связывает вашу страницу с таблицой стилями, которая загружает семейство шрифтов Open Sans вместе с вашей страницей и позволяет вам применять их к вашим HTML элементам используя свою собственную таблицу стилей.<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
- Затем, удалите существующее правило в вашем
style.css
файле. Это был хороший тест, но красный текст, на самом деле, не очень хорошо выглядит. - Добавьте следующие строки в нужное место, заменив строку
placeholder
актуальнойfont-family
строкой, которую вы получили из Google Fonts. (font-family
просто означает, какой шрифт(ы) вы хотите использовать для вашего текста). Это правило устанавливает глобальный базовый шрифт и размер шрифта для всей страницы (поскольку<html>
является родительским элементом для всей страницы, и все элементы внутри него наследуют такой жеfont-size
иfont-family
):html { font-size: 10px; font-family: placeholder: здесь должно быть имя шрифта из Google fonts }
Примечание: Все в CSS документе между
/*
и*/
является CSS комментарием, который браузер игнорирует при исполнении кода. Это место, где вы можете написать полезные заметки о том, что вы делаете. - Теперь мы установим размер шрифта для элементов, содержащих текст внутри HTML тела (<h2> (en-US),
<li>
, и<p>
). Мы также отцентрируем текст нашего заголовка и установим некоторую высоту строки и расстояние между буквами в теле документа, чтобы сделать его немного более удобным для чтения:h2 { font-size: 60px; text-align: center; } p, li { font-size: 16px; line-height: 2; letter-spacing: 1px; }
Вы можете настроить значения px
так, как вам нравится, чтобы ваш дизайн выглядел так, как вы хотите, но, в общем, ваш дизайн должен выглядеть вот так:
Одна вещь, которую вы заметите в написании CSS, заключается в том, что многое из этого касается блоков — настройка их размера, цвета, положения и т.д. Большинство HTML элементов на странице можно рассматривать как блоки, расположенные друг над другом.
Не удивительно, макет CSS основан, главным образом, на блочной модели (box model). Каждый из блоков, занимающий пространство на вашей странице имеет такие свойства, как:
padding
, пространство только вокруг контента (например, вокруг абзаца текста)border
, сплошная линия, которая расположена рядом с paddingmargin
, пространство вокруг внешней стороны элемента
В этом разделе мы также используем:
width
(ширину элемента)background-color
, цвет позади контента и padding элементовcolor
, цвет контента элемента (обычно текста)text-shadow
: устанавливает тень на тексте внутри элементаdisplay
: устанавливает режим отображения элемента (пока что не волнуйтесь об этом)
Итак, давайте начнём и добавим больше CSS на нашей странице! Продолжайте добавлять эти новые правила, расположенные в нижней части страницы, и не бойтесь экспериментировать с изменением значений, чтобы увидеть, как это работает.
Изменение цвета страницы
Разбираемся с телом
body {
width: 600px;
margin: 0 auto;
background-color: #FF9500;
padding: 0 20px 20px 20px;
border: 5px solid black;
}
Теперь для <body>
элемента. Здесь есть немало деклараций, так что давайте пройдём через них всех по одному:
width: 600px;
— заставляет тело быть всегда 600 пикселей в ширину.margin: 0 auto;
— когда вы устанавливаете два значения для таких свойств какmargin
илиpadding
, первое значение элемента влияет на верхнюю и нижнюю сторону (делает их0
в данном случае), и второе значение на левую и правую сторону (здесь,auto
является особым значением, которое делит доступное пространство по горизонтали поровну слева и справа). Вы также можете использовать один, три или четыре значения, как описано здесь.background-color: #FF9500;
— как и прежде, устанавливает цвет фона элемента. Я использовал красновато-оранжевый для тела, в отличие от темно-синего цвета для<html>
элемента, но не стесняйтесь и экспериментируйте.padding: 0 20px 20px 20px;
— у нас есть четыре значения, установленные для padding, чтобы сделать немного пространства вокруг нашего контента. В этот раз мы не устанавливаем padding на верхней части тела, но делаем 20 пикселей слева, снизу и справа. Значения устанавливаются сверху, справа, снизу, слева, в таком порядке.border: 5px solid black;
— просто устанавливает сплошную чёрную рамку шириной 5 пикселей со всех сторон тела.
Позиционирование и стилизация нашего заголовка главной страницы
h2 {
margin: 0;
padding: 20px 0;
color: #00539F;
text-shadow: 3px 3px 1px black;
}
Вы, возможно, заметили, что есть ужасный разрыв в верхней части тела. Это происходит, потому что браузеры применяют некоторый стиль по умолчанию для элемента <h2> (en-US) (по сравнению с другими), даже если вы не применяли какой-либо CSS вообще! Это может звучать как плохая идея, но мы хотим, чтобы веб-страница без стилей имела базовую читаемость. Чтобы избавиться от разрыва, мы переопределили стиль по умолчанию, установив margin: 0;
.
Затем мы установили заголовку верхний и нижний padding на 20 пикселей, и сделали текст заголовка того же цвета, как и цвет фона html.
Здесь, мы использовали одно довольно интересное свойство — это text-shadow
, которое применяет тень к текстовому контенту элемента. Оно имеет следующие четыре значения:
- Первое значение пикселей задаёт горизонтальное смещение тени от текста — как далеко она движется поперёк: отрицательное значение должно двигать её влево.
- Второе значение пикселей задаёт вертикальное смещение тени от текста — как далеко она движется вниз, в этом примере: отрицательное значение должно переместить её вверх.
- Третье значение пикселей задаёт радиус размытия тени — большее значение будет означать более размытую тень.
- Четвёртое значение задаёт основной цвет тени.
И вновь попробуйте поэкспериментировать с различными значениями, чтобы посмотреть, что вы можете придумать.
Центрирование изображения
img {
display: block;
margin: 0 auto;
}
В заключение, мы отцентрируем изображение, чтобы оно лучше выглядело. Мы можем использовать margin: 0 auto
уловку снова, как мы это делали раньше для body, но мы также должны сделать кое-что ещё. Элемент <body>
является блочным, это значит, что он занимает место на странице и может иметь margin и другие значения отступов, применяемых к нему. Изображения, наоборот, являются строчными элементами, то есть они этого не могут. Таким образом, чтобы применить margin к изображению, мы должны дать изображению блочное поведение с помощью display: block;
.
Примечание: Приведённые выше инструкции предполагают, что вы используете изображение меньшей ширины, чем заданная для <body>
(600 пикселей). Если ваше изображение больше, тогда оно выйдет за границы <body>
и займёт пространство страницы. Чтобы исправить это, вы можете 1) уменьши ширину изображения используя графический редактор, или 2) изменить размер изображения используя CSS путём установки свойства width
для <img>
элемента меньшего значения (например 400 px;
).
Примечание: Не стоит беспокоиться, если вы ещё не понимаете display: block;
и различия между блочным/строчным. Вы поймёте, когда будете изучать CSS более подробно. Вы можете узнать больше о различных доступных значениях display на нашей странице о свойстве display.
Что такое CSS-модули и зачем они нам?
В последнее время меня интригуют CSS-модули. Если вы о них не слышали — эта статья для вас. Мы рассмотрим, что это за проект, какие задачи он решает и каковы причины его возникновения. Если вы тоже заинтриговались — не переключайтесь, следующая статья будет о том, как начать их применять. А если вас интересует внедрение в проект или более продвинутое использование CSS-модулей, третья статья в этой серии будет о том, как использовать их c React.
Серия статей
Часть 1: Что такое CSS-модули и зачем они нам? (Вы её читаете!)
Часть 2: Начинаем использовать CSS Modules
Часть 3: React + CSS Modules = 😍
Что такое CSS-модули?
Согласно определению из репозитория, CSS-модули — это:
CSS-файлы, в которых все классы и анимации по умолчанию находятся в локальной области видимости.
CSS-модули — это не официальная спецификация, они не имплементированы в браузеры, скорее, это задача, запускаемая на стадии сборки проекта (например, с помощью Webpack или Browserify), в процессе выполнения которой имена классов и селекторы изменяются так, чтобы образовалась своего рода локальная область видимости (что-то вроде пространства имен).
Как это выглядит и зачем нам это? Сейчас расскажу. Во-первых, вспомните как обычно работают HTML и CSS. Класс прописывается в HTML:
<h2>Пример заголовка</h2>
И стилизуется в CSS:
.title {
background-color: red;
}
Пока CSS применяется к HTML-документу, фон <h2>
будет красным. Нам
не нужно как-то обрабатывать CSS или HTML, оба формата понятны браузеру.
CSS-модули используют другой подход. Вместо того, чтобы писать обычный HTML,
нам придётся написать разметку в JavaScript-файле, например, в index.js
.
Вот как это может выглядеть (ниже мы рассмотрим более реальные примеры):
import styles from "./styles.css";
element.innerHTML =
`<h2>
Пример заголовка
</h2>`;
В процессе сборки компилятор проанализирует styles.css
, который мы импортировали,
потом проанализирует JavaScript и сделает класс .title
доступным через styles.title
. Затем сгенерирует на их основе новые HTML и CSS-файлы,
уже с новыми классами.
Сгенерированный HTML может выглядеть следующим образом:
<h2>
Пример заголовка
</h2>
А вот так может выглядеть CSS:
._styles__title_309571057 {
background-color: red;
}
Значение атрибута class
и селектор .title
заменены на новые. Исходный CSS
в браузер вообще не попадает.
Как сказал Хьюго Жироде́ль (Hugo Giraduel) в своей статье по этому поводу:
[классы] генерируются автоматически, они уникальны и привязаны к исходным стилям.
Вот это и называется поместить стили в локальную область видимости. Они находятся
в области видимости определенного шаблона. Если у нас есть файл buttons.css
,
он будет импортирован только в шаблон buttons.js
, и класс .btn
, который он
содержит, будет недоступен для других шаблонов (например, forms.js
), пока мы
не импортируем его и туда тоже.
Зачем нам устраивать всю эту канитель с CSS и HTML? Зачем нам это вообще сдалось, ради всего святого?!
Зачем нам нужно использовать CSS-модули?
CSS-модули гарантируют, что все стили одного компонента:
- Находятся в одном месте
- Применяются только к этому компоненту и никакому другому
Кроме того, каждый компонент может иметь настоящие зависимости, например:
import buttons from "./buttons.css";
import padding from "./padding.css";
element.innerHTML = `<div>`;
Этот подход был разработан, что бы решить проблему глобальной области видимости в CSS
Вы когда-нибудь испытывали соблазн в условиях нехватки времени или ресурсов просто писать CSS так быстро, как можете, не думая о последствиях?
Пихали ли в конец таблицы стилей какой-нибудь мусор, собираясь потом его отрефакторить, и так никогда этого и не сделали?
Бывало ли такое, что вы просматривали стили, не до конца понимая что они делают и используются ли они вообще?
Задумывались ли вы, получится ли избавиться от некоторых стилей, ничего при этом не сломав? Не приходилось ли гадать, эти стили работают сами по себе или зависят от других? Случалось ли вам перезаписывать стили?
Это вопросы, которые могут привести к серьезной головной боли, пропущенным дедлайнам и грустным взглядам в окно.
С CSS-модулями и концепцией использования локальной области видимости по умолчанию таких проблем можно избежать. Вам всегда приходится думать о последствиях, когда вы пишите стили.
Например, если вы используете в HTML класс random-gross-class
, не обработав его
как класс CSS-модуля, стили не применятся, так как CSS-селектор превратится
во что-то вроде ._style_random-gross-class_0038089
.
Ключевое слово
composes
Допустим, у нас есть модуль под названием type.css
, содержащий стили для текста.
В этом файле может быть, например, такое:
.serif-font {
font-family: Georgia, serif;
}
.display {
composes: serif-font;
font-size: 30px;
line-height: 35px;
}
Один из этих классов мы используем в шаблоне:
import type from "./type.css";
element.innerHTML =
`<h2>
Пример заголовка
</h2>`;
В результате получится такая разметка:
<h2>
Пример заголовка
</h2>
Оба класса связаны с элементом через использование ключевого слова composes
,
решая таким образом некоторые проблемы, которые есть в похожих решениях,
например в @extend
Sass.
Так можно даже подставлять данные из отдельного CSS-файла:
.element {
composes: dark-red from "./colors.css";
font-size: 30px;
line-height: 1.2;
}
БЭМ не нужен
Нам не нужен БЭМ, если мы используем CSS-модули. По двум причинам:
Простота чтения. Код вроде
type.display
так же понятен для разработчика, как и.font-size__serif--large
из БЭМ. Его даже проще читать, чем разросшиеся БЭМ-селекторы.Локальная область видимости. Допустим, в одном из модулей у нас есть класс
.big
и он увеличиваетfont-size
на некоторую величину. В другом модуле у нас есть точно такой же класс.big
, который увеличиваетpadding
иfont-size
на другую величину. И это не имеет никакого значения! Они не будут конфликтовать, так как у стилей различаются области видимости. Даже если модуль импортирует обе таблицы стилей, у классов будет своё уникальное имя, созданное в процессе сборки специально для них.Другими словами, при использовании CSS-модулей проблемы специфичности селекторов просто исчезают.
Круто, да?
И это только некоторые из достоинств использования CSS-модулей.
Если вам интересно узнать больше, Глен Маден (Glen Madden) много пишет на эту тему.
В следующей статье из этой серии мы рассмотрим как поднять проект используя Webpack и CSS-модули. Мы будем использовать для этого новейшие возможности ES2015 и рассмотрим в процессе несколько примеров, чтобы в полной мере разобраться в происходящем.
Материалы для дальнейшего изучения
Каскадные Таблицы Стилей Для Начинающих
CSS это язык каскадных таблиц стилей, который используется для стилизации элементов, написанных на языке разметки, например HTML. Он отделяет контент от визуального представления сайта. Давайте разберёмся, что такое CSS более детально.
CSS был разработан W3C (World Wide Web Consortium) в 1996 году по довольно простой причине. В HTML не были разработаны теги, которые помогли бы отформатировать страницу. Нужно было только написать разметку для сайта.
Такие теги, как <font>, были введены в HTML версии 3.2, и это создало много проблем для разработчиков. Поскольку веб-сайты имели разные шрифты, цветной фон и стили, переписывать код было долгим, болезненным и дорогостоящим процессом. Таким образом, CSS был создан W3C для решения этой проблемы.
Отношения между HTML и CSS сильно связаны между собой. Поскольку HTML — это язык разметки (сама основа сайта), а CSS подчеркивает стиль (всю эстетику сайта), они идут рука об руку.
С технической точки зрения CSS не является необходимостью, но вы, вероятно, не захотите смотреть на сайт, который содержит только HTML, поскольку он будет выглядеть совершенно голым.
Преимущества CSS
Разница между сайтом, который реализует CSS, и тем, который не использует, огромна и, безусловно, заметна.
Возможно, вы видели веб-сайт, который не загружается полностью и имеет белый фон с большей частью синего и черного текста. Это означает, что CSS-часть сайта не была загружена правильно или не существует вообще.
Вот так выглядит сайт только с HTML, и я думаю, вы согласитесь, что это не очень привлекательно.
Перед использованием CSS вся стилизация должна была быть включена в HTML-разметку. Это означает, что вы должны были отдельно описать весь фон, цвета шрифта, выравнивания и т. д.
CSS позволяет стилизовать всё в другом файле, создавая там стиль, а затем интегрируя файл CSS поверх разметки HTML. Это делает реальную HTML-разметку намного чище и проще в обслуживании.
Короче говоря, с помощью CSS вам не нужно многократно описывать внешний вид отдельных элементов. Это экономит время, сокращает код и делает его менее подверженным ошибкам.
СSS позволяет иметь несколько стилей на одной HTML-странице, поэтому возможности настройки практически безграничны. В настоящее время это становится больше необходимостью, чем товаром.
Как работает CSS
CSS использует простой синтаксис на английском языке с набором правил, которые управляют им. Как мы уже упоминали ранее, HTML никогда не предназначался для использования элементов стиля, только разметки страницы. Он был создан, чтобы просто описать содержание. Например: <p>Это абзац.</p>.
Но как вы оформляете абзац? Структура синтаксиса СSS довольно проста. Имеет селектор и блок объявления. Вы выбираете элемент, а затем объявляете, что вы хотите с ним сделать. Довольно просто, правда?
Однако есть правила, которые вы должны помнить. Правила структуры довольно просты, так что не волнуйтесь.
Селектор указывает на элемент HTML, который вы хотите стилизовать. Блок объявлений содержит одно или несколько объявлений, разделённых точками с запятой.
Каждое объявление включает имя свойства CSS и значение, разделённое двоеточием. Объявление СSS всегда заканчивается точкой с запятой, а блоки объявления заключаются в фигурные скобки.
Давайте посмотрим на пример:
Все элементы <p> будут выделены синим цветом и выделены жирным шрифтом.
<style> p { color: blue; text-weight: bold; } <style>
В другом примере все элементы <p> будут выровнены по центру, будут 16x шириной и розовыми.
<style> p { text-align: center; font-size: 16px; color: pink; } </style>
Смотрите наш список читов CSS (англ) для большего количества примеров.
Теперь поговорим о разных стилях CSS. Они Встроенные, Внешние и Внутренние.
Если вы планируете создать веб-сайт, убедитесь, что вы выбрали для него правильный конструктор сайтов. Hostinger может предложить простой конструктор с инструментом перетаскивания. Создайте веб-сайт, который будет отлично смотреться на любом устройстве, используйте один из бесплатных шаблонов, которые мы собрали в нашей базе, и выходите в интернет!
Начать
Внутренние, Внешние и Встроенные стили СSS
Мы кратко рассмотрим каждый стиль, для более подробного объяснения каждого метода, под обзором будет ссылка.
Давайте начнём с разговора о Внутреннем стиле. Сделанные таким образом стили CSS загружаются при каждом обновлении веб-сайта, что может увеличить время загрузки. Кроме того, вы не сможете использовать один и тот же стиль СSS на нескольких страницах, который содержится на одной странице. Однако это также имеет свои преимущества. Наличие всего на одной странице облегчает обмен шаблоном для предварительного просмотра.
Внешний метод может быть наиболее удобным. Всё делается внешне в файле .css. Это означает, что вы можете делать все стили в отдельном файле и применять CSS к любой странице, которую вы хотите. Внешний стиль также может улучшить время загрузки.
Наконец, мы поговорим о Встроенном стиле СSS. Он работает с конкретными элементами, имеющими тег <style>. Каждый компонент должен быть стилизован, поэтому он может быть не самым лучшим или самым быстрым способом обработки СSS. Но это может пригодиться. Например, если вы хотите изменить один элемент, быстро просмотреть изменения или, возможно, у вас нет доступа к файлам СSS.
Для получения дополнительной информации о различных стилях CSS, смотрите нашу углублённую статью здесь.
Заключение
Давайте подведём итог тому, что мы узнали здесь:
- CSS был создан для работы с такими языками разметки, как HTML. Используется для стилизации страницы.
- Существует три стиля реализации СSS, и вы можете использовать внешний стиль для согласования нескольких страниц одновременно.
- В настоящее время вы не добьётесь больших успехов, если не увидите какую-то реализацию CSS, поскольку это так же необходимо, как и сам язык разметки.
В общем, мы надеемся, что вы нашли эту статью полезной, и если у вас есть какие-либо вопросы, пожалуйста, оставьте их в разделе комментариев ниже.
Анна долгое время работала в сфере социальных сетей и меседжеров, но сейчас активно увлеклась созданием и сопровождением сайтов. Она любит узнавать что-то новое и постоянно находится в поиске новинок и обновлений, чтобы делиться ими с миром. Ещё Анна увлекается изучением иностранных языков. Сейчас её увлёк язык программирования!
основы CSS — Основы CSS — HTML Academy
CSS-правила
CSS — это язык для оформления структурированных документов, например, HTML- документов. Синтаксис — это плоский список CSS-правил. CSS-правило состоит из селектора и перечня свойств и их значений:
селектор {
свойство: значение;
свойство: значение;
}
Для комментариев в CSS используются символы /*
и */
.
Селекторы
Селектор находится в начале CSS-правила, до фигурных скобок, и определяет, к каким HTML-элементам применятся свойства и значения из правила.
.feature-kitten {
padding-top: 60px;
}
Простейшие (и самые популярные) селекторы — это селекторы по тегам и по классам. Селекторы по тегам содержат имя тега без символов <
и >
и применяются ко всем подходящим тегам. Селекторы по классам начинаются с точки, за которой идёт имя класса, и применяются ко всем тегам с подходящим атрибутом class
.
h2 { color: red; }
.info { color: blue; }
На странице может быть несколько списков, и стили применятся ко всем спискам, даже к тем, которые вы менять не хотели. Чтобы избежать таких ситуаций, лучше не использовать селекторы по тегам или использовать их как можно реже.
Если у CSS-правил отличаются только селекторы, а свойства и значения одинаковые, то их можно сгруппировать через запятую.
Также можно комбинировать любые типы селекторов через пробел. Такие селекторы называются вложенными или контекстными и читаются справа налево. Например:
nav a {…}
.menu ul {…}
.post .title {…}
Свойства и значения
Список свойств и значений находится внутри фигурных скобок CSS-правила. Свойство определяет, какую характеристику внешнего вида мы хотим изменить, а значение — как именно.
.feature-kitten {
padding-top: 60px;
}
Каждый раз, когда мы добавляем новое свойство или изменяем его значение, мы меняем что-то на странице.
Наследование
Наследование в CSS — это механизм, с помощью которого значения свойств элемента-родителя передаются его элементам-потомкам. Стили, присвоенные одному элементу, наследуются всеми потомками (вложенными элементами), но только в том случае, если они где-то явно не переопределены.
Составные свойства
В CSS есть обычные свойства, управляющие одним параметром отображения, и есть составные свойства, управляющие одновременно несколькими параметрами. Например, свойство font
. Оно задаёт сразу шесть параметров: размер и название шрифта, высоту строки и некоторые другие.
font: 16px/26px "Arial", sans-serif;
Если значение обычного свойства не было задано в составном, то браузер при «расшифровке» использует исходное значение этого свойства.
Типы значений: абсолютные и относительные
Абсолютные единицы измерения привязаны к настоящим физическим размерам и связаны между собой жёсткими пропорциями. Пиксели, px
, используют чаще всего, остальные абсолютные единицы почти не применяют. Примеры абсолютных единиц измерения:
font-size: 1cm;
font-size: 10mm;
font-size: 38px;
Относительные единицы измерения описывают значения, которые зависят от других значений. Например, ширина элемента в процентах зависит от ширины родительского элемента, а ширина элемента в em
зависит от размера шрифта самого элемента. К относительным единицам относятся em
, rem
, vh
, vw
и некоторые другие, ну и, конечно же, проценты.
Стили по умолчанию
Некоторым элементам можно не задавать никаких стилей, но у них всё равно будет какое-то оформление. Например, у списка <ul>
есть отступы и маркеры. Такие стили называются стилями по умолчанию и задаются внутри браузерных стилей изначально. Их можно переопределить или сбросить, задав другие значения свойств элементу.
Каскадирование
Когда браузер отрисовывает страницу, он должен определить итоговый вид каждого HTML-элемента. Для этого он собирает все CSS-правила, которые относятся к каждому элементу, ведь на элемент могут влиять сразу несколько CSS-правил. Механизм комбинирования стилей из разных источников в итоговый набор свойств и значений для каждого тега называется каскадностью. Например, есть такой элемент в разметке:
<p>Зелёный - мой любимый цвет</p>
Заданные стили:
.beloved-color { color: green; }
Браузерные стили:
margin: 1em 0;
Итоговые стили:
color: green;
margin: 1em 0;
Конфликт свойств
На один элемент могут действовать несколько CSS-правил. Если в этих правилах есть одинаковые свойства с разными значениями, то возникает конфликт. Например:
ul { list-style: disc; }
.blog-navigation ul { list-style: none; }
Браузеру нужно как-то решать, какими будут итоговые значения конфликтующих свойств. Конфликт разрешается максимум за три шага. Если на текущем шаге определиться не удалось, то выполняется следующий шаг. Вот эти шаги:
- Сравниваются приоритеты стилевых файлов, в которых находятся конфликтующие свойства. Например, авторские (то есть наши) стили приоритетнее браузерных.
- Сравнивается специфичность селекторов у CSS-правил с конфликтующими свойствами. Например, селектор по классу более специфичен, чем селектор по тегу.
- Побеждает то свойство, которое находится ниже в коде.
Каскад работает и внутри CSS-правил.
Встраивание и подключение внешних стилей
Внешние стили подключаются через тег <link>
<link rel="stylesheet" href="style.css">
Встраивание стилей в тег <style>
. Его обычно размещают внутри <head>
:
<head>
<style>
CSS-код
</style>
</head>
Такой способ используется для оптимизации загрузки страницы, ведь в таком случае браузер не будет отправлять дополнительных запросов на сервер.
Встраивание в атрибут style
:
<div></div>
Свойства и значения, прописанные таким образом, применятся точечно к одному элементу.
Обычно использование этого способа считается плохой практикой. Но иногда в виде исключения бывает удобнее воспользоваться встраиванием стилей в атрибут style
, чем писать отдельные CSS-правила. Например, когда нужно управлять стилями именно из разметки, и создавать отдельные классы при этом будет излишне. Так бывает, когда какие-то стилевые параметры устанавливаются с помощью сторонних программ или другими людьми, например, через CMS.
Продолжить
Глава 2 CSS
Как мы уже пояснили в предыдущей главе, элементы HTML позволяют сайтостроителям разметить документ в соответствии с его структурой. В спецификации HTML перечислены рекомендации по отображению браузерами этих элементов. К примеру, можно быть более-менее уверенным, что содержание контейнера strong будет отображено полужирным шрифтом. Вполне можно доверять и тому факту, что большинство браузеров отобразит содержимое контейнера h2 крупным шрифтом… по меньшей мере, крупнее, чем p, и крупнее, чем h3. Однако помимо веры и надежды на это, средств контроля за внешним видом текста у нас просто нет.
CSS все меняет. CSS усаживает дизайнера в кресло водителя. Мы посвятим остаток книги рассказу о том, что можно делать с помощью CSS. А в этой главе начнем с ознакомления вас с основами написания таблиц стилей и основами совместного функционирования CSS и HTML для описания и структуры, и внешнего вида вашего документа.
Правила и таблицы стилей
Для того, чтобы начать пользоваться CSS не нужно даже писать таблицы стилей. Шестнадцатая глава расскажет, как ссылаться на существующие в Сети таблицы.
Существуют два метода создания таблиц CSS. Можно либо воспользоваться обычным текстовым редактором и писать таблицы стилей «от руки», либо воспользоваться специальным инструментом, поддерживающим CSS, к примеру, приложением для веб-дизайна. Специальные инструменты позволяют создавать таблицы стилей без изучения синтаксиса CSS. Однако впоследствии дизайнеры во многих случаях предпочитают ручную отладку таблиц стилей, так что мы рекомендуем вам научиться писать и редактировать CSS от руки. Давайте приступим!
h2 { color: green }
То, что вы видите, это простое правило CSS, содержащее одно объявление. Правило это заявление стилистического параметра одного элемента или нескольких. Таблица стилей это набор из одного или более правил, прилагаемых к HTML-документу. Правило выше устанавливает цвет всех заголовков первого уровня (h2). Давайте посмотрим, какой визуальный эффект оно могло бы произвести:
Figure 2.1
Теперь давайте тщательно разберем правило.
Анатомия правила
Правило состоит из двух частей:
- Селектора — части перед левой фигурной скобкой
- Объявления — части внутри фигурных скобок
Селектор это звено, связующее HTML-документ и стиль. Оно устанавливает на какие элементы влияет объявление. Объявление это часть правила, которая определяет эффект. В примере выше селектор это тег h2, а объявление «color: green». Следовательно, объявление повлияет на все элементы h2, то есть, они позеленеют. (Свойство color влияет только на цвет текста; существуют другие свойства для фона, границ и т.д.)
Предыдущий селектор основан на типе элемента: он выбирает все элементы типа «h2». Этот вид селектора зовется селектором типа. Любой тип элемента HTML может быть использован в качестве селектора типа. Селекторы типа являются простейшим видом селекторов. Мы обсудим другие виды селекторов в See CSS selectors. , «CSS selectors.»
Анатомия объявления
Объявление имеет две части, разделенные двоеточием:
- Свойство — часть перед двоеточием
- Значение — часть после двоеточия
Свойство это качество либо характеристика, которыми нечто обладает. В предыдущем примере это color. CSS2 (см. separate box) определяет примерно 120 свойств и мы можем присвоить значения им всем.
Значение это точная спецификация свойства. В примере, это «green» «зеленый», но точно также цвет мог бы быть синим (blue), красным (red), желтым (yellow) или каким-нибудь еще.
Диаграмма ниже иллюстрирует все компоненты правила. Фигурные скобки ({ }) и двоеточие ( позволяют браузерам различать селектор, свойство и значение.
Рисунок 2.2 Диаграмма правила.
Группирование селекторов и правил
При создании CSS целью является сжатость. Мы отметили, что если уменьшить размер таблиц стилей, это позволит дизайнерам писать и редактировать их «от руки». К тому же короткие таблицы грузятся быстрее длинных. Поэтому в CSS есть несколько механизмов уменьшить размер таблиц стилей путем группировки селекторов и объявлений.
Для примера, рассмотрите эти три правила:
h2 { font-weight: bold } h3 { font-weight: bold } h4 { font-weight: bold }
У всех трех правил абсолютно одинаковое объявление они устанавливают шрифт полужирным. (Это делается с помощью свойства font-weight, которое мы обсудимв See Fonts. .) Поскольку все три объявления идентичны, можно сгруппировать селекторы в список, разделенный запятыми, и указать объявление лишь один раз, вот так:
h2, h3, h4 { font-style: bold }
Это правило производит такой же эффект, как и первые три..
Селектор может иметь больше одного объявления. К примеру, можно написать таблицу стилей с этими двумя правилами:
h2 { color: green } h2 { text-align: center }
В этом случае, мы устанавливаем все элементы h2 зелеными и центрированными на листе. (Это делается с помощью свойства text-align, которое мы обсудим в главе 5.)
Но этого же эффекта можно добиться быстрее, если сгруппировать объявления, которые относятся к одному и тому же селектору, в список, разделенный точками с запятой, вот так:
h2 { color: green; text-align: center; }
Все объявления быть внутри фигурных скобок. Точка с запятой разделяет объявления и может, но не должна также появляться в конце последнего объявления. Кроме того, для повышения удобочитаемости вашего кода, предлагаем размещать каждое объявление в отдельной строчке, как мы сделали здесь. (Браузерам все равно, они просто проигнорируют все лишние пробелы и переводы строк.)
Теперь вы знаете основы создания правил CSS и таблиц стилей. Однако, мы еще не закончили. Чтобы таблица произвела какой-то эффект, ее придется «приклеить» к своему документу HTML.
«Приклеивание» таблиц стилей к документу
Чтобы заставить какую-либо таблицу стилей повлиять на документ HTML, ее нужно «приклеить» к нему. То есть, таблица и документ должны быть объединены, чтобы сработать вместе и представить документ. Это можно сделать любым из четырех способов:
- Применить базовую, внутридокументную таблицу стилей, к документу, исп ользуя тег style .
- Применить таблицу стилей к отдельному тегу, используя атрибут style.
- Привязать внешнюю таблицу стилей к документу, используя элемент link.
- Импортировать таблицу стилей, испольхуя запись CSS @import.
В следующем разделе, мы обсудим первый метод: с использованием тега style. Атрибут style мы обсудим в главе 4 , «Селекторы CSS», а использование элемента link element и записи @import в главе 16 , «Внешние таблицы стилей».
«Склеивание» с использованием тега STYLE
Можно склеить таблицу стилей и HTML документ, поместив таблицу стилей внутрь контейнера style вверху вашего документа. Тег style был введен в HTML в частности для того, чтобы позволить вставлять таблицы стилей внутрь HTML документов. Вот таблица стилей (полужирным шрифтом) прикрепленная к документу-образцу с использованием тега style. Результат показан в рисунке 2.3 .
<HTML> <TITLE>Bach's home page</TITLE> <STYLE> h2, h3 { color: green } </STYLE> <BODY> <h2>Bach's home page</h2> <P>Johann Sebastian Bach was a prolific composer. Among his works are: <UL> <LI>the Goldberg Variations <LI>the Brandenburg Concertos <LI>the Christmas Oratorio </UL> <h3>Historical perspective</h3> <P>Bach composed in what has been referred to as the Baroque period. </BODY> </HTML>
Рисунок 2.3 Результат добавления к таблице стилей правила изменения цвета тегов h2 на зеленый и последующего прикрепления таблицы к документу с использованием контейнера style. (попробуйте)
Обратите внимание на то, что тег style размещен после тега title и перед тегом body. Заголовок документа «title» не появляется на самой странице, поэтому стили CSS не оказывают на него влияния.
Содержимое тега style это таблица стилей. Однако, в то время, как содержимое таких тегов, как h2, p и ul появляется на странице, содержимое тега style там не появляется. Точнее, на странице появляется эффект от содержимого контейнера style таблицы стилей. Поэтому вы не видите «{ color: green }», показанным на экране; вместо этого вы видите два тега h2 зеленого цвета. Правил, определяющих цвет прочих элементов, добавлено не было, так что все прочие элементы будут отображаться цветом по умолчанию.
Браузеры и CSS
Для обновляемого обзора доступных браузеров, просмотрите страницу обзоров W3C
Для того, чтобы CSS работала как написано в этой книге, необходимо использовать CSS-совместимый браузер, то есть, браузер, поддерживающий CSS. CSS-совместимый браузер узнает тег style как контейнер для таблицы стилей и отображает документ соответственно. Многие браузеры, распространенные сегодня, поддерживают CSS, например, Microsoft Internet Explorer 4 (IE4), Netscape Navigator 4 (NS4) и Opera 3.5 (O3.5). По скромным подсчетам более половины пользователей Сети используют CSS-расширенные браузеры, и их число постоянно растет. Велика вероятность того, что люди, с которыми вы общаетесь, имеют CSS-расширенные браузеры. Если нет, дайте им причину обновиться!
Лучший источник информации о том, как различные браузеры поддерживают CSS WebReview’s charts
Увы, не все реализации CSS совершенны. Когда вы начнете экспериментировать с таблицами стилей, вы вскоре заметите, что каждый браузер имеет ряд багов и ограничений. В целом, новые браузеры ведут себя лучше старых. IE4 и O3.5 среди лучших, а следующее предложение Netscape под кодовым именем Gecko также обещает более усовершенствованную поддержку для CSS.
Те, кто не пользуется CSS-расширенными браузерами, все же могут читать страницы, использующие таблицы стилей. CSS заботливо спроектировали так, чтобы всё содержимое оставалось видимым, даже если браузер ничего не знает о CSS. Некоторые браузеры, такие как вторая и третья версии Netscape Navigator, не поддерживают таблицы стилей, но они знают о теге style чтобы полностью его игнорировать. После поддержки таблиц стилей, это и есть правильное поведение.
Однако другие браузеры, которые не поддерживают тега style, такие как Netscape Navigator 1 и Microsoft Internet Explorer 2, проигнорируют теги style, но покажут содержимое контейнера style. Таким образом, пользователь получит таблицу стилей напечатанной вверху страницы. В настоящий момент, лишь небольшой процент пользователей Сети может столкнуться с этой проблемой. Чтобы предупредить это, можно поместить свою таблицу стилей внутрь HTML-комментария, что мы обсудим в главе 1. Поскольку комментарии не отображаются на экране, поместив таблицу стилей внутрь HTML-комментария, вы не дадите старейшим браузерам показать содержимое контейнера style. CSS-расширенные браузеры учитывают этот трюк и расценят содержимое контейнера style как табицу стилей.
Вспомните, что комментарии HTML начинаются с <!--
и заканчиваются на -->
. Вот кусочек предыдущего примерного кода, показывающий, как
писать таблицу стилей в комментарии HTML. Комментарий окружает
только содержимое контейнера style:
<HTML> <TITLE>Bach's home page</TITLE> <STYLE> <!-- h2 { color: green } --> </STYLE> <BODY> .. </BODY> </HTML>
В CSS также есть собственные способы комментирования, которые можно использовать внутри таблицы стилей. Комментарий CSS начинается с «/*» и оканчивается на «*/.» (Те, кто знаком с языком программирования C, узнают его.) Правила CSS помещененные в комментарий CSS никак не повлияют на предсталение документа.
Браузеру необходимо сообщить, что вы работаете с таблицами стилей CSS. В настоящее время CSS единственный язык таблиц стилей, используемый с HTML-документами, и мы не думаем, что это скоро изменится. Для XML ситуация может быть и иной. Но точно так, как существует более одного формата изображений (сразу вспоминаются GIF, JPEG и PNG), может быть и больше одного языка таблиц стилей. Так что это хорошая привычка сообщать браузерам, что они работают с CSS. (К тому же, HTML этого требует.) Это делается с помощью атрибута type тега style. Значение type указывает, какой тип таблиц стилей используется. Для CSS значение будет «text/css». Нижеследующее отрывок из предыдущего документа-образца, показывающий, как лучше писать это (в сочетании с использованием комментариев HTML):
<HTML> <TITLE>Bach's home page</TITLE> <STYLE TYPE="text/css"> <!-- h2 { color: green } --> </STYLE> <BODY> .. </BODY> </HTML>
Когда браузер загружает документ, он проверяет, сможет ли он понять язык таблиц стилей. Если сможет, он пытается прочесть таблицу, иначе проигнорирует. Атрибут type (см. в главе 1 обсуждение HTML-атрибутов) в теге style это способ дать браузеру понять, какой язык стилей используется. Атрибут type должен быть включен.
Чтобы облегчить чтение примеров, мы решили не заключать таблицы стилей в HTML-комментарии, но мы обязательно будем использовать атрибут type во всей книге.
Древовидные структуры и наследование
Вспомните из главы 1 обсуждение HTML, представляющего документ в виде древовидной структуры, и того, что элементы HTML имеют дочерние и родительские объекты. Есть много причин для создания древовидных документов. Для таблиц стилей есть одна очень хорошая причина: наследование. Как дети наследуют своих родителей, так и HTML-элементы. Только вместо наследования генов и денег, элементы HTML наследуют стилистические свойства.
Давайте начнем с того, что посмотрим на документ-образец.:
<HTML> <TITLE>Bach's home page</TITLE> <BODY> <h2>Bach's home page</h2> <P>Johann Sebastian Bach was a <STRONG>prolific</STRONG> composer. Among his works are: <UL> <LI>the Goldberg Variations <LI>the Brandenburg Concertos <LI>the Christmas Oratorio </UL> </BODY> </HTML>
Древовидная структура этого документа выглядит так:
Посредством наследования, значения свойств CSS присвоенные одному элементу, передадуться вниз по дереву его потомкам. Например, в наших образцах зеленый цвет до сих пор присваивается тегам h2 и h3. Теперь, скажем, нам нужно присвоить этот цвет всем элементам документа. Можно сделать это, перечислив все типы элементов в селекторе.:
<STYLE TYPE="text/css"> h2, h3, P, LI { color: green } </STYLE>
Однако, большинство документов HTML сложнее нашего образца, и таблица стилей вскоре сильно удлинилась бы. Есть способ лучше — и короче. Вместо присвоения стиля каждому типу элемента, мы присваиваем его их общему предку: тегу body:
<STYLE TYPE="text/css"> BODY { color: green } </STYLE>
Поскольку прочие элементы наследуют свойства тега body, все они наследуют и зеленый цвет. (Рисунок 2.4 ).
Как вы уже заметили, наследование транспортное средство, которое распространяет стилистические свойства на потомков элемента. Поскольку тег body общий предок всех видимых элементов, body подходящий селектор для присваивания стилистических правил всему документу.
Аннулирование наследования
В предыдущем примере, всем элементам дали одинаковый цвет посредством наследования. Иногда, все же, дети не похожи на родителей. Не удивительно, что это применимо и к CSS. Скажем, вы бы хотели, чтобы содержимое тегов h2 отображалось бы синим цветом, а остальное зеленым. Это легко сделать в CSS:
<STYLE TYPE="text/css"> BODY { color: green } h2 { color: navy } </STYLE>
Раз тег h2 дочерний элемент тега body (и, следовательно, наследует body), эти два правила в таблице стилей выше несовместимы. Первое присваивает цвет содержимому тега body, а, значит, и цвет элементов h2 посредством наследования; в то время, как второе правило присваивает цвет исключительно тегу h2. Какое из них победит? Давайте узнаем:
Причина, по которой побеждает второе правило, в том, что оно более конкретное чем первое. Первое правило очень общее: оно влияет на все элементы страницы. Второе правило из всего документа влияет только на элементы h2, а, значит, оно более конкретно.
Будь CSS языком програмирования, порядок, в котором определяются правила, определял бы, какое из них выиграет. Но CSS не язык программирования, и в примере выше порядок порядок не имеет значения. Результат был бы точно таким, используй мы эту таблицу стилей:
<STYLE TYPE="text/css"> h2 { color: navy } BODY { color: green } </STYLE>
CSS разработали так, чтобы разрешать противоречия между таблицами стилей как в примере выше. Конкретность один из аспектов этого. Детали можно найти в главе 15 , «Каскадирование и наследование.»
Свойства, которые не наследуются
В общем случае, свойства в CSS наследуются от родительского элемнта к дочернему, как описано в предыдущих примерах. Некоторые свойства, однако, не наследуются, и в этом всегда есть веская причина. Используем свойство background (описано в главе 11) как пример свойства, которое не наследуется.
Скажем, вам нужно установить фоновое изображение для страницы. Это обычный эффект в Сети. В CSS можно написать:
<HTML> <TITLE>Bach's home page</TITLE> <STYLE TYPE="text/css"> BODY { background: url(texture.gif) white; color: black; } </STYLE> <BODY> <h2>Bach's <EM>home</EM> page</h2> <P>Johann Sebastian Bach was a prolific composer. </BODY> </HTML>
Свойство background «фон» имеет URL («texture.gif»), указывающий фоновое изображение в качестве значения. Когда изображение загружено, страница выглядит так:
В примере выше есть несколько вещей, о которых стоит рассказать подробнее:
- Фоновое изображение перекрывает поверхность наподобие обоев фоны элементов h2 и p также были перекрыты. Это не из-за наследования, причина в том, что если не определено иначе, все фоны прозрачны. Так что, раз мы не определили как-либо фоны для содержимого тегов h2 или p, фон родительского элемента body будет просвечивать.
- Вдобавок к URL изображения, в качестве фона также приваивается цвет (по умолчанию белый). Если изображение не будет найдено, вы увидите вместо него цвет.
- Цвет содержимого body установлен черным. Чтобы гарантировать контраст между текстом и фоном, хорошей привычкой будет всегда устанавливать свойство color когда устанавливаете свойство background.
А почему, собственно, свойство background не наследуется? Визуально, эффект от прозрачности подобен наследованию: выглядит так, будто все элементы имеют один и тот же фон. Есть две причины: во-первых, прозрачные фоны отображаются скорее (нечего отображать!), чем прочие фоны. Во-вторых, поскольку фоновые изображения выравниваются относительно элементов, к которым принадлежат, т.е. в ином случае вы бы не всегда наблюдали гладкие стыковки фона.
Стандартные задачи в CSS
Присвоения цветов и фонов, как описано выше, среди наиболее частых задач, выполняемых CSS. Прочие общие задачи включают присвоение шрифтов и свободного места вокруг элементов. Этот раздел обеспечивает вам экскурсию по наиболее часто используемым свойствам CSS.
Частые задачи: шрифты
Начнем-ка со шрифтов. Если вам случалось пользоваться специальными приложениями для верстки, вы сможете разобраться в этой небольшой таблице стилей:
h2 { font: 36pt serif }
Это правило присваивает определенный шрифт элементам h2. Первая часть значения 36pt устанавливает шрифт размером 36 пунктов. «Пункт» старая типографская единица измерения, которая здравствует и в цифровом веке. В следующей главе мы расскажем, почему стоит использовать единицу «em» вместо «pt» но пока что заострим внимание на пунктах. Вторая часть значения serif сообщает браузеру, что нужно использовать шрифт с серифами (маленькими засечками на концах шрифтов, глава 5 расскажет вам о них подробнее). Более декоративные шрифты с засечками лучше подходят домашней страничке Баха, поскольку современные санс-серифные шрифты (шрифты без засечек) не использовались в его время. Вот результат:
Свойство font это укороченное свойство для установки нескольких других свойств одновременно. Используя его, можно сократить свои таблицы стилей, и присвоить значения всем свойствам, которые оно заменяет. Если же выбрать подробную версию, пришлось бы установить каждое из них, чтобы получилось, как в примере вверху:
h2 { font-size: 36pt; font-family: serif; font-style: normal; font-weight: normal; font-variant: normal; line-height: normal; }
Иногда нужно всего лишь установить лишь одно из них. Например, вам нужно наклонить текст в некоторых элементах. Вот пример.:
UL { font-style: italic }
Свойство font-style не изменит размера шрифта либо семейство шрифтов, оно просто наклонит существующий шрифт. Когда оно присвоено элементу ul, содержимое тегов li внутри этого контейнера станет наклоенным, поскольку свойство font-style наследуется. Вот результат применения к тестовой странице, которые вы уже знаете.:
Похожим образом, свойство font-weight используется для изменения плотности толщины букв. Можно еще больше выделить пункты списка, присвоив их предку значение bold:
UL { font-style: italic; font-weight: bold; }
Что выводит:
Последние свойства font-variant и line-height до сих пор не слишком широко поддерживаются браузерами, а потому не используются широко.
Частые задачи: поля
Установка свободных пробелов вокруг элементов основной инструмент в типографии. Вверху заголовка над этим абзацем есть интервал, немного меньший внизу его. У этого абзаца, напечатанного в книге, есть свободные промежутки слева и (немного меньше) справа. CSS можно использовать, чтобы определить, сколько расстояния должно быть вокруг различных видов элементов.
По умолчанию, ваш браузер знает совсем немного о том, как отображать раличные виды элементов в HTML. Например, он знает, что списки и содержание тегов blockquote печатаются с отступами, чтобы отделить их от основного текста. Как дизайнер, вы можете основываться на этих установках, одновременно определяя свои собственные детали. Давайте попробуем Давайте рассмотрим тег blockquote в качестве примера. Вот тестовый документ:
<HTML> <TITLE>Fredrick the Great meets Bach</TITLE> <BODY> <P>One evening, just as Fredrick the Great was getting his flute ready, and his musicians were assembled, an officer brought him a list of the strangers who had arrived. With his flute in his hand he ran over the list, but immediately turned to the assembled musicians, and said, with a kind of agitation: <BLOCKQUOTE>"Gentlemen, old Bach is come." </BLOCKQUOTE> <P>The flute was now laid aside, and old Bach, who had alighted at his son's lodgings, was immediately summoned to the Palace. </BODY> </HTML>
Скриншот внизу показывает, как типичный HTML-браузер отобразит этот документ:
Как можно видеть, браузер добавил пробелы со всех сторон цитируемого текста. В CSS эти пробелы называются «margins» «поля» и все элементы имеют поля со всех четырех сторон. Свойства называются: margin-top, margin-right, margin-bottom и margin-left. Можно изменить отображение содержимого контейнера blockquote, написав маленькую таблицу стилей:
BLOCKQUOTE { margin-top: 1em; margin-right: 0em; margin-bottom: 1em; margin-left: 0em; font-style: italic; }
Единица «em» будет подробно рассмотрена в следующей главе, но уже сейчас можно раскрыть ее секрет: она масштабирует относительно размера шрифта. Таким образом, код в примере выше создаст вертикальные поля такой же высоты, как и шрифт (1em) элемента blockquote, и горизонтальные поля с нулевой шириной. Чтобы убедиться, что цитируемый текст все-таки будет отличаться, сделаем его курсивным. Результат таков:
Точно так же, как font укороченное свойство для установки нескольких шрифтовых свойств сразу, margin это укороченное свойство которое устанавливает все свойства полей. Поэтому пример вверху можно записать и как:
BLOCKQUOTE { margin: 1em 0em 1em 0em; font-style: italic; }
Первая часть значения — 1em — присваивается верхнему полю (собственное свойство margin-top). Отсюда отсчитывается против часовой стрелки: 0em присваивается к margin-right (правое поле), 1em присваивается margin-bottom (нижнее поле), и 0em присваивается margin-left (левое поле).
Поскольку левое поле равно нулю, цитируемому тексту нужно больше стиля, чтобы отделить его от остального текста. Установка в font-style значения italic помогает, а добавление фонового цвета еще больше усиливает цитату:
BLOCKQUOTE { margin: 1em 0em 1em 0em; font-style: italic; background: #EDB; }
Вот результат:
Как и ожидалось, фоновый цвет позади цитаты изменился. В отличие от предыдущих примеров, цвет определялся в частях красного-зеленого-синего (RGB от англ. red/green/blue) цветов. Цвета RGB детально описываются в главе 11 .
Стилистической проблемой в верхнем примере является то, что фоновый цвет едва покрывает цитируемый текст. Пространство вокруг цитаты область границ не запоняется цветом элемента. В CSS есть другой вид разделителей, называемый «padding» «заполнение пустотой», который и использует цвет элемента. В других Во всех других отношениях, свойства заполнения подобны свойствам границ: они добавляют промежутки вокруг элемента. Давайте добавим заполнение к цитате:
BLOCKQUOTE { margin: 1em 0em 1em 0em; font-style: italic; background: #EDB; padding: 0.5em; }
Результат установки заполнения выразился в пробеле между текстом и треугольником, его окружающим:
Обратите внимание, что свойству padding дано лишь одно значение (0.5em). Как и свойство margin, padding может принимать 4 значения, которые могут быть приписаны к верхнему, правому, нижнему и левому заполнению соответственно. Однако, когда одно и то же значение приваивается всем сторонам, единичное его упоминание сработает. Это справедливо и для padding и для margin (также как и для некоторых других свойств границ, которы описаны См. Промежутки вокруг блоков. ).
Частые задачи: ссылки
Чтобы облегчить пользователям проглядывание гипертекстовых документов, ссылки должны иметь стиль, отличный от нормального текста. Браузеры HTML часто подчеркивают текст гиперссылок. Также применяются различные цветовые схемы, указывающие, переходил ли уже пользователь по этой ссылке или нет. Поскольку гиперссылки являются довольно значимой частью Сети, в CSS есть специальная поддержка для их стилизации. Вот простой пример:
A:link { text-decoration: underline }
Примерный код вверху указывает, что непосещенные ссылки должны быть подчеркнуты:
Ссылки подчеркнуты, как мы и указали, но они вдобавок синие, чего мы не указывали. Когда авторы не указывают все возможные стили, браузеры используют стили по умолчанию, чтобы заполнить пробелы. Взаимодействие между авторскими стилями, стилями по умолчанию и пользовательскими стилями (собственными предпочтениями пользователя) еще один пример противоречия между решающими правилами CSS. Это называется «каскадом»(«C» в «CSS»). Мы обсудим каскад ниже.
Селектор (A:link
) заслуживает
особого замечания. Вы, возможно, узнаете «A» как тег HTML, но
последняя часть нова. «:link» это один из так
называемых псевдо-классов CSS. Псевдо-классы используют, чтобы
наделить стилем элементы, основанные на информации извне самого
документа. К примеру, автор документа не может знать, перешли ли
по определенной ссылке или нет. Детально псевдо-классы
описываются в главе 4, а здесь мы лишь дадим
еще несколько примеров:
A:visited { text-decoration: none }
Это правило присваивает стиль посещенным ссылкам,
точно так, как A:link
присваивает стиль
непосещенным ссылкам. Вот пример посложнее:
A:link, A:visited { text-decoration: none } A:hover { background: cyan }
Последнее правило знакомит нас с новым псевдо-классом :hover. При условии, что пользователь перемещает указующее устройство (вроде мыши), определенный стиль будет приложен к элементу, когда пользователь двигает курсор над («зависает» над) ссылкой. Вот как это выглядит:
У псевдо-класса :hover интересная история. Он появился в CSS2 после того, как соответствующий эффект стал популярен среди программистов JavaScript. Решение в JavaScript требует сложного кода по сравнению с псевдо-классами CSS, и это пример того, как CSS собирает эффекты, ставшие популярными среди Веб-дизайнеров.
Слово о каскадах
Фундаментальной чертой CSS является то, что более чем одна таблица стилей может повлиять на представление документа. Эта черта известна как каскадность, потому что различные таблицы стилей считаются идущими сериями. Каскадность является фундаментальной чертой CSS, потому что мы знаем, что любой документ вполне вероятно может получить таблицы стилей из многих исотчников: браузера, дизайнера и, возможно, пользователя.
В последнем наборе примеров вы увидели, что цвет текста ссылок стал синим без конкретизации таблице стилей. Кроме того, браузерам известно, как форматировать содержимое тегов blockquote и h2 без явного указания. Все, что браузер знает о форматировании, хранится в его таблице стилей по умолчанию и совмещается с авторскими и пользовательскими таблицами стилей, когда документ отображается.
Мы годами знали, что дизайнеры хотят проектировать собственные таблицы стилей. Однако, мы обнаружили, что пользователи тоже хотят иметь возможность влиять на представление документов. С CSS они могут сделать это заполняя личную таблицу стилей, которая совместится с браузерной и дизайнерской таблицами. Все противоречия между различными таблицами стилей решаются браузером. Обычно, дизайнерская таблица стилей имеет высший приоритет в документе, затем пользовательская, потом браузерная по умолчанию. Однако пользователь может отметить, что правило очень важно, и тогда оно аннулирует любые авторские или браузерные стили.
Мы углубимся в детали каскадирования в главе 15, «Каскадирование и наследование». Перед этим, следует узнать многое о шрифтах, промежутках и цветах.
HTML и CSS — W3C
HTML (гипертекст Язык разметки) и CSS (каскадные таблицы стилей) — это два основных технологий для построения сети страниц. HTML обеспечивает структуру страницы, CSS — (визуальная и звуковая) макет, для разнообразие устройств. Наряду с графикой и скриптами, HTML и CSS являются основой для создания веб-страниц и Интернет Приложения. Узнайте больше ниже о:
Что такое HTML?
HTML — это язык для описания структуры сети страниц.HTML дает авторам возможность:
- Публикуйте онлайн-документы с заголовками, текст, таблицы, списки, фотографии и т. д.
- Получить онлайн-информацию через гипертекстовые ссылки, одним щелчком кнопка.
- Дизайн бланков для проведения сделок с удаленными службами, для использования в поиск информации, изготовление бронирование, заказ продуктов и т. д.
- Включите электронные таблицы, видеоклипы, аудиоклипы и другие приложения прямо в своих документах.
В HTML авторы описывают структуру страниц с использованием разметки . элемента языковой метки части содержания, такие как «абзац», «Список», «таблица» и т. Д.
Что такое XHTML?
XHTML — это вариант HTML, в котором используется синтаксис XML, расширяемый язык разметки.XHTML имеет все одинаковые элементы (для абзацев, и т. д.) как вариант HTML, но синтаксис немного отличается. Поскольку XHTML — это XML-приложение, вы можете использовать другой XML инструменты с ним (такие как XSLT, язык для преобразования содержимого XML).
Что такое CSS?
CSS — это язык для описания представления Веб-страницы, включая цвета, макет и шрифты.Это позволяет адаптировать презентацию к различным типам устройств, таким как большие экраны, маленькие экраны или принтеры. CSS не зависит от HTML и может использоваться с любой разметкой на основе XML язык. Отделение HTML от CSS упрощает обслуживание сайтов, делиться таблицы стилей на всех страницах и адаптировать страницы в разные среды. Это упомянуто как разделение структуры (или: содержание) из презентации.
Что такое веб-шрифты?
WebFonts — это технология, которая позволяет пользователям использовать шрифты по запросу через Интернет, не требуя установки в операционной системе.W3C имеет опыт загрузки шрифтов через HTML, CSS2 и SVG. До недавнего времени загружаемые шрифты не были распространены в Интернете из-за отсутствия совместимый формат шрифта. Компания WebFonts планирует решить эту проблему путем создания поддерживаемого отраслью открытого формата шрифтов для Интернета (называемого «WOFF»).
Примеры
Следующий очень простой пример часть HTML-документа показывает, как для создания ссылки в абзаце.Когда отображается на экране (или в речи синтезатор), текст ссылки будет окончательным отчет»; когда кто-то активирует ссылку, браузер получит ресурс идентифицировано «Http://www.example.com/report»:
Для получения дополнительной информации см. окончательный отчет .
Атрибут class
на
начальный тег абзаца («
») может быть используется, среди прочего, для добавления стиля.Для например, выделить курсивом текст всех абзацы с классом moreinfo, один можно написать в CSS:
p.moreinfo {font-style: italic}
Поместив это правило в отдельный файл, стиль может быть общим для любого количества HTML-документы.
Дополнительная информация
Для получения дополнительной информации о HTML и CSS, см. руководства по HTML и CSS.
Для расширенных преобразований документов и макет за пределами CSS, см. XSLT & XSL-FO.
Как работает CSS — Изучите веб-разработку
Мы узнали основы CSS, для чего он нужен и как писать простые таблицы стилей. В этом уроке мы рассмотрим, как браузер использует CSS и HTML и превращает их в веб-страницу.
Когда браузер отображает документ, он должен объединить содержимое документа с информацией о его стиле. Он обрабатывает документ в несколько этапов, которые мы перечислили ниже. Имейте в виду, что это очень упрощенная версия того, что происходит, когда браузер загружает веб-страницу, и что разные браузеры будут обрабатывать этот процесс по-разному. Но примерно так и происходит.
- Браузер загружает HTML (например, получает его из сети).
- Он преобразует HTML в DOM ( Document Object Model ).Модель DOM представляет собой документ в памяти компьютера. Модель DOM объясняется более подробно в следующем разделе.
- Затем браузер извлекает большинство ресурсов, на которые ссылается документ HTML, таких как встроенные изображения и видео … и связанный CSS! JavaScript обрабатывается немного позже в этом процессе, и мы не будем говорить об этом здесь, чтобы упростить задачу.
- Браузер анализирует полученный CSS и сортирует различные правила по типам их селекторов в разные «корзины», например.г. элемент, класс, идентификатор и т. д. На основе найденных селекторов он определяет, какие правила должны применяться к каким узлам в DOM, и при необходимости прикрепляет к ним стиль (этот промежуточный шаг называется деревом визуализации).
- Дерево рендеринга размещается в структуре, в которой оно должно появиться после применения к нему правил.
- Визуальное отображение страницы отображается на экране (этот этап называется рисованием).
Следующая диаграмма также предлагает простой вид процесса.
Модель DOM имеет древовидную структуру. Каждый элемент, атрибут и фрагмент текста на языке разметки становится узлом DOM в древовидной структуре. Узлы определяются их отношениями к другим узлам DOM. Некоторые элементы являются родителями дочерних узлов, а дочерние узлы имеют братьев и сестер.
Понимание DOM помогает вам проектировать, отлаживать и поддерживать ваш CSS, потому что DOM — это место, где встречаются ваш CSS и содержимое документа. Когда вы начнете работать с DevTools браузера, вы будете перемещаться по DOM, выбирая элементы, чтобы увидеть, какие правила применяются.
Вместо длинного скучного объяснения давайте рассмотрим пример, чтобы увидеть, как реальный фрагмент HTML преобразуется в DOM.
Возьмите следующий HTML-код:
Воспользуемся:
Каскадный
Стиль
Таблицы
В модели DOM узел, соответствующий нашему элементу
, является родительским. Его дочерние элементы — это текстовый узел и три узла, соответствующие нашим элементам
.Узлы SPAN
также являются родительскими, а их дочерними узлами являются текстовые узлы:
P ├─ «Давайте использовать:» ├─ SPAN | └─ «Каскадный» ├─ SPAN | └─ «Стиль» └─ SPAN └─ «Листы»
Вот как браузер интерпретирует предыдущий фрагмент HTML — он отображает указанное выше дерево DOM, а затем выводит его в браузере следующим образом:
Допустим, мы добавили CSS в наш документ, чтобы стилизовать его. Опять же, HTML выглядит следующим образом:
Воспользуемся:
Каскадный
Стиль
Таблицы
Предположим, мы применили к нему следующий CSS:
пролет {
граница: сплошной черный 1px;
цвет фона: салатовый;
}
Браузер проанализирует HTML и создаст из него DOM, а затем проанализирует CSS.Поскольку единственное правило, доступное в CSS, имеет селектор span
, браузер сможет очень быстро сортировать CSS! Он применит это правило к каждому из трех
s, а затем нарисует окончательное визуальное представление на экране.
Обновленный вывод выглядит следующим образом:
В нашей статье «Отладка CSS» в следующем модуле мы будем использовать DevTools браузера для отладки проблем с CSS и узнаем больше о том, как браузер интерпретирует CSS.
В предыдущем уроке я упоминал, что не все браузеры реализуют новый CSS одновременно.Кроме того, многие люди не используют последнюю версию браузера. Учитывая, что CSS постоянно разрабатывается и, следовательно, опережает то, что браузеры могут распознать, вы можете задаться вопросом, что произойдет, если браузер обнаружит селектор CSS или объявление, которое он не распознает.
Ответ заключается в том, что он ничего не делает, а просто переходит к следующему биту CSS!
Если браузер анализирует ваши правила и обнаруживает свойство или значение, которое он не понимает, он игнорирует их и переходит к следующему объявлению.Он сделает это, если вы допустили ошибку и неправильно написали свойство или значение, или если свойство или значение слишком новое и браузер еще не поддерживает его.
Точно так же, если браузер встречает селектор, который он не понимает, он просто проигнорирует все правило и перейдет к следующему.
В приведенном ниже примере я использовал написание цвета в британском английском, что делает это свойство недействительным, поскольку оно не распознается. Так что мой абзац не был окрашен в синий цвет.Однако все остальные CSS были применены; игнорируется только недопустимая строка.
Я хочу, чтобы этот текст был большим, жирным и синим.
p {
font-weight: жирный;
цвет: синий;
размер шрифта: 200%;
}
Это очень полезное поведение. Это означает, что вы можете использовать новый CSS в качестве расширения, зная, что не произойдет никаких ошибок, если он не будет понят — браузер либо получит новую функцию, либо нет. Это позволяет использовать базовый резервный стиль.
Это особенно хорошо работает, когда вы хотите использовать новое значение, которое поддерживается не везде. Например, некоторые старые браузеры не поддерживают calc ()
в качестве значения. Я мог бы указать резервную ширину для поля в пикселях, а затем перейти к ширине со значением calc ()
, равным 100% - 50px
. Старые браузеры будут использовать пиксельную версию, игнорируя строку о calc ()
, поскольку они ее не понимают. Новые браузеры интерпретируют строку с использованием пикселей, но затем заменяют ее строкой с помощью calc ()
, поскольку эта строка появляется позже в каскаде.
.box {
ширина: 500 пикселей;
ширина: calc (100% - 50 пикселей);
}
В последующих уроках мы рассмотрим еще много способов поддержки различных браузеров.
Вы почти закончили этот модуль; у нас есть только одно дело. В следующей статье вы будете использовать свои новые знания, чтобы изменить стиль примера, тестируя в процессе некоторый CSS.
Что такое CSS, как он работает и для чего используется?
Подходит ли вам технология? Пройдите нашу 3-минутную викторину!
Ты выучишь: Если вам подходит карьера в сфере технологий Какая техническая карьера соответствует вашим сильным сторонам Какие навыки вам понадобятся для достижения ваших целей
Помните HTML (язык гипертекстовой разметки)? Язык кодирования, который служит основой для всей веб-разработки? Что ж, если HTML — это первый язык, который вам захочется выучить, когда вы заинтересованы в создании веб-сайтов, то его двоюродный брат CSS — на втором месте.
Что такое CSS? И как это связано с HMTL?
CSS означает каскадные таблицы стилей с упором на «стиль». В то время как HTML используется для структурирования веб-документа (определения таких вещей, как заголовки и абзацы, а также для встраивания изображений, видео и других мультимедийных материалов), CSS проходит через него и определяет стиль вашего документа — макеты страниц, цвета и шрифты определяются. с CSS. Думайте о HTML как о фундаменте (он есть в каждом доме), а о CSS как о эстетическом выборе (есть большая разница между викторианским особняком и современным домом середины века).
Как работает CSS?
CSS привносит стиль на ваши веб-страницы, взаимодействуя с элементами HTML. Элементы — это отдельные HTML-компоненты веб-страницы, например абзац, которые в HTML могут выглядеть так:
Это мой абзац!
Если вы хотите, чтобы этот абзац отображался розовым и жирным шрифтом для людей, просматривающих вашу веб-страницу через веб-браузер, вы должны использовать код CSS, который выглядит следующим образом:
p {цвет: розовый; font-weight: жирный; }
В этом случае «p» (абзац) называется «селектором» — это часть кода CSS, определяющая, на какой элемент HTML будет влиять стиль CSS.В CSS селектор написан слева от первой фигурной скобки. Информация в фигурных скобках называется объявлением и содержит свойства и значения, которые применяются к селектору. Свойства — это такие вещи, как размер шрифта, цвет и поля, а значения — это настройки этих свойств. В приведенном выше примере «color» и «font-weight» являются свойствами, а «pink» и «bold» — значениями. Полный комплект
в скобках{цвет: розовый; font-weight: жирный; }
— это объявление, и снова «p» (то есть абзац HTML) — это селектор.Эти же основные принципы можно применять для изменения размеров шрифта, цвета фона, отступов полей и т. Д. Например. . .
Корпус{background-color: lightblue; }
. . . сделает фон страницы светло-голубым, или. . .
p {font-size: 20px; красный цвет; }
. . .создаст абзац шрифтом 20 пунктов с красными буквами.
Внешний, внутренний или встроенный CSS?
Однако вам может быть интересно, как этот код CSS на самом деле применяется к содержимому HTML.Как и HTML, CSS пишется в виде простого обычного текста с помощью текстового редактора или текстового процессора на вашем компьютере, и есть три основных способа добавить этот код CSS на ваши HTML-страницы. Код CSS (или таблицы стилей) может быть внешним, внутренним или встроенным. Внешние таблицы стилей сохраняются как файлы .css и могут использоваться для определения внешнего вида всего веб-сайта с помощью одного файла (вместо добавления отдельных экземпляров кода CSS к каждому элементу HTML, который вы хотите настроить). Чтобы использовать внешнюю таблицу стилей, ваш.html файлы должны включать раздел заголовка, который ссылается на внешнюю таблицу стилей и выглядит примерно так:
Это свяжет файл .html с вашей внешней таблицей стилей (в данном случае mysitestyle.css), и все инструкции CSS в этом файле будут применяться к вашим связанным страницам .html.
Внутренние таблицы стилей — это инструкции CSS, записанные непосредственно в заголовок конкретного файла.html-страница. (Это особенно полезно, если у вас есть одна страница на сайте, которая имеет уникальный внешний вид.) Внутренняя таблица стилей выглядит примерно так. . .
<стиль> Тело {цвет фона: чертополох; } P {размер шрифта: 20 пикселей; цвет: средне-голубой; }
. . . цвет фона чертополоха и абзацы из 20 пунктов, средний синий шрифт теперь будут применены к этой единственной странице .html.
Наконец, встроенные стили — это фрагменты CSS, записанные непосредственно в код HTML и применимые только к одному экземпляру кода.Например:
Обратите внимание на этот заголовок!
приведет к тому, что один конкретный заголовок на одной странице .html будет отображаться фиолетовым шрифтом размером 40 пунктов.
Вообще говоря, внешние таблицы стилей являются наиболее эффективным методом реализации CSS на веб-сайте (легче отслеживать и реализовывать стиль сайта из специального файла CSS), в то время как внутренние таблицы стилей и встроенный стиль можно использовать в случае в индивидуальном порядке, когда необходимо внести индивидуальные изменения в стиль.
Итак, если HTML является основой, каркасами, стенами и балками, поддерживающими ваш веб-сайт, рассмотрите CSS как цвет краски, стили окон и ландшафтный дизайн, который появится позже. Вы ничего не добьетесь, не заложив сначала эту основу, но, как только вы это сделаете, вам захочется продолжить работу с каким-то стилем, а CSS — это билет, чтобы раскрыть ваш внутренний декоратор.
Подходит ли вам технология? Пройдите нашу 3-минутную викторину!
Ты выучишь: Если вам подходит карьера в сфере технологий Какая техническая карьера соответствует вашим сильным сторонам Какие навыки вам понадобятся для достижения ваших целей
Что такое CSS и почему его следует использовать?
Даже если вы не программист, вы наверняка слышали об HTML.Это самый фундаментальный язык разметки, он существует с девяностых годов. Возможно, вы не так хорошо знакомы с CSS. Это не менее важный элемент программирования, и наряду с HTML и JavaScript CSS является одним из трех краеугольных камней технологий для Интернета. Но что такое CSS, как он работает и почему он так важен? Читайте и учитесь.
[cta vid = «0»]
Что такое CSS?
CSS означает каскадные таблицы стилей.Короче говоря, CSS — это язык дизайна, который делает веб-сайт более привлекательным, чем простой или скучный текст. В то время как HTML в значительной степени определяет текстовое содержимое, CSS определяет визуальную структуру, макет и эстетику. HTML — это язык разметки, а CSS — это язык таблиц стилей. Когда вы думаете о CSS, думайте о «внешнем виде».
Как CSS работает с HTML? Если бы HTML был компонентом двигателя автомобиля, CSS был бы стилем кузова и окраской.Веб-сайт может работать без CSS, но это определенно некрасиво. CSS делает внешний вид веб-сайта сияющим и создает отличный пользовательский интерфейс. Без CSS веб-сайты были бы менее приятными для глаз и, вероятно, с ними было бы труднее ориентироваться. Помимо макета и формата, CSS отвечает за цвет шрифта и многое другое.
Почему так важен CSS?
Чтобы проиллюстрировать важность CSS, вот пример страницы на сайте DevMountain с CSS и без него, тип визуального руководства по CSS, если хотите.
Вот раздел страницы DevMountain Courses с CSS:
А вот тот самый раздел без CSS:
Резкий контраст, правда? Вы заметите довольно много различий между ними, когда дело доходит до общей презентации. С помощью CSS вы видите изменение шрифта, размера шрифта и цвета шрифта. Вы также видите изменение формата кнопок и добавление синего фона позади них. Каждый из этих элементов возможен благодаря каскадным таблицам стилей.Что выглядит более привлекательно для пользователя? Довольно легко понять, почему CSS так важен.
Каковы преимущества CSS?
CSS дает ряд преимуществ, в том числе:
1) Более высокая скорость страницы
Чем больше кода, тем меньше скорость страницы. А CSS позволяет использовать меньше кода. CSS позволяет использовать одно правило CSS и применять его ко всем вхождениям определенного тега в документе HTML.
2) Лучшее взаимодействие с пользователем
CSS не только упрощает просмотр веб-страниц, но и обеспечивает удобное форматирование.Когда кнопки и текст расположены в логических местах и хорошо организованы, пользовательский опыт улучшается.
3) Более быстрое время разработки
С помощью CSS вы можете применять определенные правила форматирования и стили к нескольким страницам с помощью одной строки кода. Одна каскадная таблица стилей может быть воспроизведена на нескольких страницах веб-сайта. Если, например, у вас есть страницы продуктов, которые должны иметь одинаковое форматирование, внешний вид и поведение, написания правил CSS для одной страницы будет достаточно для всех страниц одного и того же типа.
4) Простые изменения форматирования
Если вам нужно изменить формат определенного набора страниц, это легко сделать с помощью CSS. Нет необходимости исправлять каждую отдельную страницу. Просто отредактируйте соответствующую таблицу стилей CSS, и вы увидите изменения, примененные ко всем страницам, использующим эту таблицу стилей.
5) Совместимость между устройствами
Адаптивный веб-дизайн имеет значение. В наши дни веб-страницы должны быть полностью видимыми и удобными для навигации на всех устройствах.Будь то мобильный телефон или планшет, настольный компьютер или даже смарт-телевизор, CSS в сочетании с HTML делает возможным адаптивный дизайн.
Хотите изучить CSS?
Как видите, CSS критически важен, когда дело доходит до общего представления веб-страницы. И не только это, это значительно облегчает жизнь разработчикам, когда дело доходит до форматирования. Овладение CSS — важная часть того, чтобы стать ценным активом и хорошим программистом.
[cta vid = «0»]
HTML-стилей CSS
CSS — это каскадные таблицы стилей.
CSS экономит много работы. Он может управлять макетом нескольких веб-страницы сразу.
Управление текстом
цветов, Ящики
Что такое CSS?
Каскадные таблицы стилей (CSS) используются для форматирования макета веб-страницы.
С помощью CSS вы можете управлять цветом, шрифтом, размером текста, интервалом. между элементами, как элементы расположены и расположены, какой фон должны использоваться изображения или цвета фона, разные дисплеи для разных устройств и размеры экрана, и многое другое!
Совет: Слово каскадный означает, что стиль примененный к родительскому элементу, также будет применяться ко всем дочерним элементам в пределах родитель.Итак, если вы установите цвет основного текста на «синий», все заголовки, абзацы и другие текстовые элементы в теле также получат тот же цвет (если вы не укажете что-то другое)!
Использование CSS
CSS можно добавить в HTML-документы тремя способами:
- Встроенный — с использованием атрибута стиля внутри HTML-элементов
- Внутренний — с использованием элемента
...Однако наши инструкции по стилю требуют немного больше деталей, чем раньше. Поскольку мы переместили их в заголовок, каждое правило больше не связано с элементом. Мы могли бы объявить цвет : красный , но что должен иметь этот цвет?
Здесь на помощь приходят селекторы CSS. Они позволяют нам нацеливать определенные части страницы и определять их стиль в одном месте, используя следующий синтаксис:
селектор {
декларация1;
декларация2;
/ * и др.* /
}
Например, чтобы сделать текст абзаца синим, мы можем указать следующее:
p {
цвет: синий;
}В этом примере селектор просто p , который соответствует всем элементам абзаца в нашем документе. Он будет окрашивать весь текст в синий цвет, если он находится в тегах
Связывание внешней таблицы стилей
Последний метод, который нужно осветить, - это связывание.Это, безусловно, самый полезный подход, и вам следует выбирать его в большинстве случаев. Вместо того, чтобы встраивать правила CSS в элемент стиля непосредственно в документ, вы можете переместить их в отдельный файл.
Вставьте этот код в теги вашего HTML-файла, чтобы связать вашу внешнюю таблицу стилей.
Сила CSS
С помощью связанного метода мы используем основную силу CSS: разделение задач.Вся семантическая информация - что означает контент - содержится в документе HTML. Стиль - как он выглядит - находится в отдельном файле, таблице стилей.
Вот лишь несколько преимуществ этого разделения:
- Вы можете отключить таблицу стилей, просто изменив ссылку на файл. Это может происходить даже динамически. За один шаг вы можете полностью изменить внешний вид страницы.
- При необходимости многие страницы могут использовать одни и те же таблицы стилей.Изменяя один-единственный файл, вы можете обновить внешний вид всего веб-сайта.
- Разделение страницы на «содержание» и «стиль» имеет технические преимущества. Прокси и браузеры могут кэшировать отдельные файлы отдельно. Это означает, что сайт может отправлять информацию о своем стиле один раз, а не включать ее на каждую страницу.
- При совместной работе разные команды могут работать со своими сильными сторонами, создавая и редактируя отдельные файлы, не влияя друг на друга.
Объяснение Каскада
Вы многое узнали о стилях и таблицах стилей, но как насчет «каскадной» части CSS?
Каскад - это то, что решает, какие стили использовать при наличии нескольких таблиц стилей. Вы видели, как автор может определять стили для своего контента. Но еще одна особенность CSS заключается в том, что он дает читателям и производителям браузеров возможность высказаться по этому поводу.
Возможно, вы уже интересовались стилями по умолчанию.Например, как элемент h2 выглядит большим и жирным даже без авторских таблиц стилей? Это происходит благодаря набору специальных правил, составляющих таблицу стилей пользовательского агента. Эти правила изначально применяются вашим веб-браузером к каждой посещаемой вами странице.
Каскад указывает, что таблица стилей автора применяется после стилей пользовательского агента. Если наш браузер говорит «заголовки выделены жирным шрифтом», а автор страницы заявляет, что «заголовки на этой странице светлые», тогда они будут светлыми.
Есть еще один источник таблиц стилей, который передает читателю некоторый контроль. Теоретически любой веб-пользователь может поддерживать пользовательскую таблицу стилей с собственными правилами. Они находятся посередине: пользовательские правила переопределят настройки браузера по умолчанию, но сами будут переопределены стилями авторов. К сожалению, поддержка пользовательских таблиц стилей никогда не была широко распространена.
Таблицы стилей можно использовать в разных контекстах за пределами экрана. Атрибут media элемента link определяет, к каким типам мультимедиа применяется таблица стилей.Например, вы можете определить таблицу стилей для печати, используя следующую разметку:
Вы можете собрать общие стили в одной глобальной таблице стилей, а стили для конкретных носителей - в отдельных файлах. Существуют даже типы мультимедиа, предназначенные для аудиопрезентации или презентации вашего контента шрифтом Брайля. CSS - жизненно важный инструмент для улучшения доступности.
Связанный: Как просматривать веб-страницы, если вы слепой или слабовидящий
Такие сайты, как Википедия, используют CSS для управления своим стилем печати, скрытия нежелательных элементов и упрощения макета.
CSS улучшает внешний вид HTML
Каскадные таблицы стилей охватывают многое: каскад, наследование, селекторы, источники, мультимедиа и т. Д. Но их возможности позволяют использовать современный Интернет. Это среда, которая обеспечивает встроенные функции повторного использования, гибкости и доступности.
Чтобы увидеть всю мощь CSS и то, что он может предложить, ознакомьтесь с нашей шпаргалкой, охватывающей все основные свойства CSS3.
Шпаргалка по основным свойствам CSS3Освойте необходимый синтаксис CSS с помощью нашей шпаргалки по свойствам CSS3.
Читать далее
Об авторе Бобби Джек (Опубликовано 57 статей)Бобби - энтузиаст технологий, проработавший разработчиком программного обеспечения большую часть двух десятилетий.Он увлечен играми, работает редактором обзоров в Switch Player Magazine и занимается всеми аспектами онлайн-публикации и веб-разработки.
Более От Бобби ДжекаПодпишитесь на нашу рассылку новостей
Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!
Нажмите здесь, чтобы подписаться
Применение CSS | HTML Dog
Встроенный
Встроенные стили вставляются прямо в теги HTML с помощью атрибута
style
.Выглядят они примерно так:
текст
Это сделает этот конкретный абзац красным.
Но, если вы помните, лучший практический подход состоит в том, что HTML должен быть автономным, документом без представления , поэтому по возможности следует избегать встроенных стилей.
Ссылка на нас! Если вы нашли HTML Dog полезным, рассмотрите возможность ссылки на нас.
Внутренний
Встроенные или внутренние стили используются для всей страницы.Внутри элемента
head
тегистиля
окружают все стили страницы.Пример CSS <стиль> п { цвет: красный; } a { цвет: синий; } ...Это сделает все абзацы на странице красными, а все ссылки - синими.
Хотя предпочтительнее испачкать наш HTML встроенным представлением, также обычно предпочтительнее хранить файлы HTML и CSS отдельно, и поэтому мы остаемся с нашим спасителем…
Внешний
Внешние стили используются для всего многостраничного веб-сайта. Существует отдельный файл CSS , который будет выглядеть примерно так:
п { красный цвет; } a { цвет синий; }
Если этот файл сохранен как «style.css »в том же каталоге, что и ваша HTML-страница, тогда на нее можно будет ссылаться в HTML следующим образом:
Пример CSS ...Применить!
Чтобы получить максимальную отдачу от этого руководства, было бы неплохо опробовать код по мере продвижения, поэтому запустите новый новый файл в текстовом редакторе и сохраните пустой документ как «style.css» в том же каталог как ваш HTML-файл.
Теперь измените свой HTML-файл так, чтобы он начинался примерно так:
Моя первая веб-страница ...Сохраните файл HTML. Теперь это ссылка на файл CSS, который на данный момент пуст, поэтому ничего не изменит. По мере прохождения учебного курса CSS для начинающих вы сможете добавлять и изменять файл CSS и видеть результаты, просто обновляя окно браузера, в котором есть файл HTML, как мы это делали раньше.
.