peremennye

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

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

Объявление переменной

Переменная объявляется внутри селектора, который служит ее областью видимости. Если требуется создать глобальную переменную, объявлять ее необходимо внутри селектора * или :root.

*{
    --myСolor: #7EB436;
}

Объявление переменной выглядит как обычная CSS пара свойство:значение. Имя переменной начинается с двух дефисов.

Переменные в CSS регистрозависимы и не могут быть пустыми.

Использование переменной

Переменную можно подставить вместо обычного значения любого свойства с помощью ключевого слова var:

element{
  background-color: var(--myColor);
}

Значение переменной должно соответствовать тому свойству, которое она определяет. Так, переменная myColor, содержащая цвет, не может определять свойство width или border-radius. В этом случае будет сгенерирована ошибка и подставится дефолтное значение.

Используемая нами переменная может быть неопределена. Чтобы подстраховаться на этот случай, можно воспользоваться фолбэком, то есть указать другое значение «на всякий пожарный».

element{
  background-color: var(--myColor, green);
}

Теперь, если переменная myColor не будет найдена, задний фон элемента окрасится в зеленый.

Единицы измерения

Единицы измерения (например px) необходимо указывать в самой переменной, так как конкатенации в CSS нет.

/***правильный вариант***/
*{
  --mySize:100px;
}
element{
  width:var(--mySize);
  height:var(--mySize);
}

/***неправильный вариант***/
*{
  --mySize:100;
}
element{
  width:var(--mySize) + "px";
}

Переменные и медиазапросы

CSS-переменные невероятно удобны тем, что их можно переопределять в медиа-запросах. Выглядит это так:

element{
  --mySize: 200px;
  width: var(--mySize);
}

@media (max-width:700px){
  element{
    --mySize:100px;
  }
}

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

Анимация

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

0 комментариев

Оставить комментарий

*Доступные HTML-теги: a, abbr, blockquote, code, pre, del, i, em, strong, b, strike
*Не будет опубликован