Как добавить эффекты градиента и узоры к тексту
В этой статье мы покажем, как легко добавить эффекты градиента и узоры к тексту на веб-странице.
Переходы между документами и анимация при прокрутке позволяют добавить больше интерактивности в ваши приложения с помощью нескольких строк CSS. Теперь вы можете анимировать height: auto;, стилизовать полосы прокрутки и изменять размер текстовых полей в соответствии с их содержимым.
Многие функции стали
базовыми и доступными в этом году
благодаря эксклюзивным аккордеонам, всплывающим окнам
@property и
@starting-style — все они совместимы с основными браузерами.
Благодаря упорному труду разработчиков браузеров, авторов спецификаций и вкладу сообщества CSS в этом году совершил ещё один большой скачок вперёд.
field-sizingБез field-sizing для создания поля ввода с размером содержимого вам пришлось бы либо угадывать средний размер текстового поля, либо использовать JavaScript для подсчёта символов и увеличения высоты или ширины элемента по мере ввода текста пользователем. Теперь это можно сделать с помощью одной строки CSS.
textarea, select, input {
field-sizing: content;
}
В следующей демонстрации показано, как ведут себя входные данные без field-sizing и с field-sizing.
Это будет работать для любого шрифта, любого размера шрифта, любого языка и любого режима письма. То, что раньше требовало больших усилий, теперь будет требовать меньших усилий.
height: autoЧасто запрашиваемая функция CSS — это возможность анимировать до height: auto. Небольшая вариация этого запроса — переход к свойству ширины вместо высоты или переход к любому из других встроенных размеров, обозначаемых ключевыми словами min-content, max-content, и fit-content.
Начиная с Chrome 129 вы можете использовать свойство interpolate-size или функцию calc-size() для включения плавных переходов и анимации от длины к ключевым словам внутреннего размера и обратно.
interpolate-size. Самый простой способ включить это поведение — сделать так, чтобы вся страница была настроена на него, объявив interpolate-size: allow-keywords в :root.
/* Opt-in the whole page to animating to/from intrinsic sizing keywords */
:root {
interpolate-size: allow-keywords; /*
В большинстве случаев использования interpolate-size должно быть достаточно. Если вам нужен больший контроль над чем-то, например, для выполнения вычислений с полученным значением в пикселях или для перехода между двумя ключевыми словами для определения размера, используйте calc-size() вместо этого.
<details>Распространённым шаблоном пользовательского интерфейса в интернете является компонент «гармошка». Этот компонент состоит из нескольких раскрывающихся виджетов, которые можно по отдельности развернуть (или свернуть), чтобы показать (или скрыть) их содержимое.
Этот шаблон можно создать в Интернете с помощью нескольких <details> элементов. Обычно они группируются визуально, чтобы показать, что они относятся к одной категории.
Чтобы создать эксклюзивную раскладку, добавьте атрибут name к элементам <details>. При использовании этого атрибута несколько элементов <details>, имеющих одинаковое значение имени, образуют семантическую группу. При открытии одного из элементов <details>, входящих в группу, ранее открытый элемент автоматически закроется.
<details name="learn-css">
<summary>Welcome to Learn CSS!</summary>
<p>…</p>
</details>
<details name="learn-css">
<summary>Box Model</summary>
<p>…</p>
</details>
<details name="learn-css">
<summary>Selectors</summary>
<p>…</p>
</details>
<details>В Chrome 131 у вас появилось больше возможностей для оформления структуры элементов <details> и <summary>. Теперь вы можете использовать эти элементы при создании раскрывающихся или аккордеонных виджетов.
В частности, изменения, внесённые в Chrome 131, позволяют использовать свойство `display` для этих элементов и добавляют псевдоэлемент ::details-content для оформления расширяющейся и сворачивающейся части.
Например, чтобы создать горизонтальный аккордеон, примените к каждому элементу <details> гибкий макет, который будет располагаться в направлении строки.
details {
display: flex;
flex-direction: row;
}
Помимо использования большего количества типов отображения, содержимое элемента <details> автоматически оборачивается в псевдоэлемент ::details-content . Все дочерние элементы элемента <details> , кроме <summary> , помещаются в этот псевдоэлемент.
Вы можете использовать этот псевдоэлемент для управления частью раскрывающегося элемента, которая расширяется и сворачивается.
position-anchorПривязка — это новый декларативный способ позиционирования элементов относительно друг друга. Он идеально подходит для меню, подсказок, выборок, меток, карточек, диалоговых окон настроек и многого другого. Благодаря встроенному в браузер позиционированию по привязке вы можете создавать многоуровневые пользовательские интерфейсы, не полагаясь на сторонние библиотеки.
Для создания привязки требуются два элемента: привязка и позиционируемый элемент (элементы).
Якорь — это элемент, к которому ориентируются позиционируемые элементы. Превратите элемент в якорь с помощью одной строки CSS:
.anchor {
anchor-name: --over-easy;
}
Позиционируемые элементы — это элементы, которые позиционируются относительно якорного элемента. Они указывают на якорный элемент, относительно которого они должны быть позиционированы, с помощью position-anchor и второй строки CSS, чтобы указать сторону или область, в которой они должны быть расположены.
.positioned-element {
position: fixed;
position-anchor: --over-easy;
position-area: block-end;
}
В следующем примере милое яйцо является якорем, а текст «Слишком просто» — позиционируемым элементом.
Свойство position-area предлагает множество вариантов! В демонстрации используется логическое значение свойства block-end, но есть также center, button и множество других вариантов. Una создала графический интерфейс, который поможет вам визуализировать варианты:
::-webkit-scrollbarСтилизовать полосы прокрутки уже давно можно с помощью ::-webkit-scrollbar-* псевдоэлементов. Этот подход отлично работает в Chrome и Safari, но так и не был стандартизирован рабочей группой CSS.
В Chrome 121 доступны свойства scrollbar-width и scrollbar-color для настройки ширины и, соответственно, цвета полосы прокрутки.
.scroller {
scrollbar-color: hotpink blue;
scrollbar-width: 10%;
}
Эти свойства также поддерживаются Firefox и частично поддерживаются Safari.
В 2023 году Chrome стал первым браузером, в котором появились переходы между представлениями одного документа. Это интересное дополнение к веб-платформе, которое позволяет создавать плавные переходы между различными представлениями вашего сайта. В этом году Chrome продолжил развивать веб-платформу, добавив в Chrome 126 переходы между представлениями разных документов.
Переходы между представлениями в разных документах позволяют запускать переход между представлениями в двух отдельных документах. В результате вам больше не нужно перестраивать свой веб-сайт как одностраничное приложение, чтобы использовать переходы между представлениями. Все, что вам нужно, — это переход с одной страницы на другую, основной примитив, который делает веб-сайт «веб-сайтом».
Чтобы переход между двумя страницами был возможен, необходимо выполнить два условия: навигация должна быть одноуровневой, и обе страницы должны быть настроены на переход между страницами. Настройка выполняется с помощью следующего правила CSS:
@view-transition {
navigation: auto;
}
После включения, переходы между представлениями в разных документах используют те же строительные блоки, что и переходы между представлениями в одном документе: добавьте свойство view-transition-name к элементам, которые вы хотите отобразить, и анимация будет работать на основе CSS-анимации.
Помимо поддержки переходов между представлениями в разных документах, Chrome также добавил несколько дополнительных функций для более удобной работы с переходами между представлениями, например view-transition-class.
Анимация, управляемая прокруткой, является распространённым шаблоном UX в интернете. Анимация, управляемая прокруткой, связана с положением прокрутки в контейнере прокрутки. Это означает, что при прокрутке вверх или вниз связанная с ней анимация перемещается вперёд или назад в соответствии с реакцией.
В следующей демонстрации, если ваш браузер поддерживает CSS-анимацию при прокрутке, изображения будут разворачиваться по мере прокрутки. Смотреть ДЕМОНСТРАЦИЮ
Встроенные события привязки сделали ранее невидимые моменты во время прокрутки видимыми в нужный момент и всегда правильными. Они являются недостающим элементом головоломки, который делает привязку прокрутки полноценным решением.
Два новых события snap: scrollsnapchange и scrollsnapchanging.
scroller.addEventListener('scrollsnapchange', event=> {
console.log(event.snapTargetBlock);
console.log(event.snapTargetInline);
})
Событие scrollsnapchange срабатывает в тот же момент, что и scrollend, когда прокрутка останавливается и пользователь перестаёт взаимодействовать со скроллером.
scrollsnapchangingСобытие готово к запуску и вызывает обратный вызов в тот момент, когда у скроллера появляется новая цель привязки. Это полезно для мгновенной обратной связи по UX, предоставляя механизм немедленного визуального обновления в зависимости от взаимодействия пользователя.
scroller.addEventListener('scrollsnapchanging', event=> {
console.log(event.snapTargetBlock);
console.log(event.snapTargetInline);
})
Объединив эти события, вы сможете создать удобный интерфейс для выбора элементов с помощью жеста прокрутки. Следующая линейка отмеряет значения в четвертях дюйма и использует анимацию при прокрутке для выделения выбранного значения. Событие scrollsnapchanging используется для немедленного обновления значения в поле ввода, а событие scrollsnapchange используется для поддержки и подтверждения выбранного значения.
::backdropИсторически сложилось так, что ::backdrop псевдоэлемент ниоткуда не наследовался. Начиная с Chrome 122, этот ::backdrop псевдоэлемент был преобразован в элемент, зависящий от дерева, что означает, что он наследует все наследуемые свойства от своего родительского элемента.
Благодаря этому изменению можно переопределять значения пользовательских свойств для определённых элементов, и ::backdrop будет иметь к ним доступ. Например, ::backdrop связанный с открытым <dialog> элементом, теперь может получить доступ к пользовательским свойствам, доступным в этом <dialog>.
light-dark()Системные цвета в CSS могут реагировать на текущее используемое значение color-scheme . Например, если вы укажете color: CanvasText в правиле CSS, цвет соответствующих элементов будет светлым или тёмным в зависимости от значения color-scheme .
В следующем примере используйте раскрывающийся список для управления color-schemediv. Поскольку div оформлен в системных цветах, он поддерживает как светлые, так и тёмные стили.
Функция light-dark() предоставляет разработчикам такую же возможность. Эта функция принимает два аргумента, оба из которых должны быть <color>.
:root {
color-scheme: light dark;
--primary-color: light-dark(#333, #fafafa);
--primary-background: light-dark(#e4e4e4, #121212);
--highlight-color: light-dark(hotpink, lime);
}
При изменении значения color-scheme используется либо первое, либо второе значение light-dark() .
light или неизвестна, то возвращается вычисленное значение первого значения.dark, то возвращается вычисленное значение второго цвета.color-scheme значения@property2024 год ознаменовался тем, что @property наконец-то стал базовым, доступным с самого начала. Поддержка @property в разных браузерах — это очень важная веха, поскольку с помощью @property и его CSS.registerProperty аналога вы можете регистрировать пользовательские свойства определённого типа, управлять их наследованием и задавать им начальное значение.
@property --myColor {
syntax: '<color>';
inherits: false;
initial-value: hotpink;
}
Регистрируя пользовательское свойство определённого типа, браузер знает, как интерполировать его значения при использовании в переходах и анимациях.
При анимации пользовательского свойства ваш CSS становится более лаконичным и удобным для чтения, как показано в следующем фрагменте, в котором свойство --angle анимируется от 0deg до 360deg.
@property --angle {
syntax: '<angle>';
initial-value: 0deg;
inherits: false;
}
@keyframes adjust-angle {
to {
--angle: 360deg;
}
}
div {
--angle: 0deg;
animation: 10s adjust-angle linear infinite;
rotate: var(--angle);
}
Popover API предоставляет способы создания многоуровневых интерфейсов, таких как всплывающие подсказки, меню, обучающие интерфейсы и многое другое.
Чтобы создать всплывающее окно со значениями по умолчанию, вам понадобится button для запуска всплывающего окна и элемент, который будет всплывающим окном.
<button popovertarget="my-popover">Open Popover</button>
<div id="my-popover" popover>
<p><p>I am a popover with more information. Hit <kbd>esc</kbd> or click away to close me.<p></p>
</div>
Всплывающие окна имеют встроенную поддержку для продвижения верхнего слоя, функцию быстрого закрытия, управление фокусом по умолчанию и специальные возможности.
@starting-styleПравило @starting-style используется для определения стилей элемента до того, как он получит первое обновление стиля. При настройке этих целевых свойств для перехода с помощью CSS-переходов вы можете использовать эти начальные стили для создания эффектов входа.
В следующем примере вновь добавленные элементы <div> затухают от yellow до исходного цвета фона, который является прозрачным.
div {
transition: background-color 0.5s;
background-color: transparent;
@starting-style {
background-color: yellow;
}
}
Другой вариант использования - анимация диалоговых окон при открытии.
dialog[open] {
opacity: 1;
transform: scaleX(1);
@starting-style {
opacity: 0;
transform: scaleX(0);
}
}
Не забудьте установить transition-behavior на allow-discrete при анимации дискретно анимируемых свойств, таких как display.
paint-orderПри использовании text-stroke свойство paint-order может управлять порядком наложения или отображения заливки текста и обводки. Это может быть полезно, если вы хотите, чтобы обводка отображалась поверх заливки.
Порядок рисования по умолчанию такой: fill, stroke, затем markers.
На следующем видео показано, что результат обводки текста нежелателен, если текст сначала заливается белым цветом, а затем обводится чёрным. Если сначала обвести текст, а затем залить его, результат будет намного лучше!
CSS-код для управления этим — одна строка. Задайте paint-order для рисования обводки перед заливкой, указав эти ключевые слова в указанном порядке.
h1 {
paint-order: stroke fill;
color: white;
-webkit-text-stroke: 5px black;
}
Попробуйте сами в этом CodePen:
Некоторые люди говорят, что возможность управлять paint-order наконец-то сделала text-stroke пригодным для использования в производстве. Что вы об этом думаете?
Чтобы исправить некоторые странные ошибки, связанные с вложенностью CSS, в спецификацию вложенности CSS был добавлен интерфейс CSSNestedDeclarations. С его помощью объявления, которые следуют за правилами стиля, больше не сдвигаются вверх.
Это означает, что следующий фрагмент CSS-кода придаёт элементу .foo цвет фона green вместо red цвета, который был бы без CSSNestedDeclarations.
.foo {
width: fit-content;
@media screen {
background-color: red;
}
background-color: green;
}
С помощью CSSNestedDeclarations правило CSS преобразуется в следующее, сохраняя объявление background-color: green в исходном положении:
↳ CSSStyleRule
.type = STYLE_RULE
.selectorText = ".foo"
.resolvedSelectorText = ".foo"
.specificity = (0,1,0)
.style (CSSStyleDeclaration, 1) =
- width: fit-content
.cssRules (CSSRuleList, 2) =
↳ CSSMediaRule
.type = MEDIA_RULE
.cssRules (CSSRuleList, 1) =
↳ CSSNestedDeclarations
.style (CSSStyleDeclaration, 1) =
- background-color: red
↳ CSSNestedDeclarations
.style (CSSStyleDeclaration, 1) =
- background-color: green
Это дополнение появилось в Chrome 130 и дополняет более ранние изменения, которые упростили разбор вложенных стилей.
Информация, использованная в статье, взята с сайта команды разработчиков Chrome DevRel.
Более подробно о новых возможностях в CSS читайте в источнике.
Другие статьи по теме:
В этой статье мы покажем, как легко добавить эффекты градиента и узоры к тексту на веб-странице.
Интересные эффекты для границ блоков контента с анимацией, которые вам могут пригодиться при оформлении страниц сайта.
Полное руководство, в котором описаны все возможные способы выбора элементов в CSS и их применения для стилизации.
Подборка различных проектов с открытым кодом на CSS и HTML, от бордеров до слайдера, которые могут вам пригодиться при создании веб сайта.
Такие указатели чаще всего применяют на первом экране Главной страницы сайта, когда на ней размещена полноэкранная картинка, видео или слайдер. Чтобы показать Пользователю, что основной контент расположен ниже, в нижней части экрана размещают стрелку, направленную вниз. Чтобы привлечь к ней дополнительное внимание, её делаю анимационный...