Vue-FAQ
925 subscribers
562 photos
90 videos
557 links
Канал сайта https://vue-faq.org
Информация о Vue.js, фронтенд разработке и не только

Contacts: @RuslanMakarov
Download Telegram
Псевдокласс CSS :empty свидетельствует, что в элементе пусто.

Полезен при необходимости, например, обнулять padding и margin пустого элемента, либо делать что-то еще

#css #tip
Ответ к вопросу в прошлом посте

Реализация 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
Хорошая статья про CSS тени

box-shadow, drop-shadow, text-shadow, neumorphic shadows и лучшие практики работы с ними

#css
This media is not supported in your browser
VIEW IN TELEGRAM
Дожили

В Chrome 135 появилась возможность стилизовать нативный <select>

Теперь сайт Аэроэкспреса пофиксят...

#chrome #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
Контейнерные запросы (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
В последних версиях Vite активно доделывают поддержку lightningcss

Сейчас для процессинга CSS используется ESBuild, но с переходом на Rolldown нужно что-то другое.
Экспериментально lightningcss был в Vite с 4 версии.

#vite #css
This media is not supported in your browser
VIEW IN TELEGRAM
:hover > :not(:hover)

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
Самые значимые обновления CSS в 2024 года:

- Анимация height : auto + calc-size
- @starting-style: решает проблему, когда добавление элементов в DOM ломает анимацию
- Scroll-driven animations: эта функция добавляет в CSS анимации, запускаемые скроллом.
- Popover API: Позволяет создавать всплывающие подсказки и окна на чистом CSS
- Document view transitions: позволяет анимировать переходы между HTML-документами.

#css
В крайнем Chrome (137) появился if для CSS

div {
color: var(--color);
background-color: if(style(--color: white): black; else: white);
}

.dark { --color: black; }
.light { --color: white; }


#chrome #css