svgSpriteに色(fill)が効かない
問題。
gulp-svg-spriteで作ったsvgSpriteにCSSのfillが効かない!
->全部真っ黒に...
原因!
元データのsvg自体にfillがついているとCSSが効かない。
なんだ簡単だ。すぐに解決できそう。
https://qiita.com/rinoside/items/65bd2f84751dc45585c1
https://qiita.com/sats/items/7060afe95c25b13b8c78
上記を参考にしました。
解決法としては、
①svg-spriteのプラグインのsvgoを使う。
②svg-cheerioを使う!
①のプラグインのsvgo
svgoとは
https://github.com/svg/svgo
svgをいろいろ軽量化してくれる。こりゃいいや。
↓書き方
const svgSpriteTask = () => {
return gulp.src(`${paths.srcImg}/svg/*.svg`)
.pipe(plumber())
.pipe(svgSprite({
mode: {
symbol: {
dest: 'svg',
sprite: 'symbols.svg'
}
},
shape: {
transform: [
{
// 下記にsvgoの設定を書いていく。
svgo: {
plugins: [
// ここでfill属性を排除
{removeAttrs:{attrs: 'fill'}}
]
}
}
]
}
}))
.pipe(gulp.dest(`${paths.distImg}`))
};
バッチリですね!
gulpを走らせます!
svgoでもcheerioでもfillが消えない
コンパイル後のファイルでfill検索してみるとわんさか残ってます。あれれ..
その後cheerioもしてみるも消えない。
諦めかけてsvgファイルをよく見たら、style属性の中にfill記述が!!!
つまり...
styleも消す!
const svgSpriteTask = () => {
return gulp.src(`${paths.srcImg}/svg/*.svg`)
.pipe(plumber())
.pipe(svgSprite({
mode: {
symbol: {
dest: 'svg',
sprite: 'symbols.svg'
}
},
shape: {
transform: [
{
svgo: {
plugins: [
// これを追加することで<style>が消える
{removeStyleElement: true},
{removeAttrs:{attrs: 'fill'}}
]
}
}
]
}
}))
.pipe(gulp.dest(`${paths.distImg}`))
};
これをgulpで走らせたら無事消えました。属性だと思い込んでたけど違った...
元ファイルをよくみることは大事ですね。灯台下暗し。
Author And Source
この問題について(svgSpriteに色(fill)が効かない), 我々は、より多くの情報をここで見つけました https://qiita.com/irico/items/b24696bb8aa4994b9110著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .