두피만
FE 던지기
두피만
전체 방문자
오늘
어제
  • 분류 전체보기
    • 기술 경험
    • 기술에 대한 생각들
    • 회고록
    • 프로그라피
    • 구 게시글
      • 백엔드 찍먹
      • 삽질
      • React
      • 라이브러리 소개
      • Breaking 프로젝트

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그라피
  • typescript
  • 노드버드
  • 상태관리
  • query string
  • 프론트엔드
  • 리엑트 노드버드
  • 삽질
  • JS로 React 구현하기
  • 아이디어 도출
  • 서비스 발전 과정
  • react-query
  • react
  • 전역상태
  • 셀프다이닝
  • Redux
  • Modal
  • 프로그라피 React
  • 프로그라피 8기
  • SVG

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
두피만

FE 던지기

SVG 태그
구 게시글/React

SVG 태그

2022. 5. 22. 23:24

이번 프로젝트를 하면서 처음으로 SVG태그라는 것을 보았다 평소에 fontawsome에서 아이콘을 쓰고 있었는데 여기에 SVG태그가 사용이 되고 있었고 클론 코딩 중에 SVG태그를 사용할 일이 생겨서 한번 찾아보았다

 

 

 

 

SVG 만능설

이 svg태그는 백터형 이미지 포맷이다 이와 비교되는 것으로는 이미지 파일(jpg,png등) 이 있다. 이 둘의 차이점을 보면

 

이미지 파일을 이루는 것은 작은 픽셀이어서 크기를 키울수록 픽셀이 깨지는 화질 차이가 나지만 svg는 백터로써 크기가 변해도 화질이 깨지지 않는다 svg는 각 좌표에 점을 찍어서 이으는 개념으로 만들어지기 때문이다 그렇다 보니 이미지 파일은 이 픽셀을 저장하기 위해 용량이 svg파일보다 상대적으로 크다.

svg파일은 점을 찍어서 이으는 개념인 백터이므로 애니메이션을 설정할 수 있다. 또한 html태그로 있어 별도의 파일없이 html에 인라인으로 들어갈 수 있다.

 

간단한 정리

  이미지파일 svg
표현 방식 픽셀 백터
용량(상대적으로) 큼 작음
파일여부 저장 파일에서 불러와야함 html에 inline으로 들어감

 

 

 

SVG 태그 사용하기

 

아이콘을 사용하다보면 크기를 똑같이 맞춰야 한다 svg도 마크업 스타일 속성이라 다른 태그와 마찬가지로 css 적용이 된다

<svg witdth="17px" height="17px" preserveAspectRatio="none"></svg>

preserveAspectRatio="none" 속성으로 크기를 강제로 늘리거나 줄일 수 있다. 서로 다른 아이콘의 크기를 맞출 때 사용했다.

 

<svg width="current" height="current">...</svg>

크기를 current로 맞춰주면 React 컴포넌트에서 props를 통해서 크기를 지정해줄수 있다.

 

 

 

 

React에서 사용하기

 

svg파일을 직접 html에 넣어 사용할수 있지만 react에서 사용할 때는 svg폴더를 따로 분류해서 사용을 하였다 따라서 이 svg파일을 import 해야 했다 이는 컴포넌트의 형태로 받아서 사용할 수 있다.

import { ReactComponent as GithubIcon } from '../../svg/github.svg';


<GithubIcon/>//으로 아이콘 사용가능

 

이 방법의 장점으로는 이 svg파일이 컴포넌트이므로 styledcomponent시에 css를 입힐수 있다.

 

const githubCSS = styled(GithubIcon)`
`

 

 

 

 

 

번외) SVG태그 훔쳐오기

 

클론코딩할때 유용하다

깃허브 상단에 있는 navbar이다

위에 깃허브 아이콘을 가져오고 싶다고 하자

 

f12를 눌러 개발자 도구에서 저 아이콘을 선택하면

깃허브 아이콘의 svg태그

대충 이러한 svg 태그가 선택이 된다

 

svg태그에서 오른쪽 클릭을 하고 copy element를 한 후에 사용하고 싶은 파일에 붙여 넣기 하면 된다 말했듯이 svg태그는 백터로 이루어져 있어 코드만 가져오면 어디서든 같은 결과물을 얻을 수 있다.

 

 

 

 

 

 

 

 

추후 애니메이션 기능을 사용하면 한번 적어보도록 하겠다

'구 게시글 > React' 카테고리의 다른 글

JS 프로젝트 TS로 마이그레이션하기  (0) 2022.11.25
CSR SSR SSG(NEXT JS) SPA MPA 정리  (0) 2022.06.19
React 상태관리와 불변성  (0) 2022.05.29
props로 modal관리는 이제 그만  (0) 2022.05.17
    '구 게시글/React' 카테고리의 다른 글
    • JS 프로젝트 TS로 마이그레이션하기
    • CSR SSR SSG(NEXT JS) SPA MPA 정리
    • React 상태관리와 불변성
    • props로 modal관리는 이제 그만
    두피만
    두피만

    티스토리툴바