Привіт усім чудовим розробникам! У цій публікації ми збираємося дослідити використання :has()
у вашому наступному веб-проекті. :has()
є відносно новим, але набув популярності серед інтерфейсної спільноти, надаючи контроль над різними елементами вашого інтерфейсу. Давайте подивимося, що таке псевдоклас і як ми можемо його використовувати.
синтаксис
Команда :has()
Псевдоклас CSS допомагає стилізувати елемент, якщо будь-які речі, які ми шукаємо в ньому, знайдені та враховані. Це як сказати, «Якщо всередині цієї коробки є щось конкретне, тоді стилізуйте коробку таким чином І тільки таким чином».
:has(<direct-selector>) {
/* ... */
}
Проблема стилю
У минулі роки у нас не було способу стилізації батьківського елемента на основі прямого дочірнього елемента цього батька за допомогою CSS або елемента на основі іншого елемента. Якби нам довелося це зробити, нам знадобилося б використовувати JavaScript і вмикати/виключати класи на основі структури HTML. :has()
вирішив цю проблему.
Припустімо, у вас є елемент заголовка рівня 1 (h1
), це заголовок публікації або щось подібне на сторінці списку блогів, а потім у вас є заголовок рівня 2 (h2
), що йде безпосередньо за ним. Цей h2 може бути підзаголовком для публікації. Якщо що h2
присутній, важливий і безпосередньо після h1
, ви можете виділити цей h1. Раніше вам довелося написати функцію JS.
Стара школа – JavaScript
const h1Elements = document.querySelectorAll('h1');
h1Elements.forEach((h1) => {
const h2Sibling = h1.nextElementSibling;
if (h2Sibling && h2Sibling.tagName.toLowerCase() === 'h2') {
h1.classList.add('highlight-content');
}
});
Ця функція JS шукає всі h1, які мають a h2
продовжуючи його та застосовуючи клас підсвічування вмісту, щоб зробити h1
виділятися як важлива стаття.
Новий і покращений завдяки сучасному CSS, що з’являється в гарячому вигляді! Можливості того, що ми можемо робити в браузері, пройшли довгий шлях. Тепер ми можемо використовувати переваги CSS, щоб робити те, що ми традиційно мали б робити з JavaScript, не все, але деякі речі.
New School Way – CSS
h1:has(+ h2) {
color: blue;
}
Додайте трохи :has() на нього!
Тепер ви можете використовувати :has()
щоб досягти того ж, що й функція JS. Цей CSS перевіряє будь-який h1 і використовує однорідний комбінатор перевіряючи h2, який слідує безпосередньо за ним, і додає синій колір до тексту. Нижче наведено кілька випадків використання коли :has()
може стати в нагоді.
: має селектор Приклад 1
HTML
<h1>Lorem, ipsum dolor.</h1>
<h2>Lorem ipsum dolor sit amet.</h2>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
<h1>Lorem, ipsum dolor.</h1>
<h2>Lorem ipsum dolor sit amet.</h2>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
<h1>This is a test</h1>
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eius, odio voluptatibus est vero iste ad?</p>
CSS
h1:has(+ h2) {
color: blue;
}
: має селектор Приклад 2
Багато разів ми, працівники Інтернету, маніпулюємо або працюємо з зображеннями. Ми могли б використовувати такі інструменти Хмарний надає можливість використовувати різні трансформації наших зображень, але зазвичай ми хочемо додати тіні, радіуси рамки та підписи (не плутати з альтернативним текстом в атрибуті alt).
Наведений нижче приклад використовує :has()
щоб побачити, чи фігура або зображення має елемент figcaption, і якщо він має, він застосовує деякий фон і радіус межі, щоб виділити зображення.
HTML
<section>
<figure>
<img src="https://placedog.net/500/280" alt="My aunt sally's dog is a golden retreiver." />
<figcaption>My Aunt Sally's Doggo</figcaption>
</figure>
</section>
CSS
figure:has(figcaption) {
background: #c3baba;
padding: 0.6rem;
max-width: 50%;
border-radius: 5px;
}
:has()
що?
Можу я Ви можете побачити це :has()
має чудову підтримку в сучасних браузерах.
Дані підтримки браузера отримані з Каніус, який містить більше деталей. Цифра вказує, що браузер підтримує цю функцію в цій версії та новішій.
робочий стіл
Chrome | Firefox | IE | край | Safari |
---|---|---|---|---|
105 | 121 | Немає | 105 | 15.4 |
Мобільний / Планшет
android-chrome | Android Firefox | Android | IOS Safari |
---|---|---|---|
122 | 123 | 122 | 15.4 |
:has()
у Спільноті!
Я зв’язався зі своєю мережею в Твіттері, щоб дізнатися, як використовують мої однолітки :has()
у своїй повсякденній роботі, і ось що вони сказали про це.
svg:has(> #Mail) {
stroke-width: 1;
}
Дуже приємно бачити, як учасники спільноти використовують сучасний CSS для вирішення реальних проблем, а також вітати Abbey, що використовує його з міркувань доступності!
Що потрібно мати на увазі,
Є кілька ключових моментів, про які слід пам’ятати при використанні :has()
Посилання на маркери MDN.
- Псевдоклас бере на себе специфіку найбільш конкретного селектора в своєму аргументі
- Якщо
:has()
сам псевдоклас не підтримується в браузері, весь блок селектора не працюватиме, якщо:has()
знаходиться в списку вибачення, наприклад у:is()
та:where()
- Команда
:has()
псевдоклас не може бути вкладений в інший:has()
- Псевдоелементи також не є дійсними селекторами
:has()
і псевдоелементи не є дійсними якорями для:has()
Висновок
Використання можливостей CSS, включаючи розширені функції, такі як :has()
pseudo-class, дає нам змогу створювати виняткові веб-досвіди. Сильні сторони CSS полягають у його каскадності та специфічності… найкраща частина, що дозволяє нам використовувати весь його потенціал. Використовуючи можливості CSS, ми можемо рухати вперед веб-дизайн і розробку, відкриваючи нові можливості та створюючи новаторські інтерфейси користувача.
Посилання:
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://css-tricks.com/the-power-of-has-in-css/
- : має
- :є
- : ні
- $UP
- 09
- 1
- 11
- 12
- 13
- 16
- 22
- 27
- 31
- 3rd
- 7
- 8
- 9
- 91
- 98
- a
- МЕНЮ
- про це
- доступність
- звітності
- Achieve
- через
- Ad
- додавати
- Додає
- просунутий
- Перевага
- після
- проти
- ВСІ
- Дозволити
- Також
- альтернатива
- an
- на якорі
- та
- чоловіча
- Інший
- будь-який
- застосовується
- Застосування
- ЕСТЬ
- аргумент
- стаття
- AS
- At
- фон
- заснований
- BE
- оскільки
- перед тим
- нижче
- КРАЩЕ
- Блокувати
- Блог
- синій
- border
- Box
- браузер
- браузери
- Створюємо
- але
- by
- CAN
- не може
- можливості
- Підписи
- водоспад
- випадків
- шанс
- контроль
- дитина
- Chrome
- клас
- класів
- color
- Приходити
- майбутній
- співтовариство
- висновок
- спутаний
- контроль
- може
- Пара
- виробити
- створення
- CSS
- дані
- день
- з дня на день
- надання
- дизайн
- деталь
- виявляти
- розробників
- розробка
- DID
- прямий
- безпосередньо
- do
- документ
- робить
- Пес
- управляти
- Падіння
- край
- елемент
- елементи
- обіймаючи
- повноваження
- кінець
- Весь
- все
- приклад
- винятковий
- Досліди
- пояснення
- дослідити
- FAIL
- особливість
- риси
- кілька
- Рисунок
- знайти
- Firefox
- після
- слідує
- харчування
- для
- Вперед
- знайдений
- від
- перед
- передня частина
- Повний
- функція
- функціональний
- функціональність
- отримала
- буде
- Золотий
- великий
- новаторський
- було
- мобільний
- Мати
- Тема
- допомагає
- Високий
- виділивши
- Як
- HTML
- HTTP
- HTTPS
- i
- ie
- if
- зображення
- зображень
- негайно
- важливо
- поліпшений
- in
- У тому числі
- вказує
- всередині
- Інтерфейси
- в
- iOS
- IT
- ЙОГО
- сам
- JavaScript
- тримати
- ключ
- останній
- найменш
- рівень
- Важіль
- брехня
- як
- список
- Довго
- подивитися
- шукати
- серія
- зробити
- маніпулювання
- матч
- макс-ширина
- члени
- може бути
- mind
- сучасний
- більше
- найбільш
- Mozilla
- my
- природа
- Необхідність
- необхідний
- мережу
- Нові
- наступний
- немає
- зараз
- номер
- of
- on
- ONE
- тільки
- or
- наші
- з
- над
- пакет
- сторінка
- частина
- партія
- Пройшов
- Минуле
- одноліткам
- plato
- Інформація про дані Платона
- PlatoData
- точок
- популярність
- можливостей
- пошта
- потенціал
- влада
- представити
- подарунки
- попередній
- Проблема
- проблеми
- проект
- забезпечує
- досяг
- реальний
- Реальний світ
- посилання
- посилання на
- відносний
- щодо
- представляє
- повага
- міцний
- s
- Safari
- Безпека
- то ж
- say
- приказка
- Школа
- Грати короля карти - безкоштовно Nijumi логічна гра гри
- побачити
- вибирає
- сидіти
- So
- рішення
- ВИРІШИТИ
- деякі
- що в сім'ї щось
- конкретний
- специфічність
- стояти
- Штати
- сильні сторони
- структура
- стиль
- такі
- підтримка
- Підтриманий
- Опори
- SVG
- синтаксис
- Приймати
- приймає
- взяття
- Технології
- текст
- Що
- Команда
- їх
- потім
- вони
- річ
- речі
- це
- час
- times
- назва
- до
- інструменти
- традиційно
- перетворень
- дерево
- правда
- Поворот
- ui
- якщо не
- розблокування
- us
- використання
- використовуваний
- користувач
- використання
- зазвичай
- використовувати
- дійсний
- різний
- версія
- вид
- vs
- хотіти
- було
- шлях..
- we
- Web
- були
- Що
- коли
- який
- волі
- з
- в
- чудовий
- Work
- робочі
- робочий
- світ
- б
- запис
- років
- ще
- Ти
- вашу
- зефірнет