Языки описания стилей в вебе

Языки описания стилей в вебе (примеры). Характеристика каскадных стилей, медиазапросов и единиц измерения (пикселы, проценты, em). Подключение каскадных стилей к веб-странице (примеры разных способов).

Языки описания стилей в вебе (примеры)

RRP

Язык стилей, который был предложен для реализации в браузере Mosaic.
Описанные стили предполагались как рекомендации для рендера страницы.
Все свойства описаны максимально короткими ключевыми словами, чтобы не перегружать медленную скорость сетевого соединения тех лет.

@BODY fo(fa=he,si=18)

Stylesheet Language

Язык таблиц стилей, реализованный в браузере ViolaWWW.
Стили описывались в виде иерархичной структуры.

Например, применение стилей к телу документа и вложенных в него заголовков первого уровня выглядело так:

(BODY 
	fontSize=normal
	BGColor=white
	FGColor=black  
	(H1
		fontSize=largest
		BGColor=red
		FGColor=white
	)
)

Также язык примечателен тем, что в нём появился способ ссылаться на внешние таблицы стилей:

<LINK REL="STYLE" HREF="URL_to_a_stylesheet">

FOSI

Для возможности стилизация языка SGML, была разработана спецификация языка FOSI.
Описание стилей реализовано слишком подробным, что делало данный язык неудобным в применении.
Язык примечателен появлением единицы измерения em.

<outspec>
	<docdesc>
		<charlist>
			<font size="12pt" bckcol="white" fontcol="black">
		</charlist>
	</docdesc>
	<e-i-c gi="h1"><font size="24pt" bckcol="red", fontcol="white"></e-i-c>
	<e-i-c gi="h2"><font size="20pt" bckcol="red", fgcol="white"></e-i-c>
	<e-i-c gi="a"><font fgcol="red"></e-i-c>
	<e-i-c gi="cmd kbd screen listing example"><font style="monoser"></e-i-c></outspec>

DSSSL и XSL

функциональные языки программирования, которые предлагались на замену языка FOSI.
Языки отличались огромной и сложной спецификацией.
Данные технологии не обеспечивали возможность рендеринга документа до полной загрузки документа, что было критически важно в ранние годы развития интернета.

(element H1
	(make paragraph
		font-size: 14pt
		font-weight: 'bold
	)
)

Таблица стилей

Для обеспечения возможности рендеринга документа до полной загрузки документа, была предложен язык таблиц стилей.
Имел сходство с объектно-ориентированными языками.
Данный язык должен был иметь возможность изменения поведения работы элементов (например, ссылок).

*LI.prebreak: 0.5
*LI.postbreak: 0.5
*OL.LI.label: 1
*OL*OL.LI.label: A

PSL

Язык описания стилей, похожий на CSS, но при этом имеющий условные операторы и возможность получение актуального размера элемента, с которым он рендерится в браузере.
Не был реализован из-за своей большой расширяемости.

LI {  
	if (ChildNum(Self) == round(NumChildren(Parent) / 2 + 1)) then
		VertPos: Top = Parent.Top;
		HorizPos: Left = LeftSib.Left + Self.Width;
	else
		VertPos: Top = LeftSib.Actual Bottom;
		HorizPos: Left = LeftSib.Left;
	endif
}

CHSS

Язык, в котором впервые была предложена идея каскадных таблиц стилей.
В языке присутствовала возможность указать степень влияния каждого стиля в процентах.
Присутствовали логические выражения и предполагалась возможность изменения стилей в зависимости от релевантности отображения на различных устройствах.

CSS

Язык описания стилей, использующийся в современных браузерах. Является упрощенной версией CHSS, что и привело его к популярности.

LessCSS, SCSS, SASS

PostCSS

Характеристика каскадных стилей, медиазапросов и единиц измерения (пикселы, проценты, em)

Характеристика каскадных стилей

Преимущество каскадных таблиц стилей заключается в возможности использования нескольких таблиц на одной странице: новые правила перезаписывают ранее встреченные.
Данная возможность открывает возможности к переиспользованию и внедрению специфичных для пользователя таблиц стилей.

CSS состоит из правил и директив.

Правило CSS содержит следующие части:
- селектор, имя HTML-элемента в начале набора правил
- объявление, состоящее из свойства и его значения
- свойство, название конкретной характеристики для изменения
- значение свойства, устанавливает один из возможных признаков свойству

p {
	--cutom-property: 500px; /* объявление собственных свойств (переменных) */
	color: red;
	width: var(--custom-property);
}

p {
	color: green; /* перезапишет объявление color: red */
}

Директивы направлены на управление общим поведением стилей. Имена директив начинаются с символа @. Правила и другие директивы могут быть вложены в директиву.

На данный момент CSS имеет развитые возможности для реализации адаптации пользовательского интерфейса сайта под различные устройства, некоторые из которых будут описаны дальше.

Характеристика медиа-запросов

Медиа-запросы - директивы, которые позволяют управлять стилями элементов в зависимости от значений технических параметров устройств.

При работе с медиа-запросами немаловажно упомянуть о HTML мета-теге viewport, который обеспечивает корректное отображение пользовательского интерфейса сайта на экранах устройств с высокой плотностью пикселей.

Объявление директивы начинается с ключевого слова @media, далее идут логические условия, после которых, в фигурных скобках, вкладываются правила и директивы.

@media screen and (min-width: 1440px) {
  /* стили будут применяться, когда условие истинно */
}

Логические условия объединяются при помощи логических операторов:
- and
- , (логическое ИЛИ)
- not

В логических условиях медиа-запросов могут указываться определённые типы устройств:
- all - для всех устройств
- print - режим предварительного просмотра печати страницы
- screen - для устройств с экранами
- speech - для программ чтения с экрана

Логические условия также могут содержать объявления для следующих характеристик:
- ширина
- высота
- ориентация устройства
- соотношение сторон viewport
- разрешение экрана

Характеристика единиц измерения (пикселы, проценты, em)

Пиксели (px)

Обычно пиксель соответствует одному пикселю на экране, но на экранах с высокой плотностью пикселей может применяться автоматическое масштабирование.

Главное достоинство пикселя - чёткость и понятность.

Недостаток заключается в том, что другие единицы измерения имеют возможность лучше подстраиваться под различные размеры при помощи соотношений

em

Размеры в em - относительные, они определяются по текущему контексту.

<div style="font-size:1.5em">
  Страусы
  <div style="font-size:1.5em">Живут также в Африке</div>
</div>

У вложенного блока шрифт будет в 1.5 раза больше родительского. Данный подход удобен тем, что достаточно изменить размер у родительского шрифта, остальные размеры будут изменены автоматически.

Проценты (%)

% является относительной единицей измерения. В отличие от em, размер свойства при помощи % не всегда вычисляется относительно родительского элемента.

Источники