Ответ к вопросу в прошлом посте
Реализация
1. Находим абсолютные координаты target element.
2. Создаем прозрачный модальный элемент с такими же абсолютными координатными.
3. Ставим ему...
Это первая половина гениальности. Вторая состоит в том, что теперь анимация перехода подсветки это тоже одна
Ну и копирование исходного
В итоге весь визуал туринга занимает меньше 20 строк по сути, и можно сосредоточиться на логике.
На таких велосипедах я готов всю жизнь кататься. А антивелосипедисты могут использовать
#tour #css
Реализация
tour:1. Находим абсолютные координаты target element.
2. Создаем прозрачный модальный элемент с такими же абсолютными координатными.
3. Ставим ему...
boxShadow: 0 0 0 9999px rgba(0, 0, 0, 0.7)Это первая половина гениальности. Вторая состоит в том, что теперь анимация перехода подсветки это тоже одна
CSS строка: transition.Ну и копирование исходного
border-radius даст в большинстве случаев ту же самую форму.В итоге весь визуал туринга занимает меньше 20 строк по сути, и можно сосредоточиться на логике.
На таких велосипедах я готов всю жизнь кататься. А антивелосипедисты могут использовать
VueUse, svg маски и прочие достижения контемпорари фронтенда.#tour #css
🤡15🔥6👍5💊3
This media is not supported in your browser
VIEW IN TELEGRAM
Дожили
В
Теперь сайт Аэроэкспреса пофиксят...
#chrome #css
В
Chrome 135 появилась возможность стилизовать нативный <select>Теперь сайт Аэроэкспреса пофиксят...
#chrome #css
🤯9👍4💩1
В
Однако полной замены
Но для ванильных случаев это полезное нововведение
#css
CSS есть @scope функция, ограничивающая область применения стилей:<template>
<div class="box">
<button class="button">Click me</button>
</div>
</template>
<style>
@scope (.box) {
.button {
color: red;
}
}
</style>
Однако полной замены
Vue scoped она не может дать. Например, потому, что если компонент выше вывести списком, то во Vue у каждого будет свой data атрибут и своя область видимости стилей, а у @scope всё смешаетсяНо для ванильных случаев это полезное нововведение
#css
👍5
Контейнерные запросы (
Что такое Scroll States?
Пример:
Где это можно использовать?
- Индикация прокрутки — визуально показывать, что есть ещё контент ниже
- "Липкие" заголовки — автоматически делать заголовки
- Изменение навигации — например, показывать кнопку "Наверх" при прокрутке
- Оптимизация интерфейса — скрывать второстепенные элементы при прокрутке
Документация
#chrome #css
Container Queries) — это инструмент в CSS, который позволяет стилизовать элементы на основе размеров их родительского контейнера, а не всего окна браузера. В Chrome 133 появилась новая фича — scroll states для контейнерных запросов, которая добавляет ещё больше контроля над поведением элементов.Что такое Scroll States?
scrollable, stuck и snapped - это новые условия свойства scroll-state, которые можно использовать внутри @container, чтобы применять стили в зависимости от состояния прокрутки контейнера:Пример:
.stuck-top {
container-type: scroll-state;
position: sticky;
top: 0px;
> nav {
@container scroll-state(stuck: top) {
background: _Highlight;
color: _HighlightText;
}
}
}Где это можно использовать?
- Индикация прокрутки — визуально показывать, что есть ещё контент ниже
- "Липкие" заголовки — автоматически делать заголовки
sticky при прокрутке- Изменение навигации — например, показывать кнопку "Наверх" при прокрутке
- Оптимизация интерфейса — скрывать второстепенные элементы при прокрутке
Документация
#chrome #css
❤🔥4🔥2💩2
В последних версиях
Сейчас для процессинга
Экспериментально lightningcss был в
#vite #css
Vite активно доделывают поддержку lightningcssСейчас для процессинга
CSS используется ESBuild, но с переходом на Rolldown нужно что-то другое. Экспериментально lightningcss был в
Vite с 4 версии.#vite #css
👍2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
:hover > :not(:hover)
#css #tip
hover обычно используется, чтобы выделить какой-то элемент. Но иногда красивей что-то сделать с остальнымиul {
@media (hover) and (prefers-reduced-motion: no-preference) {
& > li {
transform-origin: left center;
transition: transform 1s var(--ease-spring-3), opacity 0.3s var(--ease-3);
}
&:hover > li:not(:hover) {
opacity: 0.25;
transform: scale(0.8);
}
}
}#css #tip
👍21
Самые значимые обновления
- Анимация
-
-
-
-
#css
CSS в 2024 года:- Анимация
height : auto + calc-size-
@starting-style: решает проблему, когда добавление элементов в DOM ломает анимацию-
Scroll-driven animations: эта функция добавляет в CSS анимации, запускаемые скроллом.-
Popover API: Позволяет создавать всплывающие подсказки и окна на чистом CSS-
Document view transitions: позволяет анимировать переходы между HTML-документами.#css
👍20
CSS продолжает развиваться в сторону языка программированияНачиная с
Chrome 140 и Safari 18.2 стала возможна арифметика с разными единицами размерностиИсточник
.container {
position: relative;
i {
--angle: calc(sibling-index() * 10deg);
--distance: calc(var(--angle) / 360deg * 180px);
position: absolute;
inset: -0.5em;
background-color: #fff;
border-radius: 50%;
transform: rotate(var(--angle)) translateX(var(--distance));
}
}<div class="container">
<i></i>
...
<i></i>
</div>
#css
🔥8👎7🥱1
В
#css
media queries нельзя использовать CSS свойства, но есть обходные пути через container queries@property --inline-size-s {
syntax: "<length-percentage>";
inherits: true;
initial-value: 100vi;
}
:root {
--breakpoint-s: 48em;
--inline-size-s: min(var(--breakpoint-s), 100vi);
}
body {
background-color: var(--bg-color);
--bg-color: oklch(0.94 0.01 99);
@container style(--inline-size-s: var(--breakpoint-s)) {
--bg-color: oklch(0.87 0.21 95.82);
}
}#css
codepen.io
A workaround for using custom properties in media queries (Demo 2)
...
👍4