반응 시 svg 이미지에 색상을 추가하는 방법
아이콘 목록이 있습니다.아이콘 색상을 흰색으로 변경하고 싶습니다.기본적으로 아이콘은 검은색입니다.여러분, 추천할 만한 거 있어요?
저는 평소에'fill: white'
근데 리액트에서 하니까...안 돼!
import React from 'react'
import menuIcon from '../img/menu.svg';
import homeIcon from '../img/home.svg';
<ul>
<li>
<a href="/" className="sidebar__link">
<img src={menuIcon} alt="sidebar icon" className="sidebar__icon" />
</a>
</li>
<li>
<a href="/" className="sidebar__link">
<img src={homeIcon} alt="sidebar icon" className="sidebar__icon" />
</a>
</li>
</ul>
.sidebar__icon {
fill: #FFFFF;
width: 3.2rem;
height: 3.2rem;
}
각 아이콘에 대해 React 구성 요소를 생성할 필요가 없도록 이 방법을 사용합니다.문서에 따르면 SVG 파일을 리액트컴포넌트로 Import할 수 있습니다.
import { ReactComponent as Logo } from './logo.svg';
const App = () => (
<div>
{/* Logo is an actual React component */}
<Logo />
</div>
);
채우기 속성을 변경하려면 SVG를 설정해야 합니다.fill
에 대한 의 가치current
다음과 같이 사용할 수 있습니다.
<svg fill="current" stroke="current" ....> ... </svg>
import { ReactComponent as Logo } from './logo.svg';
const App = () => (
<div>
{/* Logo is an actual React component */}
<Logo fill='red' stroke='green'/>
</div>
);
SVG를 컴포넌트로 사용하면 SVG의 모든 장점을 이용할 수 있습니다.
const MenuIcon = (props) =>(
<svg xmlns="http://www.w3.org/2000/svg" fill={props.fill} className={props.class}></svg>
)
그리고 당신의 렌더링에는
<li>
<a href="/" className="sidebar__link">
<MenuIcon fill="white"/>
</a>
</li>
g 또는 path에 접속하여 svg의 css를 변경할 수 있습니다.create-react-app 버전 2.0 이후
import React from 'react'
import {ReactComponent as Icon} from './home.svg';
export const Home = () => {
return (
<div className='home'>
<Icon className='home__icon'/>
</div>
);
};
.home__icon g {
fill: #FFFFF;
}
.home__icon path {
stroke: #e5e5e5;
stroke-width: 10px;
}
나는 이 문제에 대한 흥미로운 해결책을 찾았다.모든 경우에 효과가 있을지는 모르겠지만...좋아요, 저는 다음과 같은 svg를 가지고 있습니다.
import LockIcon from "../assets/lock.svg"
다음으로 다음과 같이 렌더링합니다.
<LockIcon color={theme.colors.text.primary} />
그 후 lock.svg에 추가합니다.fill="currentColor"
svg 태그로 지정합니다.
이것이 여러분들에게 도움이 될 수 있기를 바랍니다.
svg의 스타일을 변경하지 않고 svg 자체의 코드를 변경하지 않고 svg의 색상을 변경하고자 하는 경우.
svg의 색상을 이미지로 변경할 수도 있습니다.
이것은 css의 필터 속성을 적용함으로써 수행할 수 있습니다.색상을 css 필터로 변경합니다.
푸른색
- 16진수 코드 = #0000ff
- 필터링할 파란색:
invert(9%) sepia(99%) saturate(5630%) hue-rotate(246deg) brightness(111%) contrast(148%);
코드
<img src="path/to/svg"
style={{filter: "invert(9%) sepia(99%) saturate(5630%) hue-rotate(246deg) brightness(111%) contrast(148%)"}}
/>
제 경우 svg 파일의 다음 부분을 삭제해야 동작합니다.
<style type="text/css">
.st0{fill:#8AC6F4;}
</style>
그러면 이것은 효과가 있다.
import { ReactComponent as Logo } from './logo.svg';
const App = () => (
<div>
{/* Logo is an actual React component */}
<Logo />
</div>
);
리액트 기준16.13.1
SVG를 컴포넌트로 직접 사용하여 패스할 수 있습니다.fill
소품 색상을 변경합니다.다음의 예를 봐 주세요.
home.svg
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24px" height="24px"><path d="M 12 2.0996094 L 1 12 L 4 12 L 4 21 L 11 21 L 11 15 L 13 15 L 13 21 L 20 21 L 20 12 L 23 12 L 12 2.0996094 z M 12 4.7910156 L 18 10.191406 L 18 11 L 18 19 L 15 19 L 15 13 L 9 13 L 9 19 L 6 19 L 6 10.191406 L 12 4.7910156 z"/></svg>
ShowIcon/index.js
import React from 'react';
import HomeIcon from './home.svg';
const ShowIcon = props => {
return (
<HomeIcon fill='#ccc' />
)
}
export default ShowIcon;
그러나 여러 아이콘으로 테스트한 결과, 모든 아이콘에서 동작하지 않는 것을 알 수 있었습니다.그러니까 사용하기 전에 시험해 보세요.
.svg 파일 내 경로 태그의 채우기 속성이 "없음"으로 설정되어 있는지 확인하십시오.그렇지 않으면 작동하지 않습니다.
<Icon fill="white"/>
나도 같은 문제에 직면해서 대부분의 제안을 시도했지만 소용이 없었다.
아주 간단한 방법으로 해결했는데...SVG 이미지의 컴포넌트를 생성할 필요가 없습니다.
원하는 색상만 입력합니다.<path fill='#9d8189' ...></path>
.tvg 파일로
다음과 같은 접근방식을 사용합니다.
import { ReactComponent as Logo } from './logo.svg';
const App = () => (
<div>
{/* Logo is an actual React component */}
<Logo fill='red' stroke='green'/>
</div>
);
SVG에서 색상을 전류로 설정할 필요는 없지만 동작합니다.
<svg fill="current" stroke="current" ....> ... </svg>
SVG를 사용할 때마다 리액트 컴포넌트에서 설정할 필요가 없도록 몇 가지 기본 색상을 유지할 수 있습니다.단, 필요할 때만 설정할 수 있습니다.
<svg fill="#ffffff" stroke="#ffffff" ....> ... </svg>
SVG와 같은 도구를 사용하여 변환기를 폰트하는 것이 좋습니다.icomoon은 제가 좋아하는 것입니다.SVG 아이콘을 Import하기 위한 커스텀 폰트 라이브러리를 만듭니다.
소품
- 아이콘의 CSS를 사용하여 색상, 글꼴 크기 등을 변경하다
- 하나의 Import로 전체 프로젝트에서 사용
- 무료 아이콘/아이콘 번들을 제공하고 있습니다.
단점
- 초기학습곡선
- SVG 아이콘을 만들 때 치수, 윤곽 등을 적절하게 따릅니다.
- 다색 아이콘은 어렵다
언급URL : https://stackoverflow.com/questions/54519654/how-do-i-add-color-to-my-svg-image-in-react
'programing' 카테고리의 다른 글
woocommerce - 카트 항목 수량을 프로그래밍 방식으로 업데이트합니다. (0) | 2023.02.22 |
---|---|
클래스 상수를 구현하는 방법 (0) | 2023.02.22 |
WooCommerce에서 특정 배송 클래스에 대한 배송 방법 숨기기 (0) | 2023.02.14 |
gatsby 사이트에 Google 글꼴을 추가하려면 어떻게 해야 합니까? (0) | 2023.02.14 |
React에서 JSON의 데이터 해석JS (0) | 2023.02.14 |