Как создать эффект свечения градиента
Узнайте, как создать эффект свечения градиента в CSS с помощью псевдоэлементов, анимации и оптимизации. Полное руководство с примерами кода для веб-разработчиков.
Как создать эффект свечения градиента?
Всем привет.
Мне нужна помощь с созданием эффекта свечения градиента, похожего на тот, что используется на сайте.
Эффект свечения градиента можно создать с помощью CSS, комбинируя градиентные фоны, тени и размытие. Наиболее эффективные методы включают использование псевдоэлементов ::before и ::after с filter: blur() для создания мягкого свечения, а также слояние нескольких box-shadow с градиентными цветами.
Содержание
- Базовые техники создания свечения градиента
- Продвинутые методы с псевдоэлементами
- Анимированные эффекты свечения
- Практические примеры и код
- Оптимизация производительности
- Совместимость с браузерами
Базовые техники создания свечения градиента
Для создания эффекта свечения градиента существует несколько фундаментальных подходов, которые можно комбинировать для достижения желаемого результата.
Использование box-shadow с градиентами
Самый простой способ создать градиентное свечение — это использовать box-shadow с градиентными значениями. Однако прямой градиент в box-shadow не поддерживается, поэтому приходится использовать обходные пути.
.gradient-glow {
background: linear-gradient(45deg, #4158D0, #C850C0, #FFCC70);
box-shadow: 0 0 20px rgba(65, 88, 208, 0.5),
0 0 40px rgba(200, 80, 192, 0.3),
0 0 60px rgba(255, 204, 112, 0.2);
}
Комбинация градиентов и текстового свечения
Для текстовых элементов можно комбинировать text-shadow с градиентными эффектами:
.gradient-text-glow {
background: linear-gradient(45deg, #ffd800, #ff5520, #750cf2, #0cbcf2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-shadow: 0 0 10px rgba(255, 216, 0, 0.5),
0 0 20px rgba(255, 85, 32, 0.3),
0 0 30px rgba(117, 12, 242, 0.2);
}
Совет: Для многоцветного свечения текста можно создать несколько слоев
text-shadowс разными цветами и смещениями, как описано в LambdaTest.
Продвинутые методы с псевдоэлементами
Более сложные и эффектные градиентные свечения создаются с использованием псевдоэлементов, что позволяет создавать многослойные эффекты.
Двойной псевдоэлемент подход
Этот метод использует два псевдоэлемента для создания внешнего градиента и внутреннего размытого свечения:
.GlowingBorder {
position: relative;
background: #020117;
color: #fff;
padding: 40px;
text-align: center;
}
.GlowingBorder::after {
content: '';
position: absolute;
top: -5px;
left: -5px;
right: -5px;
bottom: -5px;
background: linear-gradient(45deg, #ffd800, #ff5520, #750cf2, #0cbcf2);
z-index: -1;
}
.GlowingBorder::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg, #ffd800, #ff5520, #750cf2, #0cbcf2);
z-index: -2;
filter: blur(40px);
}
Этот подход подробно описан на Plantpot и создает впечатляющий эффект свечения вокруг элемента.
Тройная структура для максимального эффекта
Для еще более выразительных эффектов можно использовать три слоя: основной контент, градиентная рамка и размытый фон:
.container {
position: relative;
z-index: 1;
background: linear-gradient(43deg, #4158D0 0%, #C850C0 46%, #FFCC70 100%);
filter: brightness(120%);
}
.container:before {
position: absolute;
z-index: -1;
content: '';
width: 100%;
height: 100%;
background: linear-gradient(43deg, #4158D0 0%, #C850C0 46%, #FFCC70 100%);
filter: blur(20px);
}
Как показано в примере с CodePen, такой подход создает профессиональный вид с мягким свечением.
Анимированные эффекты свечения
Чтобы сделать градиентное свечение более динамичным, можно добавить CSS анимации.
Пульсирующее свечение
@keyframes pulse {
0%, 100% {
filter: blur(20px) brightness(1);
transform: scale(1);
}
50% {
filter: blur(30px) brightness(1.2);
transform: scale(1.05);
}
}
.animated-glow {
animation: pulse 2s ease-in-out infinite;
}
Вращающийся градиентный фон
Для создания вращающегося градиентного эффекта используется @property и CSS переменные:
@property --a {
syntax: '<angle>';
inherits: false;
initial-value: 0deg;
}
.rotating-gradient {
animation: rotate 4s linear infinite;
background: repeating-conic-gradient(
from var(--a) at 50% 50%,
#4158D0 0deg,
#C850C0 90deg,
#FFCC70 180deg,
#4158D0 360deg
);
}
@keyframes rotate {
to {
--a: 360deg;
}
}
Этот продвинутый метод, описанный на FreeFrontend, использует современные CSS возможности для создания сложных анимированных эффектов.
Практические примеры и код
Полный пример для карточки с градиентной рамкой
<div class="card">
<div class="glow"></div>
<h1>Заголовок</h1>
<p>Описание карточки с эффектом свечения</p>
</div>
.card {
position: relative;
width: 300px;
height: 200px;
background: #1a1a1a;
border-radius: 10px;
padding: 20px;
color: white;
overflow: hidden;
}
.glow {
position: absolute;
top: -2px;
left: -2px;
right: -2px;
bottom: -2px;
background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4);
border-radius: 10px;
z-index: -1;
animation: gradient-shift 3s ease infinite;
filter: blur(5px);
}
@keyframes gradient-shift {
0% {
background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4);
}
25% {
background: linear-gradient(45deg, #4ecdc4, #45b7d1, #96ceb4, #ff6b6b);
}
50% {
background: linear-gradient(45deg, #45b7d1, #96ceb4, #ff6b6b, #4ecdc4);
}
75% {
background: linear-gradient(45deg, #96ceb4, #ff6b6b, #4ecdc4, #45b7d1);
}
100% {
background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4);
}
}
Этот пример взят с TheCoderAshok и демонстрирует создание карточки с анимированной градиентной рамкой.
Эффект свечения для кнопок
.glow-button {
position: relative;
background: linear-gradient(45deg, #667eea 0%, #764ba2 100%);
border: none;
padding: 15px 30px;
color: white;
font-size: 16px;
border-radius: 25px;
cursor: pointer;
overflow: hidden;
transition: transform 0.3s ease;
}
.glow-button::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg, #667eea 0%, #764ba2 100%);
filter: blur(15px);
opacity: 0;
transition: opacity 0.3s ease;
z-index: -1;
}
.glow-button:hover::before {
opacity: 1;
}
.glow-button:hover {
transform: translateY(-2px);
}
Оптимизация производительности
При работе с градиентными эффектами свечения важно учитывать производительность.
Советы по оптимизации
- Используйте
will-changeдля анимированных элементов:
.glow-element {
will-change: transform, filter;
}
-
Ограничивайте количество слоев:
- Минимизируйте количество псевдоэлементов
- Используйте разумные значения размытия
-
Выбирайте правильные свойства:
transformиopacityлучше анимируются, чемwidthиheightfilter: blur()может быть ресурсоемким на мобильных устройствах
-
Используйте
containдля изоляции:
.isolated-glow {
contain: layout style paint;
}
Советы по оптимизации основаны на исследованиях Subframe.
Совместимость с браузерами
При создании градиентных эффектов свечения важно учитывать поддержку браузерами.
Вендорные префиксы
Для максимальной совместимости используйте вендорные префиксы:
.gradient-glow {
/* Стандартный синтаксис */
background: linear-gradient(45deg, #4158D0, #C850C0, #FFCC70);
/* Вендорные префиксы */
background: -webkit-linear-gradient(45deg, #4158D0, #C850C0, #FFCC70);
background: -moz-linear-gradient(45deg, #4158D0, #C850C0, #FFCC70);
background: -o-linear-gradient(45deg, #4158D0, #C850C0, #FFCC70);
}
Современные браузеры
Большинство современных браузеров (Chrome, Firefox, Safari, Edge) хорошо поддерживают:
linear-gradientиradial-gradientfilter: blur()- CSS Grid и Flexbox для компоновки
- CSS Custom Properties (переменные)
Старые браузеры
Для старых браузеров можно использовать запасные варианты:
.gradient-glow {
/* Современный синтаксис */
background: linear-gradient(45deg, #4158D0, #C850C0, #FFCC70);
/* Запасной вариант для старых браузеров */
background: #4158D0; /* Однотонный фон */
}
Информация о совместимости взята из обсуждений на StackOverflow и CodePen.
Заключение
Создание эффекта свечения градиента — это мощный способ визуально выделить элементы на веб-странице. Ключевые моменты, которые стоит запомнить:
- Основные техники: Используйте комбинацию псевдоэлементов
::beforeи::afterсfilter: blur()для создания многослойных эффектов свечения. - Градиентные комбинации: Экспериментируйте с разными типами градиентов (
linear-gradient,radial-gradient,conic-gradient) для уникальных визуальных эффектов. - Анимация: Добавляйте CSS анимации для создания динамических эффектов пульсации или вращения градиентов.
- Производительность: Следите за оптимизацией, особенно на мобильных устройствах, ограничивая количество слоев и используя
will-change. - Совместимость: Всегда тестируйте в разных браузерах и используйте вендорные префиксы для широкой поддержки.
Эти техники помогут вам создавать впечатляющие градиентные эффекты свечения, которые будут привлекать внимание пользователей и подчеркивать важные элементы вашего интерфейса. Начните с простых примеров и постепенно усложняйте эффекты по мере приобретения опыта.
Источники
- 57 CSS Glow Effects | FreeFrontend
- Glowing Gradient Border Effects with HTML & CSS | Plantpot
- Advanced glows in CSS | WeAreIDA Medium
- 10 CSS Glow Effect Examples | Subframe
- 47 Best Glowing Effects in CSS [2025] | LambdaTest
- PURE CSS GLOWING GRADIENT BORDER | CodePen
- CSS Gradient Border Glowing Animation Hover Effect | TheCoderAshok
- Create an animated, glowing, gradient border with CSS | YouTube
- CSS Animated Glowing Gradient Border Effects | YouTube
- Make an animated glowing border effect with CSS | YouTube