CSS box-shadow — тінь елемента: приклади й параметри


Властивість box-shadow додає тінь до елементу.

Властивість box-shadow

Допускається використовувати кілька тіней, вказуючи їх параметри через кому, при такому записі тіней, вони будуть накладатися одна на одну, перша тінь зі списку буде зверху, остання в самому низу. Якщо для елементу задається радіус округлення через властивість border-radius, то тінь також вийде з закругленими кутами. Додавання тіні збільшує ширину елемента, тому можлива поява горизонтальної смуги прокручування в браузері.

Ти можеш встановити колір тіні, а також задати її зміщення (як далеко вона буде від елементу), не обов’язкові параметри - це колір і додаткові ключові слова. Для пропущених значень зміщення задається 0, а для не заданих кольорів браузер самостійно задасть значення.

Також є можливість задання розмитої тіні (розмиття за Гаусом).

автор: NagarD

Загальний опис

автор: NagarD

Нотатка

Internet Explorer до версії 9.0 не підтримує властивість box-shadow, натомість можна використовувати властивість filter:

filter: progid:DXImageTransform.Microsoft.dropshadow(offX=5, offY=5, color=#000000);

Тут: offX - зміщення тіні по горизонталі; offY - зміщення тіні по вертикалі; color - колір тіні.

автор: NagarD
Нотатка

Застосування фільтру dropshadow дає чітку різку тінь, тому для ефекту розмиття можна використовувати фільтр shadow.

filter: progid:DXImageTransform.Microsoft.shadow(direction=120, color=#000000, strength=10);

Тут: direction - кут напрямку тіні від 0 до 360°; color - колір тіні; strength - зміщення тіні в пікселях.

автор: NagarD

Синтаксис

box-shadow: none|h-shadow v-shadow blur spread color |inset|initial|inherit;

Властивість box-shadow може отримувати 9 значень:

none

Без задання. Тіні немає

автор: NagarD

h-shadow

Обов'язкове значення. Зсув тіні по горизонталі. Позитивне значення цього параметра задає зсув тіні вправо, від'ємне - вліво

автор: NagarD

v-shadow

Обов'язкове значення. Зсув тіні по вертикалі. Позитивне значення задає зсув тіні вниз, від'ємне - вгору.

автор: NagarD

blur

Задає радіус розмиття тіні. Чим більше це значення, тим сильніше тінь згладжується, стає ширше і світліше. Якщо цей параметр не заданий, без задання дорівнює 0. Тінь при цьому буде чіткої, а не розмитою.

автор: NagarD

spread

Позитивне значення розтягує тінь, від'ємне, навпаки, стискає її. Без задання цей параметр не заданий та дорівнює 0, при цьому тінь буде того ж розміру, що й елемент.

автор: NagarD

color

Колір тіні в будь-якому доступному CSS форматі, без задання тінь чорна.

автор: NagarD

inset

Тінь виводиться всередині елемента

автор: NagarD

initial

Встановлює властивість у значення без задання

автор: NagarD

inherit

Вказує на спадковість властивості від свого батьківського елемента

автор: NagarD

Значення без задання: none
Наслідує: Ні
Анімується: Так
JavaScript синтаксис: object.style.boxShadow="10px 20px 30px blue"

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
10 4 5.1 10.5 12 9
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 5

Приклади

+ запропонувати свій приклад у пісочниці

Інструмент

Збирає CSS-тінь повзунками й одразу показує результат.

Генератор box-shadow — окремою сторінкою, з поясненням пасток.

Та сама тінь 0 0 25px, але inset малює її всередині блока, а без нього — назовні.

HTML

<div class="box in">inset — тінь усередині</div>
<div class="box out">без inset — назовні</div>

CSS

.box {
    display: inline-block;
    width: 170px;
    padding: 30px 16px;
    margin: 16px;
    background: #fff;
}

.in  { box-shadow: inset 0 0 25px #000000; }
.out { box-shadow: 0 0 25px #000000; }
автор: NagarD

Приклад використання властивості

HTML

<div class="info">
	<p>За допомогою властивості <code>box-shadow</code> ми можемо задати для блоку тінь.</p>
	<p>Нижче розташовані три ідентичні блоки. Для двох останніх задана тінь.</p>
</div>

<div class="wrapper">
	<div class="block"></div>
	<div class="block one"></div>
	<div class="block two"></div>
</div>

CSS

* {
	box-sizing: border-box;
}

body {
	font-family: monospace;
	font-size: 17px;
}

.info {
	padding: 16px;
}

code {
	font-weight: 700;
	color: #444;
	border-bottom: 2px solid #666;
}

.wrapper {
	display: flex;
	justify-content: space-around;
}

.block {
	width: 25%;
	height: 150px;
	background-color: gold;
}

.block.one {
	-webkit-box-shadow: 3px 3px 5px 6px #666;
	-moz-box-shadow:    3px 3px 5px 6px #666;
	box-shadow:         3px 3px 5px 6px #666;
}

.block.two {
	-moz-box-shadow:    inset 0 0 25px #000000;
	-webkit-box-shadow: inset 0 0 25px #000000;
	box-shadow:         inset 0 0 25px #000000;
}
автор: NagarD

Приклад використання властивості

HTML

<div class="block">
  <code>Без тіней</code>
</div>
<div class="block block-1">
  <code>box-shadow: 10px 5px 5px black;</code>
</div>
<div class="block block-2">
  <code>box-shadow: 0 0 1em gold;</code>
</div>
<div class="block block-3">
  <code>box-shadow: inset 0 0 1em gold, 0 0 1em red;</code>
</div>
<div class="block block-4">
  <code>box-shadow: 60px -16px teal;</code>
</div>

CSS

.block {
  width: 350px;
  height: 150px;
  margin-bottom: 50px;
  margin-left: 25px;
  border: 2px solid #666;
  
  display: inline-block;
  margin-top: 20px;
  text-align: center;
  font-family: monospace;
  color: #666;
  line-height: 146px;
}

.block-1 {
  box-shadow: 10px 5px 5px black;
}
.block-2 {
  box-shadow: 0 0 1em gold;
}
.block-3 {
  box-shadow: inset 0 0 1em gold, 0 0 1em red;
}
.block-4 {
  box-shadow: 60px -16px teal;
}
автор: NagarD

Три різні тіні: багатошарова м'яка, внутрішня inset і «рамка» з нульовим розмиттям — вона не змінює розмір блоку.

HTML

<div class="row">
  <div class="card soft">багатошарова</div>
  <div class="card in">inset</div>
  <div class="card ring">рамка тінню</div>
</div>

CSS

.row {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
    padding: 20px;
    background: #eef1f5;
}
.card {
    width: 130px;
    height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border-radius: 10px;
    font: 14px sans-serif;
}
.soft {
    box-shadow:
        0 1px 2px rgba(0, 0, 0, .12),
        0 4px 8px rgba(0, 0, 0, .10),
        0 12px 24px rgba(0, 0, 0, .08);
}
.in {
    box-shadow: inset 0 4px 12px rgba(0, 0, 0, .35);
}
.ring {
    box-shadow: 0 0 0 3px #d2451e;
}
автор: NagarD

Динамічний приклад

HTML

<div class="box">

<p>У цьому прикладі, Ви можете змінювати значення для властивості <strong>box-shadow</strong>.</p>

<p>Вона встановлює тінь для елементу на сторінці. У цьому прикладі Ви мусите вибрати розміри, а також колір тіні.</p>

<strong>box-shadow: </strong>
<input type="number" class="input" id="offx" value="8">px 
<input type="number" class="input" id="offy" value="8">px 
<input type="number" class="input" id="blur" value="8">px 
<input type="number" class="input" id="radius" value="8">px 
<input type="color" class="input" id="color" value="#F74C32">
<strong>;</strong>
  
</div>

CSS

* {
  box-sizing: border-box;
}

body {
  font-family: monospace;
  font-size: 16px;
  line-height: 1.45;
  height: 100vh;
  padding: 16px;
}

.box {
  background-color: #f7f7f7;
  padding: 16px;
  box-shadow: 8px 8px 8px 8px #F74C32;
}

.input {
  margin-bottom: 36px;
  width: 75px;
}

#select {
  position: relative;
  top: -4px;
  width: 100px;
}

JS

document.querySelectorAll('.input').forEach((el) => el.addEventListener('change', function () {
  var offx = document.querySelector('#offx').value;
  var offy = document.querySelector('#offy').value;
  var blur = document.querySelector('#blur').value;
  var radius = document.querySelector('#radius').value;
  var color = document.querySelector('#color').value;
  document.querySelectorAll('.box').forEach((n) => n.style.setProperty('box-shadow', offx + 'px ' + offy + 'px ' + blur + 'px ' + radius + 'px ' + color));
}));
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід