| Поиск | |
Для поиска по сайту введите Ваш запрос в поле ниже и нажмите кнопку
Enter.
|
| Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
| Календарь | | « Август 2026 » | | Пн | Вт | Ср | Чт | Пт | Сб | Вс | | | | | | | 1 | 2 | | 3 | 4 | 5 | 6 | 7 | 8 | 9 | | 10 | 11 | 12 | 13 | 14 | 15 | 16 | | 17 | 18 | 19 | 20 | 21 | 22 | 23 | | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | 31 |
|
|
CSS (англ. Cascading Style Sheets — каскадные таблицы стилей) — формальный язык описания внешнего вида документа, написанного с использованием языка разметки. Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметкиHTML и XHTML, но может также применяться к любым XML-документам, например, к SVG или XUL. Обзор Цель создания CSS CSS используется создателями веб-страниц для задания цветов, шрифтов,
расположения отдельных блоков и других аспектов представления внешнего
вида этих веб-страниц. Основной целью разработки CSS являлось разделение
описания логической структуры веб-страницы (которое производится с
помощью HTML или других языков разметки) от описания внешнего вида этой веб-страницы (которое теперь производится с помощью формального языка
CSS). Такое разделение может увеличить доступность документа,
предоставить большую гибкость и возможность управления его
представлением, а также уменьшить сложность и повторяемость в
структурном содержимом. Кроме того, CSS позволяет представлять один и
тот же документ в различных стилях или методах
вывода, таких как экранное представление, печатное представление,
чтение голосом (специальным голосовым браузером или программой чтения с
экрана), или при выводе устройствами, использующими шрифт Брайля. Способы подключения CSS к документу Правила CSS пишутся на формальном языке
CSS и располагаются в таблицах стилей, то есть таблицы стилей содержат в
себе правила CSS. Эти таблицы стилей могут располагаться как в самом веб-документе, внешний вид которого они описывают, так и в отдельных файлах, имеющих формат CSS. (По сути, формат CSS — это обычный текстовый файл. В файле .css не содержится ничего, кроме перечня правил CSS и комментариев к ним.) То есть, эти таблицы стилей могут быть подключены, внедрены в описываемый ими веб-документ четырьмя различными способами: - когда таблица стилей находится в отдельном файле, она может быть подключена к веб-документу посредством тега
<link>, располагающегося в этом документе между тегами
<head> и </head>. (Тег <link> будет иметь атрибут
href, имеющий значением адрес этой таблицы стилей). Все правила этой
таблицы действуют на протяжении всего документа;
<head> ..... <link rel="stylesheet" type="text/css" href="style.css"> </head>
- когда таблица стилей находится в отдельном файле, она может быть
подключена к веб-документу посредством директивы @import,
располагающейся в этом документе между тегами <style> и
</style> (которые, в свою очередь, располагаются в этом документе
между тегами <head> и </head>) сразу после тега
<style>, которая также указывает (в своих скобках, после слова
url) на адрес этой таблицы стилей. Все правила этой таблицы действуют на
протяжении всего документа;
<head> ..... <style type="text/css" media="all"> @import url(style.css); </style> </head>
- когда таблица стилей находится, описана в самом документе, она может
располагаться в нём между тегами <style> и </style>
(которые, в свою очередь, располагаются в этом документе между тегами
<head> и </head>). Все правила этой таблицы действуют на
протяжении всего документа;
<head> ..... <style type="text/css"> body { color: red; } </style> </head>
- когда таблица стилей находится, описана в самом документе, она может
располагаться в нём в теле какого-то отдельного тега (посредством его
атрибута style) этого документа. Все правила этой таблицы действуют
только на содержимое этого тега.
<p style="font-size: 21px; color: green;">Рассказ о том, как вредно красить батареи</p> В первых двух случаях говорят, что к документу применены внешние таблицы стилей, а во вторых двух случаях — внутренние таблицы стилей. Для добавления CSS к XML-документу, последний должен содержать специальную ссылку на таблицу стилей. Например: Code <?xml-stylesheet type="text/css" href="style.css"?> Иерархия элементов внутри документа
Как известно, HTML-документы
строятся на основании иерархии элементов, которая может быть наглядно
представлена в древовидной форме. Элементы HTML друг для друга могут
быть родительскими, дочерними, элементами-предками, элементами-потомками, сестринскими. Элемент является родителем другого элемента, если в
иерархической структуре документа он находится сразу, непосредственно
над этим элементом. Элемент является предком другого элемента, если в иерархической структуре документа он находится где-то выше этого элемента. Пускай, например, в документе присутствуют два абзаца p, включающие в себя шрифт с полужирным начертанием b. Тогда элементы b будут дочерними элементами своих родительских элементовp, и потомками своих предковbody. В свою очередь, для элементов p элемент body будет являться не только предком, но непосредственно и родителем. И кроме того, эти два элемента p будут являться сестринскими элементами, как имеющими одного и того же родителя — body. В CSS могут задаваться, при помощи селекторов,
не только одиночные элементы, но и элементы, являющиеся потомками,
дочерними или сестринскими элементами других элементов (см. подраздел
«виды селекторов»). Построение правила CSS В первых трёх случаях подключения таблицы CSS к документу (см. выше)
каждое правило CSS из таблицы стилей имеет две основные части — селектор и блок объявлений. Селектор, расположенный в левой части правила, определяет, на какие части документа распространяется правило. Блок объявлений располагается в правой части правила. Он помещается в фигурные скобки, и, в свою очередь, состоит из одного или более объявлений, разделённых знаком «;». Каждое объявление представляет собой сочетание свойства CSS и значения,
разделённых знаком «:». Селекторы могут группироваться в одной строке
через запятую. В таком случае свойство применяется к каждому из них. селектор, селектор { свойство: значение; свойство: значение; свойство: значение; }
В четвёртом случае подключения таблицы CSS к документу (см. список)
правило CSS (являющееся значением атрибута style тега, на который оно
действует) представляет собой перечень объявлений («свойство CSS : значение»), разделённых знаком «;».
Виды селекторов
Селекторы правила CSS могут быть
p {font-family: "Garamond", serif;} .note {color: red; background: yellow; font-weight: bold;} - селекторами идентификаторов;
a[href="http://www.romantiki.ru"]{font-weight:bold;} - селекторами потомков (контекстными селекторами);
div#paragraph1 p.note {color: red;} - селекторами дочерних элементов;
p.note > b {color: green;} - селекторами сестринских элементов;
h1 + p {font-size: 24pt;} - селекторами псевдоклассов;
- селекторами псевдоэлементов;
p:first-letter {font-size: 32pc;} - Также в CSS существует так называемый универсальный селектор, обозначающий любой элемент, встречающийся в документе. Например,
*
{color:red;}. Перед любым селектором, задающим класс или идентификатор,
можно поставить знак универсального селектора, в результате получится
эквивалентное выражение, например, .first {...} и *.first {...} имеют один и тот же смысл. Классы элементов. Идентификаторы элементов.
Класс или идентификатор может быть присвоен какому-нибудь элементу
(тегу) HTML посредством атрибутов class или id этого элемента (тега): <div id="first"> ... </div> <p class="big"> ... </p>
Основное отличие между классами элементов и идентификаторами
элементов в том, что в документе какой-нибудь класс может быть присвоен
сразу нескольким элементам, а идентификатор - только одному. Также
отличие в том, что могут существовать множественные классы (когда класс
элемента состоит из нескольких слов, разделённых пробелами). Для
идентификаторов такое невозможно. Важно отметить следующее отличие идентификатора от класса:
идентификаторы широко используются в JavaScript для нахождения
уникального элемента в документе. Имена классов и идентификаторов, в отличие от названий тегов и их атрибутов, чувствительны к регистру ввода букв. Свойства классов и идентификаторов задаются с помощью соответствующих
селекторов. Причём может быть задано как свойство класса в целом (в
таком случае селектор начинается с «.»), или свойство идентификатора
самого по себе (в таком случае селектор начинается с «#»), так и
свойство какого-нибудь элемента этого класса или с этим идентификатором. В CSS помимо классов, задаваемых автором страницы, существует также ограниченный набор так называемых псевдоклассов,
описывающих вид гиперссылок с определённым состоянием в документе, вид
элемента, на котором находится фокус ввода, а также вид элементов,
являющихся первыми дочерними элементами других элементов. Также в CSS
существует четыре так называемых псевдоэлемента: первая буква, первая строка, применение специальных стилей до и после элемента. Наследование. Каскадирование. Приоритеты стилей CSS. Применение CSS к документам HTML основано на принципах наследования и каскадирования. Принцип наследования
заключается в том, что свойства CSS, объявленные для элементов-предков,
наследуются элементами потомками. Но, естественно, не все свойства CSS
наследуются — например, если для тега параграфа p средствами CSS задана
рамка, то она не будет наследоваться ни одним тегом, содержащимся в
данном теге p, а вот если для параграфа p средствами CSS задан цвет
шрифта (например, color:green;), то это свойство будет унаследовано каждым элементом-тегом, находящимся в параграфе. Принцип каскадирования применяется в случае, когда какому-то
элементу HTML одновременно поставлено в соответствие более одного
правила CSS, то есть, когда происходит конфликт значений этих правил.
Чтобы разрешить такие конфликты вводятся правила приоритета. - Наиболее низким приоритетом обладает стиль браузера;
- Следующим по значимости является стиль, заданный пользователем;
- И наиболее высоким приоритетом обладает стиль, заданный
непосредственно автором страницы. И далее, уже в этом авторском стиле
приоритеты расставляются следующим образом:
- Самым низким приоритетом обладают стили, наследуемые в документе элементом от своих предков;
- Более высоким приоритетом обладают стили, заданные во внешних таблицах стилей, подключённых к документу;
- Ещё более высоким приоритетом обладают стили, заданные
непосредственно селекторами всех десяти видов (см. подраздел «виды
селекторов»), содержащимися в контейнерах style данного документа.
Нередки случаи, когда к какому-нибудь элементу имеют отношение, задают
его вид, несколько таких селекторов. Такие конфликты между ними
разрешаются с помощью расчёта специфичности каждого такого селектора и
применения этих селекторов к данному элементу в порядке убывания их
специфичностей. При расчёте специфичности селектора принимается во
внимание:
- количество идентификаторов (
#id) в селекторе —- ((1,0,0) за каждый объявленный идентификатор в селекторе правила CSS); - количество классов (
.class) и псевдоклассов (:pseudoclass) в селекторе —- ((0,1,0) за каждый объявленный класс и псевдокласс в селекторе правила CSS ); - количество тегов в селекторе —- ((0,0,1) за каждый объявленный тег в селекторе правила CSS). (Принцип
расчёта таков, что, например, (1,0,0) будет иметь большую
специфичность, соответственно — бо́льший приоритет, чем даже (0,10,0), а
(0,1,0) будет иметь большую специфичность, больший приоритет, чем
(0,0,10). Если же рассчитанные таким образом специфичности окажутся
одинаковыми, то к элементу будет применено правило, описанное
селектором, расположенным в документе ниже других.)
- Ещё более высоким приоритетом обладают стили, объявленные
непосредственно в теге данного элемента посредством атрибута style этого
тега;
- И наконец самым высоким приоритетом обладают стили, объявленные автором страницы или пользователем, с помощью сопроводительного слова
!important. Если таких свойств несколько, то предпочтение отдаётся в первую очередь стилям, заданным пользователем,
а для остальных свойств (которые будут являться задаваемыми автором
страницы) потребуется определить их специфичности по принципам,
описанным выше, и применять эти свойства в порядке убывания этих их
специфичностей.
Пример таблицы стилей
Пример таблицы стилей (в таком виде она может быть либо размещена в
отдельном файле .css, либо же обрамлена тегами <style> и размещена
в «шапке» той самой веб-страницы, на которую она действует):p { font-family: "Garamond", serif; } h2 { font-size: 110 %; color: red; background: white; } .note { color: red; background: yellow; font-weight: bold; } p#paragraph1 { margin: 0; } a:hover { text-decoration: none; } #news p { color: blue; }
Здесь приведено шесть правил CSS с селекторами p, h2, .note, p#paragraph1, a:hover и #news p. - Первое правило присвоено HTML-элементу
p (абзацу) — назначен стиль. Абзацы будут отображаться шрифтом Garamond, или, если такой шрифт недоступен, каким-либо другим шрифтом с засечками («serif»). - Второе правило присвоено HTML-элементу
h2 (заголовку второго уровня). Заголовок второго уровня будет отображаться красным на белом фоне с увеличенным кеглем. - Третье правило будет применено к ЛЮБОМУ элементу, атрибут
class которого равен 'note'. Например, к параграфу: <p class="note">Этот абзац будет выведен полужирным шрифтом красного цвета на желтом фоне.</p> - Четвёртое правило будет применяться только к элементам
p, атрибут id которых равен paragraph1. Такие элементы не будут иметь внешних отступов (margin). - Пятое правило определяет стиль hover для элементов
a — гиперссылок. По умолчанию, в большинстве браузеров текст элементов a подчеркивается. Это правило уберёт подчеркивание, когда указатель мыши находится над этими элементами. - Последнее, шестое правило, применяется для элементов
p, которые находятся внутри КАКОГО-ЛИБО элемента с атрибутом id, равным «news» (#news p — это типичный случай селектора потомков, см. 5-й пункт списка выше). CSS-вёрстка
До появления CSS оформление веб-страниц осуществлялось исключительно средствами HTML,
непосредственно внутри содержимого документа. Однако с появлением CSS
стало возможным принципиальное разделение содержания и представления
документа. За счёт этого нововведения стало возможным лёгкое применение
единого стиля оформления для массы схожих документов, а также быстрое
изменение этого оформления. Преимущества: - Несколько дизайнов страницы для разных устройств просмотра.
Например, на экране дизайн будет рассчитан на большую ширину, во время
печати меню не будет выводиться, а на КПК и сотовом телефоне меню будет следовать за содержимым.
- Уменьшение времени загрузки страниц сайта за счет переноса правил
представления данных в отдельный CSS-файл. В этом случае браузер
загружает только структуру документа и данные, хранимые на странице, а
представление этих данных загружается браузером только один раз и могут
быть закешированы.
- Простота последующего изменения дизайна. Не нужно править каждую страницу, а лишь изменить CSS-файл.
- Дополнительные возможности оформления. Например, с помощью
CSS-вёрстки можно сделать блок текста, который остальной текст будет
обтекать (например для меню) или сделать так, чтобы меню было всегда
видно при прокрутке страницы.
Недостатки: - Различное отображение вёрстки в различных браузерах (особенно
устаревших), которые по разному интерпретируют одни и те же данные CSS.
- Часто встречающаяся необходимость на практике исправлять не только
один CSS-файл, но и теги HTML, которые сложным и ненаглядным способом
связаны с селекторами CSS, что иногда сводит на нет простоту применения
единых файлов стилей и значительно удлиняет время редактирования и
тестирования.
История создания и развития CSS
CSS — одна из широкого спектра технологий, одобренных консорциумом W3C
и получивших общее название «стандарты Web». В 1990-х годах стала ясна
необходимость стандартизировать Web, создать какие-то единые правила, по
которым программисты и веб-дизайнеры проектировали бы сайты. Так появились языки HTML 4.01 и XHTML и стандарт CSS. В начале 1990-х различные браузеры имели свои стили для отображения
веб страниц. HTML развивался очень быстро и был способен удовлетворить
все существовавшие на тот момент потребности по оформлению информации,
поэтому CSS не получил тогда широкого признания. Термин «каскадные таблицы стилей» был предложен Хокон Виум Ли в 1994 году. Совместно с Бертом Босом он стал развивать CSS. В отличие от многих существовавших на тот момент языков стиля, CSS
использует наследование от родителя к потомку, поэтому разработчик может
определить разные стили, основываясь на уже определенных ранее стилях. В середине 1990-х Концорциум Всемирной паутины (W3C) стал проявлять интерес к CSS, и в декабре 1996 года была издана рекомендация CSS1. Уровень 1 (CSS1)
Рекомендация W3C, принята 17 декабря1996 года, откорректирована 11 января1999 года. Среди возможностей, предоставляемых этой рекомендацией: - Параметры шрифтов. Возможности по заданию гарнитуры и размера шрифта, а также его стиля — обычного, курсивного или полужирного.
- Цвета. Спецификация позволяет определять цвета текста, фона, рамок и других элементов страницы.
- Атрибуты текста. Возможность задавать межсимвольный интервал,
расстояние между словами и высоту строки (то есть межстрочные отступы)
- Выравнивание для текста, изображений, таблиц и других элементов.
- Свойства блоков, такие как высота, ширина, внутренние (padding) и внешние (margin) отступы и рамки. Так же в спецификацию входили ограниченные средства по позиционированию элементов, такие как float и clear.
Уровень 2 (CSS2)
Рекомендация W3C, принята 12 мая1998 года. Основана на CSS1 с сохранением обратной совместимости за несколькими исключениями. Добавление к функциональности: - Блочная вёрстка. Появились относительное, абсолютное и фиксированное
позиционирование. Позволяет управлять размещением элементов по странице
без табличной вёрстки.
- Типы носителей. Позволяет устанавливать разные стили для разных носителей (например монитор, принтер, КПК).
- Звуковые таблицы стилей. Определяет голос, громкость и т. д. для звуковых носителей (например для слепых посетителей сайта).
- Страничные носители. Позволяет, например, установить разные стили для элементов на чётных и нечётных страницах при печати.
- Расширенный механизм селекторов.
- Указатели.
- Генерируемое содержимое. Позволяет добавлять содержимое, которого нет в исходном документе, до или после нужного элемента.
В настоящее время W3C больше не поддерживает CSS2 и рекомендует использовать CSS2.1 Уровень 2, ревизия 1 (CSS2.1)
Рекомендация W3C, принята 7 июня2011 года. CSS2.1 основана на CSS2. Кроме исправления ошибок, в новой ревизии
изменены некоторые части спецификации, а некоторые и вовсе удалены.
Удаленные части могут в будущем быть добавлены в CSS3. Уровень 3 (CSS3)
Разрабатываемая версия. Сильно расширена по сравнению с предыдущими версиями. Нововведения,
начиная с малых, вроде закругленных углов блоков, заканчивая
трансформацией (анимацией) и, возможно, введением переменных. Поддержка CSS браузерами Наиболее полно поддерживающими стандарт CSS являются браузеры, работающие на движкахGecko (Mozilla Firefox и др.), WebKit (Safari, Arora, Google Chrome) и Presto (Opera). Бывший когда-то самым распространённым браузером Internet Explorer 6 поддерживает CSS далеко не полностью. Вышедший
спустя 7 лет после своего предшественника Internet Explorer 7 хотя и
значительно улучшил уровень поддержки CSS, но всё ещё содержит
значительное количество ошибок. В Internet Explorer 8 используется новый движок, который полностью поддерживает CSS 2.1 и частично — CSS 3. Для проверки поддержки браузером веб-стандартов (в том числе и различных частей стандарта CSS) был разработан тест Acid. Его вторая версия называется Acid2, а третья, соответственно, Acid3. Различные блоковые модели
В стандартах CSS от Консорциума W3C используется модель, в которой свойство width определяет ширину содержимого блока, не включая в нее отступы и рамки. Ранние версии Internet Explorer (4 и 5), реализовали собственную модель, в которой width определяет расстояние между рамками блока, включая отступы (padding) и рамки (border). Кроме Internet Explorer 5 эту модель так же понимают браузеры Netscape 4 и Opera 7. Поддержка стандартной модели W3C появилась в IE только в шестой версии. В разрабатываемом стандарте CSS3 для решения этой проблемы введено свойство box-sizing, со значениями content-box для указания на использование стандартной модели W3C и border-box для использования модели IE 5. В браузере Mozilla, при поддержке этого свойства, под собственным «рабочим» названием -moz-box-sizing, ввели еще одно значение — padding-box, таким образом создав третью блочную модель, в которой width это размер содержимого и отступов блока, не включая рамки. CSS-фильтры Различия в реализации CSS различными браузерами заставляют
веб-разработчиков искать решения, как заставить все браузеры отображать
страницу одинаково. CSS-фильтры (также часто называемые CSS-хаками)
позволяют выборочно применять (или не применять) стили к различным
элементам. Например, известно, что Internet Explorer 6 применяет правила, использующие селекторы вида * html селектор (фильтр, известный как «star html bug»). Тогда, чтобы заставить и браузеры, использующие блоковую модель W3C и IE, работающего в Quirks mode со своей блоковой моделью, отображать блок #someblock шириной в 100 пикселей и внутренними отступами в 10 пикселей можно написать такой код: /* Модель W3C - 80px ширина содержимого и 10px отступы с каждой стороны */ #someblock { width: 80px; padding: 10px; } /* Следующее правило применит только IE6. */ * html #someblock { width: 100px; padding: 10px; }
Ещё одним способом выборочного применения правил для Internet Explorer являются условные комментарии.
Безопасность
Все поддерживаемые версии Internet Explorer, на конец 2010 года были
уязвимы: при обработке браузером каскадных таблиц стилей (CSS) может
возникнуть неинициализированная память, используемая затем для
удаленного запуска на компьютере пользователя вредоносного кода.
CSS Framework
CSS Framework (также Web design framework) — это заранее
подготовленная css-библиотека, созданная для упрощения работы
верстальщика, быстроты разработки и исключения максимально возможного
числа ошибок вёрстки (проблемы совместимости различных версий браузеров и
т. д.). Так же как и библиотеки скриптовых языков программирования,
CSS-фреймвёрки, обычно имеющие вид внешнего .css-файла, «подключаются» к
проекту (добавляются в заголовок веб-страницы), позволяя не искушенному
в тонкостях вёрстки программисту или дизайнеру правильно создать
xhtml-макет.
Расширения CSS
Часто при вёрстке страниц нужно использовать одно и то же значение
много раз: один и тот же цвет, один и тот же шрифт. И если это значение
нужно будет изменить, то придётся менять во многих местах. В стандартном
CSS нет возможностей наследования стилей, вычисляемых значений и прочих
зависимостей.
Для решения этих вопросов и ускорения разработки существует несколько
расширений языка CSS. Расширений в том смысле, что код CSS является
валидным кодом для расширения, но не наоборот. Чтобы из кода
"расширенного CSS" получился обычный CSS-файл, воспринимаемый браузером,
необходимо выполнить компиляцию. Компиляция может быть нескольких
типов:
- во время запуска страницы на стороне клиента (средствами JavaScript)
- во время запуска страницы на стороне сервера
- во время вёрстки сайта средствами специального компилятора
Примеры расширений CSS:
| |