Nuxt.js + ikonate (npm 패키지의 svg 파일로드)
나는 최근 트렌드에 오르고 있던, ikonate 라고 하는 svg인 icon 라이브러리를 이용할 때에 빠졌습니다.
단지 표시하는 것만이라면,
img
태그의 src
에 지정하면 됩니다만, 색이나 스케일을 변화시키고 싶은 경우, 이 방법이라고 어려운 것 같습니다.참고 : 【Vue】 svg 이미지를 그대로 출력하여 색을 바꾼다
vue-svg-inline-loader
vue-svg-inline-loader 를 사용하면, 색의 지정이나 스케일이 가능한 상태로 svg 파일을 draw 할 수가 있습니다.
이번에 구현한 프로젝트는 reireias/nuxt-ikonate-example 에서 공개하고 있습니다.
환경
이번에 사용한 라이브러리의 버전은 아래와 같습니다.
프로젝트 만들기
프로젝트를 만들겠습니다.
yarn create nuxt-app nuxt-ikonate-example
# 選択肢は適当に(例ではvuetifyを利用しています)
vue-svg-inline-loader 및 ikonate를 추가합니다.
yarn add -D vue-svg-inline-loader
yarn add ikonate
vue-svg-inline-loader의 README에 따라
nuxt.config.json
에 설정을 추가합니다.nuxt.config.json
build: {
...
extend(config, ctx) {
// Run ESLint on save
if (ctx.isDev && ctx.isClient) {
config.module.rules.push({
enforce: 'pre',
test: /\.(js|vue)$/,
loader: 'eslint-loader',
exclude: /(node_modules)/
})
}
// vue-svg-inline-loader
const vueRule = config.module.rules.find(rule => rule.test.test('.vue'))
vueRule.use = [
{
loader: vueRule.loader,
options: vueRule.options
},
{
loader: 'vue-svg-inline-loader'
}
]
delete vueRule.loader
delete vueRule.options
}
...
※ Vue.js의 경우는 vue-svg-inline-loader의 README에 쓰여진 설정을 참고해 주십시오.
svg 파일 불러오기
그리고는 아래와 같이
img
태그에 svg-inline
속성을 추가해 읽어들일 때, 표시됩니다.이 상태라면 css에 의한 색의 지정도 효과가 있습니다.
pages/index.vue
<template>
<v-layout column justify-center align-center>
<v-flex xs12 sm8 md6>
<div class="text-xs-center">
<h1>Nuxt.js + ikonate example</h1>
<img
svg-inline
svg-sprite
class="ikonate ikonate-red"
width="24px"
height="24px"
src="ikonate/icons/activity.svg"
/>
<p>24px</p>
<img
svg-inline
svg-sprite
class="ikonate ikonate-green"
width="32px"
height="32px"
src="ikonate/icons/chart.svg"
/>
<p>32px</p>
<img
svg-inline
svg-sprite
class="ikonate ikonate-blue"
width="48px"
height="48px"
src="ikonate/icons/camera.svg"
/>
<p>48px</p>
</div>
</v-flex>
</v-layout>
</template>
<style>
.ikonate {
fill: none;
}
.ikonate-red {
stroke: red;
}
.ikonate-green {
stroke: green;
}
.ikonate-blue {
stroke: blue;
}
</style>
상기 페이지를 표시하면 아래와 같이 표시됩니다.
요약
Nuxt.js에서 svg 파일을 색상 및 크기를 변경할 수 있는 상태로 로드할 수 있었습니다.
Reference
이 문제에 관하여(Nuxt.js + ikonate (npm 패키지의 svg 파일로드)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/reireias/items/04944cc830aab4bb427f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)