Как сделать свечение SVG-иконки?

Ссылка скопирована
14 марта 2026 1 ответ

Есть React-приложение, в котором SVG-иконки добавляются через mask.
<i className="icon-add-user" />

%icon {     display: inline-block;     mask-position: center center;     mask-size: 100%;     mask-repeat: no-repeat;     width: 24px;     height: 24px;     background-color: #ffffff; }  .icon-add-user {     @extend %icon;     mask-image: url(../svg/add-user.svg); }

%icon { display: inline-block; mask-position: center center; mask-size: 100%; mask-repeat: no-repeat; width: 24px; height: 24px; background-color: #ffffff; } .icon-add-user { @extend %icon; mask-image: url(../svg/add-user.svg); }

Как мне сделать иконки со свечением как на картинке?

Как сделать свечение SVG-иконки?

Как это реализовать в React-приложении? И как это сделать наиболее декларативным способом, чтобы просто передать в компонент имя иконки, а не делать отдельный компонент для каждой SVG (на данный момент их 30)?

Дополнительно:

Не ясна реализация

  • Видимо, не вставлять масками
  • Ankhena, спасибо, конечно, но вопрос стоит "как сделать?", а не "как не надо делать?". Если у вас есть более содержательные мысли на этот счет, был бы благодарен!
  • Максим, есть множество svg-иконок, которые вставляются следующим образом
    <i className="icon-add-user" />
    %icon {     display: inline-block;     mask-position: center center;     mask-size: 100%;     mask-repeat: no-repeat;     width: 24px;     height: 24px;     background-color: #ffffff; }  .icon-add-user {     @extend %icon;     mask-image: url(../svg/add-user.svg); }

    %icon { display: inline-block; mask-position: center center; mask-size: 100%; mask-repeat: no-repeat; width: 24px; height: 24px; background-color: #ffffff; } .icon-add-user { @extend %icon; mask-image: url(../svg/add-user.svg); }

    Теперь появилась необходимость сделать иконки со свечением

    Как сделать свечение SVG-иконки?

    Вопрос: как это реализовать в React-приложении? И как это сделать наиболее декларативным способом, чтобы просто передать в компонент имя иконки, а не делать отдельный компонент для каждой SVG (на данный момент их 30)?

  • shsv382, да, использовать drop-shadow
  • Ankhena, за drop-shadow спасибо, но тогда вопрос другой: как сделать это более декларативно? То есть, я не хочу для каждой отдельной страницы импортировать отдельно нужные SVG, я хочу сделать компонент, принимающий на входе имя SVG-иконки (либо имя файла), и возвращающий иконку со свечением
  • shsv382, еще один минус вставки через импорт как компонент
    import { ReactComponent as YourSvg } from '../../svg/add-user.svg'; // ... &lt;YourSvg className={styles.glowingIcon} /&gt;

    import { ReactComponent as YourSvg } from '../../svg/add-user.svg'; // ... &lt;YourSvg className={styles.glowingIcon} /&gt;

    заключается в том, что для всех SVG нужно вручную переделывать цвет заливки/обводки, т.к. не все они белые

    Как сделать свечение SVG-иконки?

  • В общем, самое близкое, что удалось реализовать - это скопировать svg в public, поменять всем цвет заливки на белый (fill: #ffffff), и вставлять картинкой, прикрутив drop-shadow (спасибо Ankhena)
    &lt;img src={`svg/${props.name}.svg`} className={styles.glowingIcon} /&gt;

    &lt;img src={`svg/${props.name}.svg`} className={styles.glowingIcon} /&gt;

  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Сергей Миронов Ответ

    Для того чтобы сделать свечение SVG-иконки, можно использовать фильтры в CSS. Ниже приведен пример кода, который позволит добавить эффект свечения к вашей SVG-иконке:

     

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

    Вы также можете настроить параметры фильтра, такие как радиус размытия (stdDeviation) и цвет свечения, чтобы добиться нужного эффекта. Не забудьте изменить значение атрибута "fill" в теге на цвет вашей иконки.

    Надеюсь, это поможет вам добавить свечение к вашей SVG-иконке!

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно