TGViewer
<divelopers> <divelopers> @alexnozer_dev · 1.18K subscribers
Post #296 845
Custom ident и dashed ident

В CSS есть два типа значений: <custom-ident> и <dashed-ident>. Оба типа позволяют создавать произвольные идентификаторы для некоторых сущностей. В отличие от строкового типа, для идентификаторов не требуются кавычки.

<custom-ident> используется для именования счётчиков, ключевых кадров, линий и областей сетки. Это значения list, bounce, logo, nav и search в следующем примере:

ul {
counter-reset: list;
}

li {
counter-increment: list;
}

li::before {
content: counter(list);
}

@keyframes bounce {
/* ... */
}

.bounce {
animation-name: bounce;
/* ... */
}

.header {
grid-template-area: 'logo nav search' ;
}

.header__logo {
grid-area: logo;
}

.header__nav {
grid-area: nav;
}

.header__search {
grid-area: search;
}


Тип <dashed-ident> будет знаком по синтаксису пользовательских свойств. Это такой же произвольный идентификатор, но который должен начинаться с двух дефисов --. Не всем нравятся эти лишние символы, но на то есть ряд исторических причин.

Многие новые возможности CSS используют тип <dashed-ident> для именования. Среди них view-transition-name, anchor-name, anchor-target, view-timeline-name, scroll-timeline-name, функции и миксины.

Кевин Пауэлл в видеокасте рассуждает о статье Ромы Комарова об именовании сущностей. Как не запутаться, где нужно использовать <custom-ident>, а где <dashed-ident>? Рома предлагает решение.

Дело в том, что <custom-ident> может содержать в начале два тире, потому что тире — это обычный символ, который разрешён в идентификаторах. Поэтому все пользовательские идентификаторы можно начинать с --.

Тогда не имеет значения, это <custom-ident> или <dashed-ident>, синтаксис будет одинаковый, а запоминать разницу не придётся. Хотя такой подход странновато выглядит в именованных областях и линиях сетки, он имеет право на жизнь.

ul {
  counter-reset: --list;
}

li {
  counter-increment: --list;
}

li::before {
  content: counter(--list);
}

@keyframes --bounce {
  /* ... */
}

.bounce {
  animation-name: --bounce;
  /* ... */
}

.header {
  grid-template-area:
'--logo --nav --search'
;
}

.header__logo {
  grid-area: --logo;
}

.header__nav {
  grid-area: --nav;
}

.header__search {
  grid-area: --search;
}

#css
  • 🔥 4
  • 🤔 3
  • 👾 2
  • ❤ 1
More from @alexnozer_dev
  1. Sep 23, 2026Images Preview На некоторых сайтах, где надо показывать изображения в высоком качестве, дл…
  2. Sep 21, 2026Реализация пользовательских атрибутов Под конец прошлого года я рассказывал об API пользов…
  3. Sep 14, 2026Подклассы Event вместо CustomEvent Многие библиотеки предоставляют систему событий в качес…
  4. Sep 11, 2026Эволюция стилей в темах Shopify Адам Ватан на днях поделился новостью, что Shopify выкупил…
  5. Sep 9, 2026Persistent Widgets Многие сайты не должны быть SPA. Но иногда эта архитектура продиктована…
  6. Sep 7, 2026Processing Instructions и маркеры В DOM всё представлено в виде узлов (Node) разных типов.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →