10 способів приховати елементи в CSS
Привіт:) У цьому гайді детально покажу як приховати елементи за допомогою CSS. Розгляну різні варіанти, їх особливості та відмінності. Ви побачите коли і в якому випадку слід використовувати той чи інший спосіб.
На сторінках сайту буває необхідно приховати елемент в залежності від ситуації. Наприклад, на ПК показати рекламний банер, а на мобільному сховати його. Є декілька варіантів це зробити. Покажу детально кожен із них.
Для прикладу нехай є 3 однакових блоки, з яких середній буде приховуватися.
<div class="wrapper">
<div class="container">
<div class="left-block">1</div>
<div class="center-block">2</div>
<div class="right-block">3</div>
</div>
</div>
.wrapper {
display: flex;
align-items: center;
justify-content: center;
max-width: 1300px;
margin: 0 auto;
padding-left: 15px;
padding-right: 15px;
box-sizing: content-box;
}
.container {
display: flex;
justify-content: center;
flex-wrap: wrap;
max-width: 700px;
outline: 2px solid black;
}
[class*="-block"] {
display: flex;
justify-content: center;
align-items: center;
width: 200px;
height: 200px;
margin: 15px;
font-size: 50px;
font-weight: bold;
text-align: center;
color: #ffffff;
background: red;
}
opacity та filter: opacity()
Одним із найпростіших способів приховати елемент є налаштування його непрозорості. Властивість opacity
дозволяє зробити елемент повністю прозорим, встановивши для нього значення 0
:
.center-block {
opacity: 0;
}
Результатом буде:
Крім того, ви можете використовувати властивість filter
з функцією opacity()
:
.center-block {
filter: opacity(0);
}
Результат буде аналогічним.
filter
слід використовувати, якщо одночасно застосовано декілька ефектів (розмиття, контраст, градації сірого тощо).visibility
CSS-властивість visibility
дозволяє контролювати видимість елемента. Якщо встановити для нього значення hidden
, то елемент візуально сховається, але при цьому зберігатиме простір серед інших HTML-елементів сторінки.
.center-block {
visibility: hidden;
}
collapse
.aria-hidden="true"
.display
Ця властивість, мабуть, найчастіше використовується веб-розробниками. Встановивши для неї значення none
, елемент повністю видаляється із потоку DOM, і робиться таким, ніби він ніколи не існував на поточній HTML-сторінці.
.center-block {
display: none;
}
display: none
є популярним методом, він має деякі обмеження. Його не можна анімувати. Також він ініціює зміну макета, що впливає на розташування інших елементів на сторінці.display
також перевантажено такими опціями, як block
, inline
, table
, flexbox
, grid
тощо. Повернення до правильного значення після display: none;
може бути проблематичним (хоча unset
може допомогти).color та background-color
Ще один спосіб приховати HTML-елемент — застосувати нульовий альфа-канал кольору за допомогою rgba(0,0,0,0)
. Це зробить елемент повністю прозорим.
.center-block {
color: rgba(0,0,0,0);
background-color: rgba(0,0,0,0);
}
transform
Наступний варіант — застосування CSS-властивості transform
.
.center-block {
transform: scale(0);
}
або
.center-block {
transform: translate(-9999px, 0);
}
transform
забезпечує високу продуктивність і апаратне прискорення, оскільки елемент ефективно переміщується в окремий шар і може бути анімований у 2D або 3D. При цьому елемент залишається у DOM-дереві.clip-path
Ця властивість створює область відсікання, яка визначає, які частини елемента є видимими. Використання її значення circle(0)
або polygon(0px 0px,0px 0px,0px 0px,0px 0px)
повністю приховає елемент.
/* ВАРІАНТ 1 */
.center-block {
clip-path: circle(0);
}
/* ВАРІАНТ 2 */
.center-block {
clip-path: polygon(0px 0px,0px 0px,0px 0px,0px 0px);
}
clip-path
відкриває великі можливості для всеможливих анімацій, хоча на нього варто покладатися лише в сучасних браузерах.HTML-атрибут hidden
Цей атрибут можна додати до будь-якого елементу:
<!-- ВАРІАНТ 1 -->
<div class="center-block" hidden>2</div>
<!-- ВАРІАНТ 2 -->
<div class="center-block" hidden="">2</div>
<!-- ВАРІАНТ 3 -->
<div class="center-block" hidden="hidden">2</div>
display
. Наприклад, для блоку із класом center-block
я задав display: flex
. У такому випадку атрибут hidden
для цього елементу нічого не дасть.display: none
, хоча це може бути корисним при використанні системи керування вмістом (CMS), яка не дозволяє змінювати CSS-стилі.position
Властивість position
дозволяє елементу переміщуватися зі статичної позиції (за замовчуванням) в межах DOM-дерева HTML-елементів сторінки за допомогою параметрів top
, bottom
, left
та right
. Таким чином, абсолютно позиціонований елемент можна перемістити за межі екрану вліво, вправо, вгору та вниз.
.center-block {
position: absolute;
left: -9999px;
right: -9999px;
}
Накладання іншого елементу
Також елемент можна візуально приховати, розташувавши над ним інший елемент того самого кольору, що й фон. У цьому прикладі використовується псевдоелемент ::after
, хоча можна використовувати будь-який дочірній елемент.
Для мого прикладу допишіть декілька рядків:
.center-block {
position: relative;
}
.center-block::after {
position: absolute;
content: "";
top: 0px;
bottom: 0px;
left: 0px;
right: 0px;
background-color: #ffffff;
}
Зменшення розмірів
Елемент також можна приховати, зменшивши його розміри.
.center-block {
height: 0px;
padding: 0px;
overflow: hidden;
}
0
.