CSSでsvg-Spriteをアニメーション化しようとしました。スプライトを作成し、gulpから注入しました。
gulp.task('svgstore', function () {
var svgs = gulp
.src('app/svg/*.svg')
.pipe(svgmin(function (file) {
return {
plugins: [{
cleanupIDs: {
minify: true
}
}]
}
}))
.pipe(svgstore({ inlineSvg: true }));
function fileContents (filePath, file) {
return file.contents.toString();
}
return gulp
.src('app/*.html')
.pipe(inject(svgs, { transform: fileContents }))
.pipe(gulp.dest('app/'))
});
…そしてSpriteからHTMLに画像を挿入しました:
<svg class="icon-ufo" >
<use xlink:href="img/Sprite.svg#ufo" aria-hidden="true"></use>
</svg>
それはうまく機能しますが、次の画像はシャドウDOMが閉じていることを示しています。
JavaScriptなしでこのSVGのいくつかのスタイルをアニメーション化するにはどうすればよいですか?しかし、JavaScriptが唯一の方法である場合、それを改善する方法はありますか?
参照される要素のDOMは、参照するHTMLページのDOMの一部ではありません。独立したスタイルシートがあります。
ただし、シャドウ要素は、参照元の<use>
要素。つまり、参照される要素がSpriteまたはSpriteに関連付けられたスタイルシートでスタイル自体を設定しない限り、<use>
要素。