Редактируемая система SVG-иконок | Vue.js

Простой пример

Есть множество способов создания системы SVG-иконок (SVG Icon System), но один из способов, который использует возможности Vue — создание редактируемых встроенных иконок в виде компонентов. Некоторые преимущества подобного подхода:

  • Их легко редактировать «на лету»
  • Они анимируются
  • Можно использовать обычные входные параметры, со значениями по умолчанию, для сохранения стандартного размера или изменения по необходимости
  • Они встраиваемые, поэтому HTTP-запросы не требуются
  • Они могут быть доступны динамически

Создадим сначала каталог для всех иконок и назовём каждую в едином стиле, чтобы облегчить их поиск:

  • components/icons/IconBox.vue
  • components/icons/IconCalendar.vue
  • components/icons/IconEnvelope.vue

Вот репозиторий с примером для начала работы, где можно увидеть готовую настройку: https://github. com/sdras/vue-sample-svg-icons/ (opens new window)

Теперь создадим компонент базовой иконки (IconBase.vue), который использует слот:

<template>
  <svg xmlns="http://www.w3.org/2000/svg"
    :width="width"
    :height="height"
    viewBox="0 0 18 18"
    :aria-labelledby="iconName"
    role="presentation"
  >
    <title
      :id="iconName"
      lang="en"
    >
      {{ iconName }} icon
    </title>
    <g :fill="iconColor">
      <slot />
    </g>
  </svg>
</template>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Можно использовать эту базовую иконку «как есть», но необходимо обновлять

viewBox в зависимости от viewBox показываемой иконки. В базовом компоненте определяем входными параметрами width, height, iconColor и имя иконки, чтобы динамически их обновлять. Имя используем для содержимого <title> и для id для лучшей доступности.

Секция script станет выглядеть следующим образом: некоторые значения останутся по умолчанию, поэтому иконка будет отрисовываться всегда одинаково, пока не изменим её:

export default {
  props: {
    iconName: {
      type: String,
      default: 'box'
    },
    width: {
      type: [Number, String],
      default: 18
    },
    height: {
      type: [Number, String],
      default: 18
    },
    iconColor: {
      type: String,
      default: 'currentColor'
    }
  }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Заданное по умолчанию свойство currentColor используется для цвета иконки и заставит её наследовать цвет текста. Но можно передать и другой цвет входным параметром, если захотим.

Компонент можно использовать следующим образом, передавая в слот единственным содержимым IconWrite.

vue, содержащим пути внутри иконок:

<icon-base icon-name="write">
  <icon-write />
</icon-base>

1
2
3

Теперь если потребуется несколько иконок с разными размерами — всё очень просто:

<p>
  <!-- можно передавать меньшую `width` и `height` -->
  <icon-base
   
   
    icon-name="write"
  >
    <icon-write />
  </icon-base>
  <!-- или использовать значение по умолчанию, равное 18 -->
  <icon-base icon-name="write"><icon-write /></icon-base>
  <!-- или сделать её немного больше :) -->
  <icon-base
   
   
    icon-name="write"
  >
    <icon-write />
  </icon-base>
</p>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

Анимируемые иконки

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

<template>
  <svg
    @click="startScissors"
    xmlns="http://www.w3.org/2000/svg"
    viewBox="0 0 100 100"
   
   
    aria-labelledby="scissors"
    role="presentation"
  >
    <title
     
      lang="en"
    >
      Анимированная иконка с ножницами
    </title>
    <path
     
      fill="#fff"
      d="M0 0h200v100H0z"
    />
    <g ref="leftscissor">
      <path d="M..."/>
      ...
    </g>
    <g ref="rightscissor">
      <path d="M..."/>
      ...
    </g>
  </svg>
</template>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

import { TweenMax, Sine } from 'gsap'
export default {
  methods: {
    startScissors() {
      this. scissorAnim(this.$refs.rightscissor, 30)
      this.scissorAnim(this.$refs.leftscissor, -30)
    },
    scissorAnim(el, rot) {
      TweenMax.to(el, 0.25, {
        rotation: rot,
        repeat: 3,
        yoyo: true,
        svgOrigin: '50 45',
        ease: Sine.easeInOut
      })
    }
  }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Используем refs для групп элементов, которые будем перемещать. Также, так как обе стороны ножницы должны перемещаться вместе, создаём функцию, которую повторно используем при обращении к

refs. Использование библиотеки GreenSock помогает разрешить поддержку анимации и проблемы с transform-origin во всех браузерах.

See the Pen Editable SVG Icon System: Animated icon by Vue (@Vue) on CodePen.

Довольно легко сделано! И легко обновлять «на лету».

Больше анимационных примеров можно посмотреть в репозитории (opens new window)

Дополнительные замечания

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

Когда не следует этого делать

Подобная система SVG-иконок действительно полезна, когда есть несколько иконок, которые используются по-разному на всём сайте. Но если дублируете одну и ту же иконку много раз на одной странице (например иконку удаления во всех строках гигантской таблицы), может имеет больше смысла сделать спрайты, скомпилированные в лист, а затем использовать теги <use> для их загрузки.

Альтернативные варианты

Другие инструменты для помощи в управлении SVG-иконками включают:

  • svg-sprite-loader (opens new window)
  • svgo-loader (opens new window)

Эти инструменты собирают SVG-иконки на этапе компиляции, что добавляет сложности для редактирования во время выполнения, потому что теги <use> могут иметь странные баги с кроссбраузерностью при выполнении чего-то сложного. Они также оставляют с двумя вложенными свойствами viewBox, а значит и двумя системами координат. Это делает реализацию несколько сложнее.

Набры иконок для сайта (svg, вектор)

Найдено шаблонов: 36

  • Цена
  • Дата
  • Рейтинг

Показать еще

Наборы иконок – это готовые навигационные картинки для сайтов, созданные в одной тематике профессиональными веб-дизайнерами.

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

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

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

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

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

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

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

Этот сайт использует файлы cookie. Продолжая использовать этот сайт, закрывая этот баннер или нажав «Я согласен», вы соглашаетесь c Политикой конфиденциальности.

Я согласен

Скачать бесплатные иконки для веб-дизайна

Скачать бесплатные иконки для веб-дизайна | Переснять Веб-дизайн

SVG

Веб-дизайн

SVG

Веб-дизайн с поддержкой Retina

SVG

Веб-дизайн

SVG

Веб-дизайн

SVG

Веб-дизайн

SVG

Веб-дизайн

SVG

Веб-дизайн

SVG

Веб-дизайн с поддержкой Retina

SVG

Веб-дизайнер

SVG

Параметр

SVG

Успех

SVG

Исправлена ​​ошибка

SVG

HTML-файл

SVG

Веб-сайт

SVG

Запуск ракеты

SVG

Отчет

SVG

Дизайн сайта

SVG

Кодирование

SVG

Слои

SVG

PHP-файл

SVG

Кодирование

SVG

Инструменты дизайна

SVG

Кодирование

SVG

Сайт с ошибкой

SVG

Разработка

SVG

Пантоне

SVG

Ошибка

SVG

Пароль

SVG

Карта сайта

SVG

Веб-слой

SVG

Домен

SVG

Ошибка

SVG

HTML-код

SVG

Кодирование

SVG

Веб-программирование

SVG

Инструмент выделения

SVG

Разработка

SVG

Настройка дисплея

SVG

Разработать приложение

SVG

Контрольный список

SVG

Разработка приложений

SVG

Облачная безопасность

SVG

Домашняя страница

SVG

Персональный сайт

SVG

Веб-безопасность

SVG

Программирование

SVG

Инструменты

SVG

Блок-схема

SVG

JS-код

SVG

Предупреждение о веб-сайте

SVG

Программирование

SVG

Облачный код

SVG

Кодирование

SVG

Кодирование

SVG

CSS-код

SVG

Разработка

SVG

Поиск

SVG

C-код

SVG

Обновить

SVG

Фо файл

SVG

Блок-схема

SVG

C-код

SVG

Файл кода

SVG

Кодирование

SVG

HTML

SVG

Обслуживание

SVG

Контрольный список

SVG

Дизайн приложений

SVG

Компьютерное веб-кодирование

SVG

Цель

SVG

Веб-видео

SVG

Скорость сайта

SVG

Разработка

SVG

Финансы

SVG

HTML

SVG

Взаимодействие

SVG

Веб-макет

SVG

Развивать

SVG

Php-код

SVG

Наш сайт отличный, за исключением того, что мы не поддерживаем ваш браузер. Мы рекомендуем использовать последнюю версию Гугл Хром, Мозилла Фаерфокс, Microsoft Edge или Яблочное сафари.

Использование значков SVG · Веб-разработка 3 · Изучение Интернета

Цель

Мы рассмотрим создание листа спрайтов SVG с некоторыми значками внутри. Затем мы будем использовать значки на веб-сайте в простом макете.

Вот как это должно выглядеть, когда это будет сделано:

  1. Напечатайте, напечатайте очень хорошо

    Помните, что цель этого урока состоит в том, чтобы напечатать код самостоятельно, создав мышечную память пальцами. !

Форк и клон

Начните урок с разветвления и клонирования репозитория с использованием svg-icons .

Разветвить и клонировать репозиторий «using-svg-icons».

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

  1. Форк, клон и Markbot

    Сюда входит некоторый начальный код, который вы можете получить, разветвив и клонировав репозиторий. Вы будете использовать Markbot, чтобы еще раз проверить, все ли сделано правильно.

Загрузка ресурсов

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

Загрузите файлы «using-svg-icons».

Мы пройдемся по настройке этого документа Illustrator вместе, поэтому нет необходимости что-либо делать с ним сразу.

  1. Загрузки

    Загрузка будет включать в себя такие вещи, как изображения, PSD, AI и т. д., которые нам нужны для урока, которые слишком велики для Git и GitHub.

1 Настройка проекта

После подворока, клонирования и загрузки мы должны иметь структуру папки, такая как это:

  1. с использованием SVG-ICONS-ILSLENON 9000 2 .

    dino-icons.ai

  2. using-svg-icons0177

    css

  3. main.css

  4. modules.css

  5. images

  1. Make an index.html & add the boilerplate code.
  2. Создайте main.css в папке css — она может оставаться пустой.
  3. Создайте modules.css в папке css — получите новую версию от Modulifier. Обязательно нажмите «Выбрать все».
  4. Создайте папку изображений .
  1. Соглашения об именах

    Не забывайте соблюдать соглашения об именах.

  2. HTML snippets

    Create the boilerplate with html5 , viewport , css

2 Organize the Illustrator file

The first step to using SVG icons is to organize the Illustrator document so его можно экспортировать правильно.

Способ экспорта значков ничем не отличается от стандартного SVG: измените размер и назовите монтажные области.

Откройте файл Illustrator, и вы должны увидеть это:

Наш первый шаг — создать несколько монтажных областей — каждая монтажная область должна быть 256px × 256px

находятся на отдельных артбордах. Я изменил размер каждого значка на 252px в ширину.

Я назвал каждую монтажную область следующим образом:

  1. брахиозавр
  2. микропахицефалозавр
  3. велоцираптор

Последнее изменение, которое нам нужно сделать

. Поскольку мы заинтересованы в окрашивании значков в нашем CSS и хотим иметь разные цвета при наведении, нам нужно удалить цвета заливки в Illustrator.

Самый простой способ удалить цвета заливки при экспорте из Illustrator — установить для всех их цветов черный цвет — абсолютно черный, #000000 . По умолчанию заливка в SVG черная, поэтому оптимизатор отключит заливку.

Конечно, вы можете удалить цвет заливки в Illustrator, но тогда вы не сможете увидеть графику, и это просто раздражает.

Если вы хотите разноцветные или разноцветные значки, оставьте заливку.

3 Экспорт SVG

Теперь мы готовы экспортировать SVG из Illustrator. Перейти к:

 Файл > Экспорт > Экспорт для экранов…
 

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

Если вы еще не использовали «Экспорт для экранов», см. это руководство.

Обязательно задайте правильное расположение вывода: папка images внутри папки using-svg-icons .

  1. Сочетание клавиш

    Экспорт для экранов: ⌥⌘E

4 Generate a sprite sheet

We should now have 3 completely separate SVG files in our SVG folder, looking like this:

  1. using-svg-icons

  2. Индекс. HTML

  3. CSS

  4. Image.0177

    micropachycephalosaurus.svg

  5. velociraptor.svg

Поместите все 3 изображения в Spritebot — который сожмет изображения для нас и оптимизирует.

Когда Spritebot будет готов, мы хотим объединить все SVG в один файл. Это называется листом спрайтов. Преимущество заключается в производительности: меньше загрузок и более быстрые веб-сайты.

После того, как мы создали и сохранили лист спрайтов, исходная графика SVG бесполезна — удалите ее.

Теперь мы готовы использовать иконки в нашем HTML!

5 Напишите HTML-код

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


<тело>
  <ул>
    
  • <а href="#"> <я> svg#brachiosaurus"> Брахиозавр
  • Убедитесь, что вы правильно написали идентификатор в xlink:href="" — Spritebot всегда делает идентификатор таким же, как исходное имя файла, которое вы использовали для создания листа спрайтов.

    Идите вперед и поместите еще 2

  • метки
  • #MICROPACHYCEPHALOSAURUS
  • #LALOCIRAPTOR
  • #l буду использовать и класс .icon , чтобы определить поле, окружающее наши значки SVG.

  • Строка I

    Теперь тег . Внутри него у нас есть тег , который указывает на наше изображение.

    Атрибут xlink:href="" в теге сопоставим с атрибутом src="" в теге .

    Есть несколько важных деталей, на которые стоит обратить внимание:

    1. images/dino-icons.svg — это путь к файлу изображения листа спрайтов.
    2. #brachiosaurus — это идентификатор, который Spritebot присвоил значку на листе спрайтов. Идентификатор значка всегда совпадает с именем файла.
  • 6 Предварительный просмотр в браузере с «localhost»

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

    Или нет…

    Если вы используете Firefox или Safari, значки должны загрузиться сразу. Chrome имеет более жесткие ограничения безопасности и требует, чтобы мы использовали веб-сервер, чтобы увидеть значки.

    К счастью, в Markbot встроен веб-сервер, который можно использовать во время веб-разработки.

    Нажмите кнопку «Обзор веб-сайта» на панели инструментов или в меню Файл перейдите к пункту Просмотреть локальный веб-сайт ( ⌘B ) — откроется браузер по умолчанию с URL-адресом вашего проекта. с веб-сервером.

    URL-адрес, скорее всего, будет следующим: https://localhost:8000/ .

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

    Вы никогда не должны обходить это сообщение об ошибке на веб-сайтах. В этой ситуации все в порядке, потому что мы загружаем наш тестовый сервер «localhost».

    Итак, нажмите «ДОПОЛНИТЕЛЬНО».

    Затем нажмите «Перейти к локальному хосту (небезопасно)».

    Теперь мы должны увидеть наши иконки!

    7 Добавить цвета и курсоры

    Наши значки в настоящее время используют цвета ссылок по умолчанию: синий и фиолетовый. (Если щелкнуть по ним, все они станут фиолетовыми.)

    Итак, давайте добавим немного CSS, чтобы лучше раскрасить ссылки.

    Автор записи

    Добавить комментарий

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