찾다
웹 프론트엔드CSS 튜토리얼VUE 용 글꼴 모양의 SVG 아이콘 시스템

VUE 용 글꼴 모양의 SVG 아이콘 시스템

vue.js에서 아이콘을 관리하는 것은 까다로울 수 있습니다. 아이콘 글꼴은 편리하지만 사용자 정의 유연성이 부족하며 이진 특성으로 인해 버전 제어가 악몽이 될 수 있습니다. SVG는 우수한 솔루션을 제공하지만 사용 편의성과 효율적인 관리에는 신중한 접근이 필요합니다.

이 기사는 단순성과 유지 관리에 중점을 둔 vue.js 응용 프로그램을위한 이상적인 SVG 아이콘 시스템을 제시합니다.

  • 아이콘 추가/제거 : 지정된 폴더에서 SVG를 추가하거나 삭제하기 만하면됩니다.
  • 사용법 : 간단한 구문으로 템플릿에서 아이콘을 사용합니다<svg-icon icon="rocket"></svg-icon> .
  • 스타일링 : CSS font-sizecolor 특성을 사용하여 스케일 및 컬러 아이콘, 아이콘 글꼴 동작을 모방합니다.
  • 최적화 : 동일한 아이콘의 여러 인스턴스에 대한 SVG 코드 복제를 피합니다.
  • 웹 팩 통합 : 웹 팩 구성 변경이 필요하지 않습니다.

이 시스템은 두 개의 작은 단일 파일 VUE 구성 요소를 사용하여 구축되며 다음을 필요로합니다.

  • Webpack : Vue Cli를 사용하는 경우 가정했습니다.
  • svg-inline-loader : npm install svg-inline-loader --save-dev . 이 로더는 SVG 코드의 불필요한 부분을 정리합니다.

SVG 스프라이트 구성 요소 ( SvgSprite.vue )

SVG 코드 반복을 방지하기 위해 다른 모든 SVG 아이콘이 포함 된 숨겨진 SVG 인 SVG 스프라이트를 만듭니다. 아이콘은<use></use> 아이콘 ID를 참조하는 태그 :<svg><use xlink:href="#rocket"></use></svg> . SvgSprite 구성 요소는 이것을 구현합니다.

<template>
  <svg height="0" style="display: none;" v-html="$options.svgSprite" width="0"></svg>
</template>

<script>
const svgContext = require.context(
  '!svg-inline-loader?'  
  'removeTags=true'   // Remove title tags, etc.
  '&removeSVGTagAttrs=true'   // Remove attributes
  '&removingTagAttrs=fill'   // Remove fill attributes
  '!@/assets/icons', // Icon directory
  true, // Search subdirectories
  /\w \.svg$/i // Only include SVG files
);

const symbols = svgContext.keys().map(path => {
  const id = path.replace(/^\.\/(.*)\.\w $/, '$1'); // Extract ID from filename
  const content = svgContext(path); // Get SVG content
  return content.replace('<svg', `<symbol id="${id}"`).replace('svg>', 'symbol>'); // Convert to symbol
});

export default {
  name: 'SvgSprite',
  svgSprite: symbols.join('\n'), // Concatenate symbols
};
</script>

템플릿에는 숨겨진 것을 포함합니다<svg></svg> 컨텐츠가 $options.svgSprite 에 의해 동적으로 생성되는 요소 .svgsprite. 스크립트는 svg-inline-loader 사용하여 require.context 사용하여 SVG를 처리하고 불필요한 태그와 속성을 제거합니다. 그런 다음 각 SVG를 a로 변환합니다<symbol></symbol> 고유 한 ID 추가 요소.

이 구성 요소를 App.vue 파일의 상단에 배치하십시오.

아이콘 구성 요소 ( SvgIcon.vue )

SvgIcon 구성 요소는 더 간단합니다<use></use> 스프라이트에서 아이콘을 참조하는 태그 :

<template>
  <svg class="icon" :class="{ 'icon-spin': spin }">
    <use :xlink:href="`#${icon}`"></use>
  </svg>
</template>

<script>
export default {
  name: 'SvgIcon',
  props: {
    icon: { type: String, required: true },
    spin: { type: Boolean, default: false },
  },
};
</script>

<style scoped>
svg.icon {
  fill: currentColor;
  height: 1em;
  margin-bottom: 0.125em;
  vertical-align: middle;
  width: 1em;
}
svg.icon-spin {
  animation: icon-spin 2s infinite linear;
}
@keyframes icon-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(359deg); }
}
</style>

CSS는 아이콘 스타일을 아이콘 글꼴처럼 작동하여 쉽게 색상과 크기 조정을 가능하게합니다. spin 소품은 애니메이션을 추가합니다.

이 구성 요소를 main.js 에 등록하십시오.

 'vue'에서 Vue 가져 오기
'@/components/svgicon.vue'에서 svgicon 가져 오기
vue.component ( 'svg-icon', svgicon)

이 시스템은 vue.js 응용 프로그램에서 SVG 아이콘을 관리하기위한 깨끗하고 효율적이며 쉽게 유지 관리 가능한 솔루션을 제공합니다. 추가 개선에는 비 선명 종횡비 처리 및 더 넓은 프레임 워크/빌드 도구 호환성이 포함될 수 있습니다.

위 내용은 VUE 용 글꼴 모양의 SVG 아이콘 시스템의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
CSS 그리드는 무엇입니까?CSS 그리드는 무엇입니까?Apr 30, 2025 pm 03:21 PM

CSS 그리드는 복잡하고 반응이 좋은 웹 레이아웃을 만드는 강력한 도구입니다. 디자인을 단순화하고 접근성을 향상 시키며 이전 방법보다 더 많은 제어를 제공합니다.

CSS Flexbox 란 무엇입니까?CSS Flexbox 란 무엇입니까?Apr 30, 2025 pm 03:20 PM

기사는 반응 형 설계에서 공간의 효율적인 정렬 및 분포를위한 레이아웃 방법 인 CSS Flexbox에 대해 설명합니다. Flexbox 사용을 설명하고 CSS 그리드와 비교하고 브라우저 지원 세부 사항을 설명합니다.

CSS를 사용하여 웹 사이트를 반응하게 만드는 방법은 무엇입니까?CSS를 사용하여 웹 사이트를 반응하게 만드는 방법은 무엇입니까?Apr 30, 2025 pm 03:19 PM

이 기사는 Viewport Meta 태그, 유연한 그리드, 유체 미디어, 미디어 쿼리 및 상대 장치를 포함하여 CSS를 사용하여 반응 형 웹 사이트를 만드는 기술에 대해 설명합니다. 또한 CSS 그리드 및 Flexbox를 함께 사용하여 CSS 프레임 워크를 권장합니다.

CSS 박스 크기 부동산은 무엇을합니까?CSS 박스 크기 부동산은 무엇을합니까?Apr 30, 2025 pm 03:18 PM

이 기사는 요소 치수 계산 방법을 제어하는 ​​CSS 박스 크기 속성에 대해 설명합니다. Content-Box, Border-Box 및 Padding-Box와 같은 값과 레이아웃 설계 및 형태 정렬에 미치는 영향을 설명합니다.

CSS를 사용하여 어떻게 애니메이션 할 수 있습니까?CSS를 사용하여 어떻게 애니메이션 할 수 있습니까?Apr 30, 2025 pm 03:17 PM

기사는 CSS, 주요 특성 및 JavaScript와 결합 된 애니메이션 작성에 대해 논의합니다. 주요 문제는 브라우저 호환성입니다.

CSS를 사용하여 프로젝트에 3D 변환을 추가 할 수 있습니까?CSS를 사용하여 프로젝트에 3D 변환을 추가 할 수 있습니까?Apr 30, 2025 pm 03:16 PM

기사는 3D 변환, 주요 속성, 브라우저 호환성 및 웹 프로젝트에 대한 성능 고려 사항에 대한 CSS 사용에 대해 논의합니다. (문자 수 : 159)

CSS에 기울기를 추가 할 수있는 방법은 무엇입니까?CSS에 기울기를 추가 할 수있는 방법은 무엇입니까?Apr 30, 2025 pm 03:15 PM

이 기사는 CSS 그라디언트 (선형, 방사형, 반복)를 사용하여 웹 사이트 비주얼을 향상시키고 깊이, 초점 및 현대적인 미학을 추가합니다.

CSS의 의사 요소는 무엇입니까?CSS의 의사 요소는 무엇입니까?Apr 30, 2025 pm 03:14 PM

기사는 CSS의 의사 요소, HTML 스타일을 향상시키는 데 사용 및 의사 급의 차이점에 대해 설명합니다. 실제 사례를 제공합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구