这是我研究stroke-dasharray参数百度搜到的一篇文章,当时只复制了代码,时间长了一下子找不到原文了,在这里先给作者道个歉。
哪天再拜读到大作的时候一定补上来源。
svg我是小白,只是最近苦于甲方大大非得要一些动画效果,就只能硬着头皮来研究一下。
这片文章注释写的较为详细,自己动手修改数值能更直观的了解到每个参数对应的效果。
话不多说,贴上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="preloader">
<svg>
<!-- <circle> SVG 元素是一个SVG的基本形状,x,y轴坐标,半径,。-->
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2"></circle>
<!--注:与SVG2开始,x,y,width,和height是几何Propertie S,这意味着这些属性也可以用作CSS属性。全局属性
fill它定义了它应用的图形元素内部的颜色。
stroke-width 定义要应用于形状的笔触的宽度。值:<length> | <百分比> ; 动画:是的
-->
</svg>
</div>
<style>
.preloader {
z-index: 1;
position: absolute;
border: 1px red solid;
width: 100%;
}
/*infinite无限*/
.preloader .path {
-webkit-animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite;
}
/*关键的关键是,设置关键帧,针对什么类*/
@-webkit-keyframes dash {
/*stroke-dasharray:给的一个数,那么就是实线为1,虚线也是1,两个数就是实线1 虚线200相当于没有
* 而单独89 ,除开虚线89,不足以再产生一条虚线
官方没有给逗号,给不给都可以
默认起点,即偏移为0情况,封闭图形,即是顺时针方向,负数为逆时针
*/
0% {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 89;
/*stroke-dashoffset: -35px;*/
/*起点拽回顺时针30开始*/
}
100% {
stroke-dasharray: 89 200;
stroke-dashoffset: -126;
/*负值为逆时针方向,顺着轨迹移动126,即是产生消失效果*/
}
}
/*stroke-dasharray="167" stroke="red"
* <!--stroke-dasharray="167" stroke="red" 这意味着疏密程度变化 ,要么百分数,要么数字,实际上相对周长而言,比如
* r=20 周长为120左右,89差不多占据四分之三-->
*/
/*
* 作为呈现属性,它可以被应用到任何元素,但它只有在下列十元素效果:
* <altGlyph>,<circle>,<ellipse>,<path>,<polygon>,<polyline>,<rect>,<text>,<textPath>,<tref>,和<tspan>
* stroke-dasharray
定义用于绘制形状轮廓的破折号和间隙的图案。
价值:none| <dasharray>; 动画:是的
个人理解是间隙和非间隙的比例,单独一个数,那么间隙和非间隙都是它,
两个数, 正好一个是非间隙,一个是间隙,重点是
stroke-dashoffset
定义关联的虚线阵列的渲染时的偏移量。
值:<百分比> | <length> ; 动画:是的*/
@keyframes dash {
0% {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 89, 200;
stroke-dashoffset: -35px;
}
100% {
stroke-dasharray: 89, 200;
stroke-dashoffset: -126px;
}
}
@-webkit-keyframes color {
100%,
0% {
stroke: #d62d20;
}
/*40% {
stroke: #0057e7;
}
66% {
stroke: #008744;
}
80%,
90% {
stroke: #ffa700;
}*/
}
@keyframes color {
100%,
0% {
stroke: #d62d20;
}
40% {
stroke: #0057e7;
}
66% {
stroke: #008744;
}
80%,
90% {
stroke: #ffa700;
}
}
</style>
</body>
</html>效果是一个转圈的动画,很细节,有兴趣的朋友可以复制到本地学习一下。
CMS博客 原创,未经授权禁止转载、摘编、复制或建立镜像。
文章评论(审核通过可见)