Робота з селекторами CSS
CSS селектори – це відносно простий, швидкий, зручний і достатньо потужний інструмент для вибору елементів на веб-сторінці.
Спадковість елементів
У CSS-селекторах спадковість елементів вказується за допомогою використання пробілів та розділювачів:
- Пробіл: Використовується для пошуку елементів, які є дочірніми або будь-яким нащадком обраного елемента. Наприклад,
div pзнайде всі елементи<p>, що знаходяться всередині елементів<div>, незалежно від глибини спадковості. - Розділювач
>: Використовується для пошуку елементів, які є безпосередніми нащадками обраного елемента. Наприклад,div > pзнайде всі елементи<p>, які є безпосередніми дочірніми елементами<div>.
Створення CSS-селекторів
При створенні CSS-селекторів важливо розуміти, як вони працюють та як правильно їх створювати. Передусім вам треба знати, що CSS-селектори дозволяють обирати елементи за їх тегами, класами, ідентифікаторами та атрибутами.
Для наочності розглянемо типові варіанти CSS-селекторів для такого коду: <div class="example" id="demo"><p>Привіт</p><div>
Пошук за тегом
Якщо потрібно вибрати всі елементи певного тегу, тоді просто використовуйте назву тегу як селектор.
Наприклад: для пошуку усіх тегів <div> можна написати селектор div, а для пошуку усіх тегів <p> використовуємо селектор p.
Відповідно: <input> → input ; <button> → button ; <select> → select і так далі.
Пошук за класом або ідентифікатором
Якщо потрібно вибрати елементи за їхнім класом або ідентифікатором, ми використовуємо спеціальні символи: крапку . для класу і хеш # для ідентифікатора. Наприклад, .example знайде всі елементи з атрибутом class="example", а #demo знайде елемент з атрибутом id="demo".
Комбінований пошук
Можна комбінувати різні умови, наприклад, .example p знайде всі елементи <p>, які знаходяться всередині елементів з class="example", незалежно від глибини вкладеності.
Пошук за псевдокласами
Псевдокласи дозволяють знаходити елементи відповідно до їхнього порядку або розташування всередині батьківського елемента.
:first-child– знаходить перший дочірній елемент всередині свого батьківського елемента. Наприклад, якщо у вас є елемент<ul>всередині якого багато елементів<li>, то селекторli:first-childобере перший елемент<li>в цьому списку.:last-child– знаходить останній дочірній елемент всередині свого батьківського елемента. Наприклад, якщо у вас є елемент<ul>всередині якого багато елементів<li>, то селекторli:last-childвибере останній елемент<li>в цьому списку.:nth-child(odd)– знаходить кожен непарний дочірній елемент всередині свого батьківського елемента. Наприклад, якщо у вас є елемент<ul>всередині якого багато елементів<li>, то селекторtr:nth-child(odd)вибере кожен другий елемент<li>, починаючи з першого.:nth-child(even)– знаходить кожен парний дочірній елемент всередині свого батьківського елемента. Наприклад, якщо у вас є елемент<ul>всередині якого багато елементів<li>, то селекторtr:nth-child(even)вибере кожен другий елемент<li>, починаючи з другого.
Пошук за атрибутом
При створенні CSS-селекторів можна використовувати не лише класи та ідентифікатори, але й інші атрибути елементів, які вписуються в селектор у квадратні дужки [ ].
Пошук за елементом з наявністю певного атрибута
<button type="submit"> → button[type].
Пошук за елементом з атрибутом певного значення
<button type="submit"> → button[type='submit'].
Пошук за класом елемента + атрибутом певного значення
<button class="btn" type="submit"> → .btn[type='submit'].
Пошук за атрибутом, що містить певну підстроку
<a href="https://scramble.wiki/"> → a[href*='scramble.wiki']
Пошук за атрибутом, який починається з певної підстроки
<a href="https://scramble.wiki/"> → a[href^='https://']
Пошук за атрибутом, який закінчується певною підстрокою
<img src="captcha_image.png"> → img[src$='.png']
Примітка
Насправді я описав далеко не всі варіанти створення CSS-селекторів, проте цього має вистачити для переважної більшості випадків. З усім тим, на про всяк випадок раджу ознайомитись з селекторами XPATH, оскільки в нашій роботі час від часу виникають ситуації, коли XPATH підходить набагато краще.