Градиентная тень у блока на CSS

Градиентная тень у блока на CSS

Градиентная тень у блока на CSS

Сделать на CSS красивую градиентную тень вместо обычной серовато-черного цвета? Это никакая не сверхзадача, CSS легко с этим справляется.

Создание блоков

Создадим два блока с текстом внутри для красоты. Оба блока будут отбрасывать тень вниз. Чтобы все блоки с текстом находились в центре браузера, поместим их в гибкий контейнер body и установим нужный свойства.



//HTML код
<div class="card">
    <h2>Gradient</h2>
</div>
<div class="card">
    <h2>Shadow</h2>
</div>
// CSS код
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: "Poppins", sans-serif;
}
body {
    display: flex; / * гибкий контейнер * /
    justify-content: center; / * по горизонтали * /
    align-items: center; / * по вертикали * /
    min-height: 100vh;
    flex-wrap: wrap;
}

Градиентная тень у блока на CSS

Зададим блокам размеры, отступы и сделаем их тоже гибким контейнером, чтобы текст находился по центру. Установим для блоков временную черную рамку, чтобы как-то обозначить их для наглядности. В дальнейшем данное свойство закомментируем или удалим.


.card{
    position: relative;
    width: 300px;
    height: 200px;
    margin: 20px;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 0px;
    border: solid 1px #000; /*временная рамка*/
}

Градиентная тень у блока на CSS

Создание основы для тени тени

Псевдоэлемент before — это надстройка над элементом card со своими CSS-свойствами. Для наглядности, я опять установлю временную красную рамку.


.card:before {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 40px;
    filter: blur(25px);
    transform: translateY(30px) scale(0.9);
    border: solid 8px red; /*временная рамка*/
}

Градиентная тень у блока на CSS

Создание тени для блоков

Обращаемся к первому блоку через псевдокласс nth-child и задаем ему первый градиент для закрашивания самого блока. Второй градиент предназначается для закрашивания тени. Тоже самое делаем для второго блока, но с другим цветом у градиентов.


.card:nth-child(1),
.card:nth-child(1):before{
    background: linear-gradient(135deg,#ff0057,#FFEBEE);
    background: linear-gradient(-45deg, #f403d1, #64b5f6);
}
.card:nth-child(2),
.card:nth-child(2):before{
    background: linear-gradient(135deg,#f4ff4b,#ff0076);
    background: linear-gradient(-45deg, #24ff72, #2196F3);
}

Тем временем, к нас куда-то исчез текст на блоках. Конечно же никуда он не пропал, а оказался под слоями. Поднимем наш текст на самый верхний слой с помощью z-index.


.card h2{
    position: relative;
    z-index: 1;
    color: #fff;
    font-size: 3em;
}

Градиентная тень у блока на CSS

Создание градиентной тени похоже на слоеный пирог, где каждый слой состоит из псевдоэлемента.

Посмотрите пример на CodePen

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий