JavaScript не потрібен?! Як стилізувати сторінку залежно від теми OS, для чого container query та як робити ефект скла на чистому CSS

💡 Усі статті, обговорення, новини про Front-end — в одному місці. Приєднуйтесь до Front-end спільноти!

Дай боже здоровʼя, спільното! Як у вас погода? А то ми з Христиною Гаранчук учора якраз верстали погодний віджет під час стриму на каналі «Сергій Бабіч та Дивовижний світ веброзробки».

Під час цієї невеличкої вправи з верстки ми використали декілька цікавих, однак маловідомих прийомів, які, хоч і досить давно доступні в усіх бравзерах, тим не менш не набули достатньої популярности серед розробників.

Почнемо з subgrid. Не думаю, що варто пояснювати, що таке grid, а от що таке попередній термін, має сенс трошки оглянути. Так от, значення subgrid для властивостей grid-template-rowsта grid-template-columnsдозволяє успадкувати сітку від батьківського елемента. Таким чином можна задати глобальну наскрізну структуру, наприклад, клясичну 12-колонкову, та дотримуватися її і всередині інших компонентів.

Також нарешті дійшли руки спробувати властивість color-scheme та колірну функцію light-dark(). Перше дозволяє контролювати, чи елемент має реагувати на зміну глобальної теми, чи то бравзера, чи то OS, а функція light-dark дозволяє задати пари кольорів, відповідних активній темі. Що примітно, цей функціонал залежить саме від системної теми.

Спробували ще container query. Якщо коротко, то медіа-запит, що залежить не від стану вʼюпорту, або, як ми звикли казати, вікна бравзера, а від розмірів батьківського елемента. Це дозволяє набагато гнучкіше керувати стилями, покладаючись на контекст відображення конкретного компоненту замість усього вікна.

А наприкінці побавилися з backdrop-filter, досягши ефекту напівпрозорого скла. А докинувши туди дрібку тіней та різноколірних бордерів, взагалі вдалося отримати ефект «світіння» нашого віджета.

Ну а побачити на власні очі, як всі ці можливості застосовуються на практиці, можна, переглянувши запис учорашнього етеру:

Також до 12:00 понеділка, себто 25 листопада, ви маєте нагоду узяти участь в розіграші книги Грокаємо алгоритми: Ілюстрований посібник для програмістів і допитливих. Умови дуже прості: в описі до відео є банка для донатів, а кожні 50 гривень, що ви туди покладете, будуть вашим додатковим квиточком у цій лотереї.

Дякую за увагу! Не забудьте підписатися на канал ;)

P.S. Напишіть в коментарях, які фічі HTML, CSS чи JS ви хотіли б побачити у наступних випусках.

👍ПодобаєтьсяСподобалось25
До обраногоВ обраному3
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А взагалі цікавий формат, особливо початківцям я б рекомендував дивитися і конспектувати.
Поки дивився, спала на думку ідея DLC до відео. Зробити той самий таск, але за допомогою AI. Можна буде порівняти запропоновані машиною рішення з думками м’ясних професіоналів, подивитись, що по часу виконання та кінцевий результат в плані якості. Або невеличкі аддони до віджету, які принесуть підтримку доступності, якусь файну анімацію і може мікроформати, щоб люди не забували про таке

цікава ідея, от би хто зробив таке ))))

Оце якби ви кодили десь в умовному codepen, чи після кодінгу шарили там результат, то можливо хтось би додав апгрейдів з поясненнями

ой, краще не треба таке )

JavaScript не потрібен, оце точно. Моя улюблена активність під час рев’ю когось — залетіти на проект і викинути 30% JS, замінивши на нативну html функціональність (dialogs, popovers, details etc) і переписати частину динамічного функціоналу на CSS. З зеленою підтримкою :has усіма браузерами не використання цієї фічі має прирівнюватися до кримінального правопорушення

Недавно робив слайдер без js, за допомогою властивостей scroll-snap-type: x mandatory; для контейнера та scroll-snap-align: center для елементів. Зручно коли на десктопі треба показать галерею на грідах наприклад, а на мобілці просто свайпалку картинок. Розмітка одна, трохи різних стилів, ніякого js)

О, та, scroll-snap прикольна штука.

Було цікаво переглянути ваше з Христиною бачення для вирішення. Нові-старі підходи у режимі live coding від Бабіча (або можна самостійно читати в нудній документації:), на власний розсуд). Розширили горизонти, так би мовити

в тому й ідея — провести весело час, а заодно навчити чогось глядачів )

завжди цікаво реалізація інтерактивних елементів без використання js, тільки html+css

підкажи, які саме хотів би побачити

Tabs, Tooltips, Popups(modals), Sticky headers/footers

Код писав давно, не судіть суворо
Accordion
Tabs
Modals
position: sticky

Колись прийшла в голову ідея сумістити таби і акордеон.
youtu.be/Ug4XSaVeUfs

Але навіщо магія з радіобатонами для аккордионів, якщо є нативний details? Те ж саме для модалок, є ж хтмл dialog

Нативний в таби не розгорнеш, та й з’явився він крепко пізніше

Ну, то дивлячись, які таби потрібні. При бажанні можна і в таби трансформувати

Оце в контесті вищосказаного рекомендую статтю про нативні штуки, там багато цікавих прикладів, які на диво працюють усюди, де треба

Треба побавитись з абсолютом, переконатись що це не баг, а так як треба ) Я розумію як воно працює, но чому — піддаю сумніву )

Підписатись на коментарі