📍 О том, как всё устроено в веб-платформе и что происходит в индустрии фронтенда
⭐️ Новости, полезные выжимки, находки и напоминания
👨💻 Вопросы и предложения @web_platform_support
🔗 juwain.github.io/web-platform
Post #30
653
var(--) валидно?
#CSS #Лаборатория_веб_платформы
Представьте себе CSS-код:
Как вы думаете, сработает ли такой код в браузерах, и валидно ли имя кастомного свойства
Ответ: да, в июне 2021 код работает в Chrome, Firefox и Safari. Но имя переменной
Текущий черновик спеки о кастомных свойствах зарезервировал кастомное свойство
Объясню идею авторов спеки.
В CSS есть наследование: значения некоторых свойств (например,
Если эффект наследования нежелателен, его можно отменить ключевым словом
Если же хочется отменить все наследуемые свойства, но при этом не хочется их все перечислять, есть свойство
У свойства
Так вот идея авторов спеки — сделать свойство с именем
Несмотря на то, что это пока черновик спеки, решение было уже обсуждено рабочей группой, то есть скорее всего будет зафиксировано и в будущей рекомендации.
А пока что не используйте
Баг уже починен в Firefox Nightly, а в Chrome багрепорт пока только заведён.
#CSS #Лаборатория_веб_платформы
Представьте себе CSS-код:
--: honeydew;
background-color: var(--);
}
Как вы думаете, сработает ли такой код в браузерах, и валидно ли имя кастомного свойства
--?Ответ: да, в июне 2021 код работает в Chrome, Firefox и Safari. Но имя переменной
-- формально невалидно.Текущий черновик спеки о кастомных свойствах зарезервировал кастомное свойство
-- для будущего использования в CSS.Объясню идею авторов спеки.
В CSS есть наследование: значения некоторых свойств (например,
color или font-size), а также кастомных свойств передаются от родителя к детям:
color: rgb(51, 51, 51);
--gap-size: 10px;
}
p {
/* color тоже будет rgb(51, 51, 51) */
padding: var(--gap-size); /* 10px */
}
Если эффект наследования нежелателен, его можно отменить ключевым словом
initial:
color: rgb(51, 51, 51);
--gap-size: 10px;
}
p {
color: initial; /* значение rgb(0, 0, 0) */
--gap-size: initial; /* значение «пустое» */
}
Если же хочется отменить все наследуемые свойства, но при этом не хочется их все перечислять, есть свойство
all, которое обращается сразу ко всем возможным CSS-свойствам сразу:
color: rgb(51, 51, 51);
font-size: 20px;
}
p {
all: initial;
/*
color: initial, то есть rgb(0, 0, 0)
font-size: initial, то есть 16px
*/
}
У свойства
all есть пара исключений: одно из них — оно не затрагивает кастомные свойства, для сброса их придётся перечислять все до единого:
--prop-1: 123;
--prop-2: red;
--prop-3: 10px;
}
p {
--prop-1: initial;
--prop-2: initial;
--prop-3: initial;
}
Так вот идея авторов спеки — сделать свойство с именем
-- аналогом all только для кастомных свойств. Чтобы можно было написать:
--prop-1: 123;
--prop-2: red;
--prop-3: 10px;
}
p {
--: initial;
/*
--prop-1: initial, то есть значение «пустое»
--prop-2: initial, то есть значение «пустое»
--prop-3: initial, то есть значение «пустое»
*/
}
Несмотря на то, что это пока черновик спеки, решение было уже обсуждено рабочей группой, то есть скорее всего будет зафиксировано и в будущей рекомендации.
А пока что не используйте
var(--), если вдруг эта мысль вам приходила в голову, так как оно вероятно перестанет работать.Баг уже починен в Firefox Nightly, а в Chrome багрепорт пока только заведён.
- ❤ 1
