Переменные в CSS

Alexey Khlebaev

Переменные в CSS

Куда катится CSS?

CSS progress

Куда катится CSS?

CSS progress
Custom Properties
@apply

Custom Properties

Custom Properties (CSS переменные)

Custom Properties (CSS переменные)

Какие проблемы решают:

Custom Properties

			:root {
			  --main-bg-color: brown;
			}
			 
			body {
  				background-color: var(--main-bg-color);
			}
		
  			background-color: var(--main-bg-color, #000);
		

Custom Properties. Js

Получаем:

			var documentProperties = getComputedStyle(document.documentElement);
			var value = documentProperties.getPropertyValue('--primary-color');
		

Назначаем

			element.style.setProperty('--variable', 'value');
		

Удаляем

			element.style.removeProperty('--variable');
		

Custom Properties. Первые впечатления

Все круто, но

Синтаксис

Почему такой синтаксис?

Отличия от переменных в препроцессорах

Отличия от переменных в препроцессорах

@media

@media запросы
Stylus

			gutter = 5px;
			@media (min-width: 100px) {
			  gutter = 20px;
			}
			.Container {
			  padding: gutter;
			}
		
			.Container {
  			 padding: 5px;
			}
		

@media запросы
CSS переменные

			:root {
			  --gutter: 5px;
			}
			@media (min-width: 100px) {
			  --gutter: 20px;
			}
			.Container {
			   padding: var(--gutter);
			}
		

@media запросы

Каскад

Каскад
Stylus

		<div class="sideBar">
			<div class="title">Sidebar title</div>
		 </div>
		 <div class="content">
		 	<div class="title">Original title</div>
		 </div>

		
			titleColor = red;
			.title {
			  color: titleColor
			}
			.sideBar {
			  titleColor = blue
			}
		
			.title {
  			color: red;
			}
		

Каскад
CSS переменные

			:root {
			  --titleColor: red;
			}
			.title {
			  color: var(--titleColor);
			}
			.sideBar {
			  --titleColor: blue;
			}
		

Поддержка

Custom Properties

Custom Properties

Примеры использования

Яндекс. Главная страница поиска

Для чего используются CSS переменные?

Custom Properties

Интересные решения:

Рекомендации

@apply

@apply

			:root {
				--pink-theme: {
					color: #6A8759;
					background-color: #F64778;
    			}
     		}
			body {
  				@apply --pink-theme;
			}
		

Выводы

Выводы:

Ссылки

  1. What is the difference between CSS variables and preprocessor variables?
  2. Переменные в CSS: зачем они нам?
  3. Пользовательские свойства как основа архитектуры CSS - Павел Ловцевич
  4. CSS custom properties (native variables) In-Depth
  5. CSS @apply Rule
  6. CSS @apply rule (native CSS mixins)

Спасибо!

Fork me on GitHub