-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Description
Iconコンポーネントでstyle付きのSVGを使うと、クラス名でバッティングして正しく表示されなくなる
Adobe Illustratorで書き出されたSVGは、.cls-1など似たようなクラス名を付けられることが多く、そのまま使うとスタイルがマージや上書きされ、正しく表示されなくなる事があります。
icon1.svg (赤四角)
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<defs>
<style>.cls-1 { fill: #f00; }</style>
</defs>
<rect class="cls-1" width="20" height="20"/>
</svg>icon2.svg (緑四角)
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<defs>
<style>.cls-1 { fill: #0f0; }</style>
</defs>
<rect class="cls-1" width="20" height="20"/>
</svg>TSXでの呼び出し
import { Icon } from 'minista';
export default function () {
return (
<>
<Icon iconId="icon1" />
<Icon iconId="icon2" />
</>
);
}↓ ビルドを行う ↓
出力されるicons.svg(整形済)
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style>.cls-1 { fill: #f00; }</style>
<style>.cls-1 { fill: #0f0; }</style>
</defs>
<symbol id="icon1" viewBox="0 0 20 20">
<rect class="cls-1" width="20" height="20"/>
</symbol>
<symbol id="icon2" viewBox="0 0 20 20">
<rect class="cls-1" width="20" height="20"/>
</symbol>
</svg>結果
<use href="/assets/images/icons.svg#icon1"></use> <!-- 緑四角が表示される(赤四角のはず) -->
<use href="/assets/images/icons.svg#icon2"></use> <!-- 緑四角が表示される -->Metadata
Metadata
Assignees
Labels
No labels