Другое

Как создать эффект свечения градиента

Узнайте, как создать эффект свечения градиента в CSS с помощью псевдоэлементов, анимации и оптимизации. Полное руководство с примерами кода для веб-разработчиков.

Как создать эффект свечения градиента?
Всем привет.
Мне нужна помощь с созданием эффекта свечения градиента, похожего на тот, что используется на сайте.

Эффект свечения градиента можно создать с помощью CSS, комбинируя градиентные фоны, тени и размытие. Наиболее эффективные методы включают использование псевдоэлементов ::before и ::after с filter: blur() для создания мягкого свечения, а также слояние нескольких box-shadow с градиентными цветами.

Содержание

Базовые техники создания свечения градиента

Для создания эффекта свечения градиента существует несколько фундаментальных подходов, которые можно комбинировать для достижения желаемого результата.

Использование box-shadow с градиентами

Самый простой способ создать градиентное свечение — это использовать box-shadow с градиентными значениями. Однако прямой градиент в box-shadow не поддерживается, поэтому приходится использовать обходные пути.

css
.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 с градиентными эффектами:

css
.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.


Продвинутые методы с псевдоэлементами

Более сложные и эффектные градиентные свечения создаются с использованием псевдоэлементов, что позволяет создавать многослойные эффекты.

Двойной псевдоэлемент подход

Этот метод использует два псевдоэлемента для создания внешнего градиента и внутреннего размытого свечения:

css
.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 и создает впечатляющий эффект свечения вокруг элемента.

Тройная структура для максимального эффекта

Для еще более выразительных эффектов можно использовать три слоя: основной контент, градиентная рамка и размытый фон:

css
.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 анимации.

Пульсирующее свечение

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 переменные:

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 возможности для создания сложных анимированных эффектов.


Практические примеры и код

Полный пример для карточки с градиентной рамкой

html
<div class="card">
  <div class="glow"></div>
  <h1>Заголовок</h1>
  <p>Описание карточки с эффектом свечения</p>
</div>
css
.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 и демонстрирует создание карточки с анимированной градиентной рамкой.

Эффект свечения для кнопок

css
.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);
}

Оптимизация производительности

При работе с градиентными эффектами свечения важно учитывать производительность.

Советы по оптимизации

  1. Используйте will-change для анимированных элементов:
css
.glow-element {
  will-change: transform, filter;
}
  1. Ограничивайте количество слоев:

    • Минимизируйте количество псевдоэлементов
    • Используйте разумные значения размытия
  2. Выбирайте правильные свойства:

    • transform и opacity лучше анимируются, чем width и height
    • filter: blur() может быть ресурсоемким на мобильных устройствах
  3. Используйте contain для изоляции:

css
.isolated-glow {
  contain: layout style paint;
}

Советы по оптимизации основаны на исследованиях Subframe.


Совместимость с браузерами

При создании градиентных эффектов свечения важно учитывать поддержку браузерами.

Вендорные префиксы

Для максимальной совместимости используйте вендорные префиксы:

css
.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-gradient
  • filter: blur()
  • CSS Grid и Flexbox для компоновки
  • CSS Custom Properties (переменные)

Старые браузеры

Для старых браузеров можно использовать запасные варианты:

css
.gradient-glow {
  /* Современный синтаксис */
  background: linear-gradient(45deg, #4158D0, #C850C0, #FFCC70);
  
  /* Запасной вариант для старых браузеров */
  background: #4158D0; /* Однотонный фон */
}

Информация о совместимости взята из обсуждений на StackOverflow и CodePen.


Заключение

Создание эффекта свечения градиента — это мощный способ визуально выделить элементы на веб-странице. Ключевые моменты, которые стоит запомнить:

  1. Основные техники: Используйте комбинацию псевдоэлементов ::before и ::after с filter: blur() для создания многослойных эффектов свечения.
  2. Градиентные комбинации: Экспериментируйте с разными типами градиентов (linear-gradient, radial-gradient, conic-gradient) для уникальных визуальных эффектов.
  3. Анимация: Добавляйте CSS анимации для создания динамических эффектов пульсации или вращения градиентов.
  4. Производительность: Следите за оптимизацией, особенно на мобильных устройствах, ограничивая количество слоев и используя will-change.
  5. Совместимость: Всегда тестируйте в разных браузерах и используйте вендорные префиксы для широкой поддержки.

Эти техники помогут вам создавать впечатляющие градиентные эффекты свечения, которые будут привлекать внимание пользователей и подчеркивать важные элементы вашего интерфейса. Начните с простых примеров и постепенно усложняйте эффекты по мере приобретения опыта.

Источники

  1. 57 CSS Glow Effects | FreeFrontend
  2. Glowing Gradient Border Effects with HTML & CSS | Plantpot
  3. Advanced glows in CSS | WeAreIDA Medium
  4. 10 CSS Glow Effect Examples | Subframe
  5. 47 Best Glowing Effects in CSS [2025] | LambdaTest
  6. PURE CSS GLOWING GRADIENT BORDER | CodePen
  7. CSS Gradient Border Glowing Animation Hover Effect | TheCoderAshok
  8. Create an animated, glowing, gradient border with CSS | YouTube
  9. CSS Animated Glowing Gradient Border Effects | YouTube
  10. Make an animated glowing border effect with CSS | YouTube
Авторы
Проверено модерацией
Модерация