Пошук уроків, статей та іншого контенту
Навчимося перевіряти стилі, досліджувати каскад і знаходити проблеми верстки за допомогою Chrome DevTools.
Chrome DevTools — набір інструментів для перевірки та налагодження вебсторінок безпосередньо в браузері. За його допомогою можна:
переглядати HTML-структуру сторінки;
знаходити CSS-правила, які застосовані до елемента;
бачити, які властивості були перезаписані каскадом;
змінювати стилі в реальному часі;
перевіряти розміри, відступи та позиціонування;
відтворювати стани :hover, :focus, :active;
знаходити причини горизонтального прокручування та інших проблем верстки.
Зміни, зроблені в DevTools, застосовуються лише локально у відкритій вкладці. Після перезавантаження сторінки вони зникнуть, якщо не зберегти їх у вихідних файлах.
Відкрити DevTools у Chrome можна кількома способами:
натиснути F12;
натиснути Ctrl + Shift + I у Windows або Linux;
натиснути Cmd + Option + I у macOS;
клацнути правою кнопкою миші по елементу та вибрати Inspect.
Після відкриття інструментів з’явиться панель із вкладками. Для налагодження HTML і CSS найчастіше використовують вкладку
Вкладка Elements складається з двох основних частин:
дерево HTML-елементів;
панель властивостей вибраного елемента.
Наприклад, розглянемо таку сторінку:
<!doctype html>
<html lang="uk">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Картка профілю</title>
<style>
* {
box-sizing: border-box;
}
body {
margin: 0;
font-family: Arial, sans-serif;
background: #f1f5f9;
}
.page {
min-height: 100vh;
display: grid;
place-items: center;
padding: 24px;
}
.card {
width: 100%;
max-width: 360px;
padding: 24px;
border: 1px solid #cbd5e1;
border-radius: 16px;
background: white;
box-shadow: 0 8px 24px rgb(15 23 42 / 12%);
}
.card__title {
margin: 0 0 8px;
color: #0f172a;
font-size: 24px;
}
.card__description {
margin: 0 0 20px;
color: #475569;
line-height: 1.5;
}
.card__button {
border: 0;
border-radius: 8px;
padding: 10px 16px;
color: white;
background: #2563eb;
cursor: pointer;
}
.card__button:hover {
background: #1d4ed8;
}
</style>
</head>
<body>
<main class="page">
<article class="card">
<h1 class="card__title">Олена Коваль</h1>
<p class="card__description">
Frontend-розробниця та авторка технічних статей.
</p>
<button class="card__button" type="button">Переглянути профіль</button>
</article>
</main>
</body>
</html>Відкрийте файл у браузері та запустіть DevTools.
Щоб швидко знайти елемент:
відкрийте DevTools;
натисніть кнопку вибору елемента — піктограму курсора у верхній частині панелі;
наведіть курсор на елемент сторінки;
клацніть по ньому.
Також можна натиснути Ctrl + Shift + C у Windows або Linux чи Cmd + Shift + C у macOS, а потім вибрати елемент на сторінці.
Після вибору елемент буде підсвічений у дереві HTML та на самій сторінці.
У верхній частині вкладки Elements можна натиснути Ctrl + F і виконати пошук:
за назвою тегу;
за класом;
за ідентифікатором;
за текстом елемента.
Наприклад, пошук за .card__button знайде кнопку профілю.
Панель Styles показує CSS-правила, що стосуються вибраного елемента.
Для кнопки з прикладу можна побачити:
.card__button {
border: 0;
border-radius: 8px;
padding: 10px 16px;
color: white;
background: #2563eb;
cursor: pointer;
}У цій панелі можна:
вмикати та вимикати окремі властивості;
редагувати значення;
додавати нові властивості;
додавати нові селектори;
змінювати кольори через вбудований палітровий редактор;
переходити до файлу та номера рядка, де оголошено правило.
Ліворуч від кожної властивості є прапорець. Якщо його вимкнути, браузер перестане враховувати цю властивість.
Наприклад, якщо вимкнути:
padding: 10px 16px;кнопка стане меншою. Це допомагає швидко перевірити, чи впливає конкретна властивість на проблему.
Клацніть по значенню властивості та введіть нове:
background: #16a34a;Зміна одразу відобразиться на сторінці. Це зручно для підбору кольорів, відступів, ширини та інших параметрів.
У панелі Styles можна натиснути кнопку +. Chrome створить новий CSS-селектор для вибраного елемента.
Наприклад:
.card__button {
font-size: 18px;
}Так можна перевірити гіпотезу, не змінюючи файл проєкту.
Якщо CSS-властивість перекреслена, це означає, що браузер її бачить, але не використовує.
Наприклад:
.card__button {
background: #2563eb;
}
button {
background: gray;
}Для кнопки правило .card__button має вищу специфічність, тому background: gray буде перекреслено.
У DevTools це виглядатиме приблизно так:
.card__button {
background: #2563eb;
}
button {
background: gray; /* це правило перезаписане */
}Перекреслена властивість може бути наслідком:
нижчої специфічності селектора;
пізнішого правила з такою самою специфічністю;
успадкування;
використання !important в іншому правилі;
неактивного стану елемента або медіазапиту.
Коли кілька правил мають однакову специфічність, перемагає правило, яке оголошене пізніше.
.card__title {
color: navy;
}
.card__title {
color: darkgreen;
}Фактичним кольором буде darkgreen, тому що друге правило розташоване нижче.
У DevTools правила відображаються в порядку, який допомагає побачити, чому одне з них перемогло інше.
Каскад визначає, які стилі зрештою отримає елемент. На результат впливають:
важливість правила;
специфічність селектора;
порядок оголошення.
Порівняймо селектори:
p {
color: gray;
}
.card__description {
color: blue;
}
article p {
color: green;
}
#profile-description {
color: purple;
}Якщо елемент має вигляд:
<p id="profile-description" class="card__description">
Текст профілю
</p>найвищу специфічність має селектор з ідентифікатором, тому текст стане фіолетовим.
У DevTools можна перевірити кожне правило й побачити, які властивості були перезаписані. Це практичніше, ніж намагатися визначити причину лише за вихідним CSS-файлом.
Праворуч від селектора DevTools зазвичай показує назву CSS-файлу та номер рядка. Клацання по цьому посиланню відкриває відповідний файл у вкладці Sources.
Це дозволяє швидко перейти від проблемного елемента до коду, який потрібно виправити.
Вкладка Computed показує фінальні обчислені значення CSS-властивостей.
На відміну від Styles, вона не показує весь набір правил каскаду. Вона відповідає на запитання:
Яке значення фактично використовує браузер?
Наприклад, для картки можна перевірити:
фактичну ширину та висоту;
display;
position;
margin;
padding;
font-size;
line-height;
color;
background-color;
значення flex або grid.
Пошук у верхній частині вкладки Computed допомагає швидко знайти властивість. Якщо розгорнути властивість, Chrome покаже CSS-правило, з якого взялося її значення.
Styles відповідає на запитання:
Які правила претендують на застосування до цього елемента?
Computed відповідає на запитання:
Яке значення зрештою отримав елемент?
Наприклад, у CSS може бути:
.card {
width: 100%;
max-width: 360px;
}У Styles ви побачите обидві властивості. У Computed буде показано фактичну ширину, яка залежить від ширини батьківського елемента та доступного простору.
У панелі Computed є схема Box Model. Вона показує чотири рівні:
content — область вмісту;
padding — внутрішні відступи;
border — межі;
margin — зовнішні відступи.
Для картки з прикладу:
.card {
padding: 24px;
border: 1px solid #cbd5e1;
}розмір картки включає:
ширину та висоту вмісту;
padding;
border.
Оскільки в коді використано:
* {
box-sizing: border-box;
}задана ширина містить padding і border.
Без border-box ширина елемента складалася б із ширини вмісту, внутрішніх відступів і меж. Це часто стає причиною несподіваного переповнення.
Якщо елемент розташований не там, де очікується:
виберіть його в Elements;
подивіться на підсвічування моделі блока;
перевірте margin;
перевірте padding батьківського елемента;
перевірте ширину, висоту та box-sizing.
DevTools підсвічує різні частини моделі блока різними кольорами. Наведіть курсор на значення в схемі, щоб побачити, яка область сторінки відповідає конкретному відступу.
Коли елемент вибраний у DOM, наведіть курсор на його HTML-вузол. Chrome підсвітить:
межі елемента;
внутрішній і зовнішній відступи;
розміри;
іноді тип розкладки — Flexbox або Grid.
Це допомагає відрізнити проблему самого елемента від проблеми його батьківського контейнера.
Наприклад, якщо кнопка має правильні margin, але все одно зміщена, перевірте:
display батьківського елемента;
justify-content;
align-items;
gap;
position;
ширину контейнера.
Якщо елемент є flex- або grid-контейнером, у DevTools біля відповідного правила з’являється спеціальний індикатор. Натиснувши його, можна ввімкнути візуалізацію розкладки.
Для Flexbox корисно перевіряти:
напрямок flex-direction;
вирівнювання justify-content;
вирівнювання align-items;
відстань gap;
перенесення через flex-wrap;
розміри дочірніх елементів.
Для Grid можна досліджувати:
кількість колонок і рядків;
розміри треків;
проміжки gap;
області Grid;
вирівнювання елементів.
Спочатку знайдіть контейнер, а не дочірній елемент. Багато проблем позиціонування виникають через правило батьківського блока.
Стани :hover, :focus, :active часто важко перевірити, бо вони швидко змінюються під час взаємодії.
У панелі Styles натисніть кнопку :hov і виберіть потрібний стан:
:hover;
:active;
:focus;
:visited;
:focus-within.
Наприклад, для кнопки можна примусово ввімкнути :hover і перевірити правило:
.card__button:hover {
background: #1d4ed8;
}Якщо стиль не змінюється, перевірте:
чи правильно написаний селектор;
чи не перекреслена властивість;
чи не перекриває кнопку інший елемент;
чи не використано інше правило з вищою специфічністю.
DevTools дає змогу перевіряти гіпотези по одній.
Наприклад, картка несподівано виходить за межі екрана. Порядок перевірки може бути таким:
вибрати картку;
перевірити її ширину у Computed;
перевірити padding, border і box-sizing;
тимчасово вимкнути width, min-width або max-width;
перевірити батьківський контейнер;
перевірити, чи немає дочірнього елемента з фіксованою шириною;
перевірити горизонтальне переповнення.
Тимчасове вимкнення властивостей — не остаточне виправлення, а спосіб визначити причину.
Для перевірки верстки на різних ширинах натисніть кнопку перемикання режиму пристрою або використайте Ctrl + Shift + M у Windows/Linux чи Cmd + Shift + M у macOS.
У цьому режимі можна:
змінювати ширину та висоту області перегляду;
перевіряти мобільну версію;
бачити, як спрацьовують медіазапити;
знаходити переповнення;
перевіряти поведінку flex- і grid-розкладки.
Зменшуйте ширину вікна поступово та звертайте увагу на момент появи проблеми. Якщо елемент раптово стає занадто широким, перевірте:
фіксовані значення width;
min-width;
довгий текст без перенесення;
великі padding;
зображення або інші дочірні елементи;
медіазапити.
Уявімо, що кнопка має бути синьою, але на сторінці вона сіра.
HTML:
<button class="card__button" type="button">
Переглянути профіль
</button>CSS:
.card__button {
background: #2563eb;
}
button {
background: gray;
}Алгоритм перевірки:
виберіть кнопку в Elements;
відкрийте панель Styles;
знайдіть властивість background;
подивіться, яке правило перекреслене;
порівняйте специфічність селекторів;
виправте CSS у файлі проєкту.
У цьому прикладі .card__button специфічніший за button, тому кнопка має бути синьою. Якщо сіра властивість не перекреслена, можливо, правило .card__button не завантажилося або клас відсутній у HTML.
Коли елемент виглядає неправильно, використовуйте послідовний алгоритм:
Переконайтеся, що вибрали правильний елемент.
Перевірте, чи завантажений потрібний CSS-файл.
Перегляньте панель Styles.
Знайдіть перекреслені властивості.
Перевірте специфічність і порядок правил.
Перегляньте Computed для фінальних значень.
Перевірте модель блока.
Дослідіть батьківський контейнер.
Перевірте псевдокласи та медіазапити.
Перенесіть підтверджене виправлення у вихідний CSS.
Такий підхід допомагає не додавати випадкові правила, а знаходити конкретну причину проблеми.
Зміни у вкладці Elements і панелі Styles тимчасові. Вони зникнуть після перезавантаження сторінки.
Тому після експерименту:
визначте правильне значення;
відкрийте відповідний CSS-файл у редакторі коду;
внесіть зміну у вихідний код;
збережіть файл;
оновіть сторінку та перевірте результат.
DevTools потрібен для дослідження та перевірки, а не для заміни редагування проєкту.
Положення елемента часто визначає батьківський контейнер. Якщо margin і padding правильні, перевірте display, ширину та вирівнювання батьківського блока.
Перекреслена властивість не застосовується. Не потрібно змінювати її значення, доки не зрозуміло, яке правило її перезаписує.
!important!important може тимчасово приховати проблему зі специфічністю, але ускладнює подальше налагодження. Спочатку визначте, яке правило має перемогти, і виправте селектори або порядок правил.
Вкладка Styles показує правила, але не завжди очевидно показує фінальний результат. Для фактичних значень використовуйте Computed.
Після експериментів сторінка може виглядати правильно лише у вашій вкладці. Перевірте зміни у вихідному файлі та перезавантажте сторінку.
Стиль, який працює на широкому екрані, може зламатися на мобільному. Перевіряйте проблемні компоненти в режимі різних розмірів viewport.
Chrome DevTools допомагає налагоджувати CSS без постійного редагування та перезавантаження файлів.
Основні інструменти:
Elements — перегляд і вибір HTML-елементів;
Styles — перевірка та тимчасове редагування CSS-правил;
Computed — перегляд фінальних обчислених значень;
Box Model — аналіз content, padding, border і margin;
кнопка :hov — перевірка псевдокласів;
режим пристрою — перевірка адаптивної верстки.
Найефективніший підхід — знайти елемент, перевірити його правила, визначити перезаписану властивість, перевірити фінальне значення в Computed, а потім перенести підтверджене виправлення у вихідний код.