JavaScript не потрібен?! Як стилізувати сторінку залежно від теми OS, для чого container query та як робити ефект скла на чистому CSS
Дай боже здоровʼя, спільното! Як у вас погода? А то ми з Христиною Гаранчук учора якраз верстали погодний віджет під час стриму на каналі «Сергій Бабіч та Дивовижний світ веброзробки».
Під час цієї невеличкої вправи з верстки ми використали декілька цікавих, однак маловідомих прийомів, які, хоч і досить давно доступні в усіх бравзерах, тим не менш не набули достатньої популярности серед розробників.
Почнемо з subgrid. Не думаю, що варто пояснювати, що таке grid, а от що таке попередній термін, має сенс трошки оглянути. Так от, значення subgrid для властивостей grid-template-rowsта grid-template-columnsдозволяє успадкувати сітку від батьківського елемента. Таким чином можна задати глобальну наскрізну структуру, наприклад, клясичну
Також нарешті дійшли руки спробувати властивість color-scheme та колірну функцію light-dark(). Перше дозволяє контролювати, чи елемент має реагувати на зміну глобальної теми, чи то бравзера, чи то OS, а функція light-dark дозволяє задати пари кольорів, відповідних активній темі. Що примітно, цей функціонал залежить саме від системної теми.
Спробували ще container query. Якщо коротко, то медіа-запит, що залежить не від стану вʼюпорту, або, як ми звикли казати, вікна бравзера, а від розмірів батьківського елемента. Це дозволяє набагато гнучкіше керувати стилями, покладаючись на контекст відображення конкретного компоненту замість усього вікна.
А наприкінці побавилися з backdrop-filter, досягши ефекту напівпрозорого скла. А докинувши туди дрібку тіней та різноколірних бордерів, взагалі вдалося отримати ефект «світіння» нашого віджета.
Ну а побачити на власні очі, як всі ці можливості застосовуються на практиці, можна, переглянувши запис учорашнього етеру:
Також до 12:00 понеділка, себто 25 листопада, ви маєте нагоду узяти участь в розіграші книги Грокаємо алгоритми: Ілюстрований посібник для програмістів і допитливих. Умови дуже прості: в описі до відео є банка для донатів, а кожні 50 гривень, що ви туди покладете, будуть вашим додатковим квиточком у цій лотереї.
Дякую за увагу! Не забудьте підписатися на канал ;)
P.S. Напишіть в коментарях, які фічі HTML, CSS чи JS ви хотіли б побачити у наступних випусках.
21 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарівА взагалі цікавий формат, особливо початківцям я б рекомендував дивитися і конспектувати.
Поки дивився, спала на думку ідея 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
Колись прийшла в голову ідея сумістити таби і акордеон.
Але навіщо магія з радіобатонами для аккордионів, якщо є нативний details? Те ж саме для модалок, є ж хтмл dialog
Нативний в таби не розгорнеш, та й з’явився він крепко пізніше
Ну, то дивлячись, які таби потрібні. При бажанні можна і в таби трансформувати
Ого як інтересно
Оце в контесті вищосказаного рекомендую статтю про нативні штуки, там багато цікавих прикладів, які на диво працюють усюди, де треба
Треба побавитись з абсолютом, переконатись що це не баг, а так як треба ) Я розумію як воно працює, но чому — піддаю сумніву )