Пару лет назад сделала очень красивую бургер-крестик анимацию и уже в 5 проектов в разных компаниях с тех пор её вставила.
Может и вам пригодится)
https://codepen.io/ariarzer/pen/MWOROBv
Может и вам пригодится)
https://codepen.io/ariarzer/pen/MWOROBv
codepen.io
closed\opened - burger\cross
...
Сегодня самое время вспомнить, что на 1 апреля 2012 года csswg опубликовали проект редизайна сайта w3c, включающий в себя:
- логотип с анимированым пламенем
- ярко-желтый цвет текста
- выравнивание текста на сайте по центру для поддержвания симметрии
- анимированные радужные сепараторы между разделами
...и многое другое)
https://www.w3.org/blog/CSS/2012/04/01/csswg-proposes-w3c-wide-spec-redesign/
- логотип с анимированым пламенем
- ярко-желтый цвет текста
- выравнивание текста на сайте по центру для поддержвания симметрии
- анимированные радужные сепараторы между разделами
...и многое другое)
https://www.w3.org/blog/CSS/2012/04/01/csswg-proposes-w3c-wide-spec-redesign/
CSS mind
О переводчиках и псевдо-элементах. Не стоит класть в свойство content важный текст. А лучше вообще никакой не класть. Помимо того, что он не озвучивается скрин-ридерами и в целом существует только для людей, которые могут его увидеть, он так же не может…
Вот на сайте W3C текст лежит в свойстве content и переводчик не переводит его на арабский.
(не спрашивайте зачем я перевожу спецификации на арабский)
(не спрашивайте зачем я перевожу спецификации на арабский)
Слайды моего доклада на CodeFest про режимы написания и их поддержку в интерфейсе.
https://presentations-inky.vercel.app/presentations/css-writing
https://presentations-inky.vercel.app/presentations/css-writing
Недавно сделала на работе красивую анимацию для иконки играющего трека, делюсь демкой - https://codepen.io/ariarzer/pen/XWQGaoG.
Там можно использовать принцип цикады в работе.
Делаете циклы анимаций длинами, равнимы двум простым числам (у меня 5 и 3), накладываете друг на друга, и получаете отрезок уникальных анимаций длиной в их произведение (у меня 15).
Там можно использовать принцип цикады в работе.
Делаете циклы анимаций длинами, равнимы двум простым числам (у меня 5 и 3), накладываете друг на друга, и получаете отрезок уникальных анимаций длиной в их произведение (у меня 15).
codepen.io
music play animation
...
This media is not supported in your browser
VIEW IN TELEGRAM
Изучала вчера якорное позиционирование, собрала такую демку.
https://codepen.io/ariarzer/pen/mdZodep
Как сделать без такой дикой вложеннсоти пока не придумала, но буду рада услышать ваши идеи.
Тем не менее, все равно впечатляет, какие вещи теперь можно делать на css.
https://codepen.io/ariarzer/pen/mdZodep
Как сделать без такой дикой вложеннсоти пока не придумала, но буду рада услышать ваши идеи.
Тем не менее, все равно впечатляет, какие вещи теперь можно делать на css.
This media is not supported in your browser
VIEW IN TELEGRAM
Оказывается это работает без вложенности без каких-либо трюков, оно просто работает.
Потому что у якорей нет области видимости - "the anchor names of its descendants are visible to elements elsewhere in the page."
Я даже не проверила, была уверена, что так нельзя. Оказывается можно.
Держите красивую демку - https://codepen.io/ariarzer/pen/wvLOwKd?
Потому что у якорей нет области видимости - "the anchor names of its descendants are visible to elements elsewhere in the page."
Я даже не проверила, была уверена, что так нельзя. Оказывается можно.
Держите красивую демку - https://codepen.io/ariarzer/pen/wvLOwKd?
В начале месяца вышел первый рабочий черновик спецификации CSS values and units 5, а в пятницу вечером в нем уже исправили первые опечатки и огрехи.
Напишу серию постов о том, что нового и полезного готовит нам csswg. Смотрите ниже по тегу #css_values_5.
Напишу серию постов о том, что нового и полезного готовит нам csswg. Смотрите ниже по тегу #css_values_5.
Запятые в аргументах функции
Аргументы в функциях сейчас разделяются запятыми. Это создает противоречие с тем, что аргумент может уже содержать запятую как часть себя. Появляется потребность в разделителе более высокого порядка. Им стала точка с запятой.
При парсинге списка аргументов фунцкции сначала все запятые будут считаться разделителями аргументов функции. Если будет встречена точка с запятой, то все предыдущие аргументы, написанные через запятую, превратяться в один большой аргумент. И для этой конкретной функции запятая больше не будет считаться разделителем высшего порядка.
Эти два примера эквивалентны:
А здесь три аргумента, один из которых состоит из списка двух значений через запятую:
P.S. Пост из серии про новый пятый уровень спецификации CSS values, остальные смотрите по тегу #css_values_5
Аргументы в функциях сейчас разделяются запятыми. Это создает противоречие с тем, что аргумент может уже содержать запятую как часть себя. Появляется потребность в разделителе более высокого порядка. Им стала точка с запятой.
При парсинге списка аргументов фунцкции сначала все запятые будут считаться разделителями аргументов функции. Если будет встречена точка с запятой, то все предыдущие аргументы, написанные через запятую, превратяться в один большой аргумент. И для этой конкретной функции запятая больше не будет считаться разделителем высшего порядка.
Эти два примера эквивалентны:
list-style: random-item(--x, disc, circle, square);
list-style: random-item(--x; disc; circle; square);
А здесь три аргумента, один из которых состоит из списка двух значений через запятую:
list-style: random-item(--x; disc, circle; square);
P.S. Пост из серии про новый пятый уровень спецификации CSS values, остальные смотрите по тегу #css_values_5
Функции интерполяции
Группа функций с постфиксом
Функция без префикса, просто
То есть, грубо говоря, где находится
Обратите внимания, что типы агрументов указаны как
Аналогично, функция
И такая же функция для интерполяции в контексте контейнера, где необязательный аргумент
P.S. Пост из серии про новый пятый уровень спецификации CSS values, остальные смотрите по тегу #css_values_5
Группа функций с постфиксом
*-progress()
, позволяющих посчитать положение значения на заданном промежутке между двумя другими в заданном контексте.Функция без префикса, просто
progress()
, принимает три значения и возвращает пропорцию (progress_value - start_value) / (end_value - start_value)
. То есть, грубо говоря, где находится
progress_value
на шкале между start_value
и end_value
./*
* @param {<calc-sum>} --progress_value
* @param {<calc-sum>} --start_value
* @param {<calc-sum>} --end_value
* @return {<number>}
*/
progress(var(--progress_value) from var(--start_value) to var(--end_value));
Обратите внимания, что типы агрументов указаны как
<calc-sum>
. Так же, как, например, у фукнций min(), max() и clamp(). Это значит, что можно писать вычисления внутри, не оборачивая их в calc().Аналогично, функция
media-progress()
возвращает число, представляющее собой текущее положение между двумя заданними значениями в контексте указанного медиа-запроса./*
* @param {<media-feature>} --media_feature
* @param {<calc-sum>} --start_value
* @param {<calc-sum>} --end_value
* @return {<number>}
*/
media-progress(var(--media_feature) from var(--start_value) to var(--end_value));
И такая же функция для интерполяции в контексте контейнера, где необязательный аргумент
<container-name>
позволяет допольнительно указать имя контейнера:
/*
* @param {<size-feature>} --size_feature
* @param {<calc-sum>} --start_value
* @param {<calc-sum>} --end_value
* @param {<container-name>} [optional] --container_name
* @return {<number>}
*/
container-progress(var(--size_feature) of <container-name> from var(--start_value) to var(--end_value));
P.S. Пост из серии про новый пятый уровень спецификации CSS values, остальные смотрите по тегу #css_values_5
Меня часто спрашивают почему я люблю читать спецификации, особенно черновики, а это иногда просто очень весело))
https://www.w3.org/TR/css-values-5/#interpolate-size
https://www.w3.org/TR/css-values-5/#interpolate-size
Вычисление с использованием собственных размеров.
Не смотря на наличие определение собственных размеров в словаре Веб-стандаров, здесь можно считать, что собственные размеры - это те, что не могут быть установлены без отрисовки документа. Например нельзя знать, какой размер текста, пока он не будет нарисован заданным шрифтом.
В таких случаях мы не можем использовать проценты и другие зависимые от контента значения в свойствах, связанных с размерами элемента.
Но функция
Она принимает два аргумента, базис и выражение, которое должно быть рассчитано на основе этого базиса. При этом внутри выражения разрешено ключевое слово size, значения которого будет равно базису. А в качетве базиса можно указать не только численные значения, но и
Например, так можно сделать блок равным половине максимально возможной ширины по контенту:
P.S. Пост из серии про новый пятый уровень спецификации CSS values, остальные смотрите по тегу #css_values_5
Не смотря на наличие определение собственных размеров в словаре Веб-стандаров, здесь можно считать, что собственные размеры - это те, что не могут быть установлены без отрисовки документа. Например нельзя знать, какой размер текста, пока он не будет нарисован заданным шрифтом.
В таких случаях мы не можем использовать проценты и другие зависимые от контента значения в свойствах, связанных с размерами элемента.
Но функция
calc-size()
можно позволить это делать некоторым образом.calc-size( <calc-size-basis>, <calc-sum> )
Она принимает два аргумента, базис и выражение, которое должно быть рассчитано на основе этого базиса. При этом внутри выражения разрешено ключевое слово size, значения которого будет равно базису. А в качетве базиса можно указать не только численные значения, но и
<intrinsic-size-keyword>
, то есть вещи типа auto
, min-content
, max-content
и тому подобное. Значение базиса будет рассчитано на основе контекста свойства, в котором используется выражение.Например, так можно сделать блок равным половине максимально возможной ширины по контенту:
width: calc-size(max-content, size / 2);
P.S. Пост из серии про новый пятый уровень спецификации CSS values, остальные смотрите по тегу #css_values_5
GitHub
dictionary/dictionary.md at main · web-standards-ru/dictionary
Словари по фронтенду. Contribute to web-standards-ru/dictionary development by creating an account on GitHub.
CSS mind
Вычисление с использованием собственных размеров. Не смотря на наличие определение собственных размеров в словаре Веб-стандаров, здесь можно считать, что собственные размеры - это те, что не могут быть установлены без отрисовки документа. Например нельзя…
Вообще самая приятная вещь относительно
А то, что размеры, рассчитанные внутри
Проще говоря, скоро у нас будет возможность анимировать что-нибудь в нулевого размера до размера
Подробности в заметке:
https://ru.ariarzer.dev/2024/notes/calc-size-2024/
calc-size()
это не то, что можно растягивать блок на половину максимального размера.А то, что размеры, рассчитанные внутри
calc-size()
, считаются определелямыми. Значит они могут быть конечной точкой анимации. Проще говоря, скоро у нас будет возможность анимировать что-нибудь в нулевого размера до размера
auto
.Подробности в заметке:
https://ru.ariarzer.dev/2024/notes/calc-size-2024/
ru.ariarzer.dev
Calc-size в 2024
Как анимировать значение до auto.
У меня сегодня первый рабочий день на новой работе, и я конечно же первым делом потащила в прод container queries.
Поэтому хочу показать вам красивую адаптивную сетку с сепараторами -
https://codepen.io/ariarzer/pen/dPbEKaq
P.S. комментарии по демкам всегда принимаются в личку, ссылка в закрепе.
P.P.S на самом деле сетка красивая, а вот код не очень, писать столько выражений для каждого случая - жесть. Но в жизни редко бывают такие мелкие сетки, поэтому можно немного пострадать, пока нам не завезут в каком-нибудь виде циклы.
Поэтому хочу показать вам красивую адаптивную сетку с сепараторами -
https://codepen.io/ariarzer/pen/dPbEKaq
P.S. комментарии по демкам всегда принимаются в личку, ссылка в закрепе.
P.P.S на самом деле сетка красивая, а вот код не очень, писать столько выражений для каждого случая - жесть. Но в жизни редко бывают такие мелкие сетки, поэтому можно немного пострадать, пока нам не завезут в каком-нибудь виде циклы.
codepen.io
responsive grid with separators
...
Нам наконец-то завезут в следующем хроме функцию
Источник: https://developer.chrome.com/blog/advanced-attr
Раньше с её помощью можно было получать значение атрибута только в виде строки.
Теперь можно будет указывать тип значения, и это очень важно, потому что преобразования типов в css нет как явления. И если у вас в атрибуте лежало число, использовать его для вычислений было невозможно. Пример тут.
P.S. Для преобразования типов был только известный хак от Анны Тюдор как привести число к строке через счетчик. Можно было использовать для отображения числовых переменных через свойство
attr()
в том виде, в котором ее планировали много лет назад!Источник: https://developer.chrome.com/blog/advanced-attr
Раньше с её помощью можно было получать значение атрибута только в виде строки.
Теперь можно будет указывать тип значения, и это очень важно, потому что преобразования типов в css нет как явления. И если у вас в атрибуте лежало число, использовать его для вычислений было невозможно. Пример тут.
P.S. Для преобразования типов был только известный хак от Анны Тюдор как привести число к строке через счетчик. Можно было использовать для отображения числовых переменных через свойство
content
- https://codepen.io/ariarzer/pen/mdvwzaqChrome for Developers
CSS attr() gets an upgrade | Blog | Chrome for Developers
You can now use attr() with any CSS property–including custom properties–and it can parse values into data types other than strings.
This media is not supported in your browser
VIEW IN TELEGRAM
Мне было сегодня лет, когда я узнала, что в css оказывается есть свойство resize.
https://codepen.io/ariarzer/pen/EaxmXKY
https://codepen.io/ariarzer/pen/EaxmXKY
CSS mind
У меня сегодня первый рабочий день на новой работе, и я конечно же первым делом потащила в прод container queries. Поэтому хочу показать вам красивую адаптивную сетку с сепараторами - https://codepen.io/ariarzer/pen/dPbEKaq P.S. комментарии по демкам всегда…
This media is not supported in your browser
VIEW IN TELEGRAM
Такие красивые видео с демок теперь можно записывать так просто!