В этой статье я покажу как просто добавить svg иконки на сайт, написанном на ангуляре (как пример).

Что необходимо:

ворчание / глоток для автоматизации;

svg иконки.

Мы будем собирать из иконок svg спрайт, который необходимо добавить на страницу, а в нужных местах будем использовать для вставки иконки. Подробнее о способе читайте здесь.

Почему svg лучше иконочных шрифтов читайте предыдущую статью.

Для создания спрайта используем плагин «svgstore».

Вот настройки для ворчание:

svgstore: {
  options: {
    prefix: 'svg-', // добавляем префикс к id = префикс + название файла / <g id="svg-myicon">
    svg: {
      style: 'display: none;' // по умолчанию скрываем наш спрайт
    }
  },
  default: {
    files: {
      '/here/our/sprite-svg.svg': ['app/images/svg-icon/*.svg'] // название спрайта и путь к нему : [путь откуда брать svg иконки для спрайта]
    }
  }
}

Указываем папку откуда собирать иконки и название полученного спрайта.

Далее необходимо добавить спрайт на страницу.

В ангуляре это можно сделать так:


<div ng-include src="'/path/to/our/sprite-svg.svg'"></div>

Что использовать иконку необходимо писать конструкцию типа:

<svg class="svg-icon svg-icon--myicon">
  <use xlink:href="#svg-myicon"></use>
</svg>

Но благодаря директивам в ангуляре мы можем это писать удобнее и проще:

<icon label="myicon" width="20px" height="20px"></icon>

Вот пример как это можно реализовать через директиву:

/**
 * Directive for using svg icons
 *
 * @param {number} width (default: 20px) use own width, example: <icon label="bin" width="50px"></icon>
 * @param {number} height (default: 20px) use own height, example: <icon label="bin" height="50px"></icon>
 * @param {String} label (required) name for icon (name of svg file in folder 'images/svg-icon/')
 * @param {String} fill (default: currentColor) icon's color
 *
 */
(function() {
  angular
    .module('myApp')
    .directive('wxIcon', wxIcon);

  function wxIcon() {
    var directive = {
      restrict: 'E',
      replace: true,
      scope: {
        label: '@',
        width: '@',
        height: '@',
        fill: '@'
      },
      link: IconLink,
      template: '<svg class="svg-icon svg-icon--{{ label }}"><use ng-attr-width="{{ iconWidth }}" ng-attr-fill="{{ iconFill }}" ng-attr-height="{{ iconHeight }}" xlink:href="{{ link }}" /></svg>'
    };

    function IconLink(scope) {
      var SIZE = '20px';
      var COLOR = 'currentColor';

      scope.link = '#svg-' + scope.label;
      scope.iconWidth = (scope.width) ? scope.width : SIZE;
      scope.iconHeight = (scope.height) ? scope.height : SIZE;
      scope.iconFill = (scope.fill) ? scope.fill : COLOR;
    }

    return directive;
  }
})();

И используем на странице.

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

Не забудьте стили добавить:

.svg-icon {
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 20px;
  color: currentColor;
}

.svg-icon--myicon {
  // здесь стили для конкретной иконки
}

 

ЧИТАТЬ  Крупнейший в мире поставщик ПК делает первый шаг к тому, чтобы стать крупнейшим конкурентом Android Windows, вытесняя при этом Google ChromeOS

Вот так не сложно можно добавить вектора на свой сайт. Думаю пользователи скажут вам спасибо.

Нагенерировать себе бесплатных иконок можно на

Надеюсь полезно было. Если есть варианты улучшить пишите в комментариях .



Source link