怎么使用CSS来修改SVG原点和制作SVG动画

html-css0194

怎么使用CSS来修改SVG原点和制作SVG动画,第1张

如何使用CSS来修改SVG原点和制作SVG动画

SVG元素可以像HTML元素一样,使用CSS keyframes和animation属性或者CSS transitions来制作各种动画效果。

SVG元素可以像HTML元素一样,使用CSS keyframes和animation属性或者CSS transitions来制作各种动画效果。

大多数情况下,一个复杂的动画效果需要组合多种变换效果:旋转、倾斜、缩放以及他们的转换和过渡效果。多数情况下,SVG元素和HTML元素在使用transform和transform-origin上是相同的。但它们之间也有不同之处,SVG元素不能使用box model来管理,因此,它没有margin、padding、border或content boxes。

默认情况下,一个HTML元素的transform原点位于该元素的(50%, 50%)的地方,这里是元素的中心点。与之不同,SVG元素的transform原点位于当前用户坐标系统的原点上,这个点是画布的左上角位置。

假设我们有一个<div>和一个SVG <rect>元素:

<!DOCTYPE html>

当然具体写的时候得写具体的像素值。

这个图的作用是,说明这4个值到底指的是那个距离。

A:剪裁矩形距离父元素顶部的长度。

B:剪裁矩形距离父元素左边的长度 + 矩形宽度。

C:剪裁矩形距离父元素顶部的长度 + 矩形高度。

D:剪裁矩形距离父元素左边的长度。

方法一:border

我们知道利用border+宽高:0 可以实现如下效果 (假设圆的半径是100px)

如果要实现扇形在此基础上圆角一下即可,同时设置某一方颜色透明即可实现”某一块扇形”的视觉效果

方法二:矩形+半圆相切

基本思路是:左边的半圆旋转与右边的矩形相切。

至于细节: 

1.半圆的由来:可以rect裁剪只显示圆的左边部分 

2.同理,矩形也通过rect裁剪只显示右边部分,同时没有背景色。这样一个矩形里视觉上只会显示半圆与矩形相切的部分

然后剩下的完善同样三个标签旋转一定角度。