预加载动画效果实现,css3总结,整理,附上svg用法及stroke-dasharray和stroke-dashoffset理解(9)

 

需要用到animation知识,参考博主之前博文

还有svg基础知识,参考后文


<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>

 


svg元件是一个定义一个新的坐标系和容器视口。它用作SVG文档的最外层元素,但它也可用于在SVG或HTML文档中嵌入SVG片段。

注意:xmlns只有SVG文档的最外层svg元素才需要该属性。内部元素或HTML文档内部不需要它。svg

<span style="color:#333333"><span style="color:#333333"><code class="language-html"><span style="color:#990055"><span style="color:#990055"><span style="color:#999999"><</span>svg</span> <span style="color:#669900">viewBox</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>0 0 300 100<span style="color:#999999">"</span></span> <span style="color:#669900">xmlns</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>http://www.w3.org/2000/svg<span style="color:#999999">"</span></span> <span style="color:#669900">stroke</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>red<span style="color:#999999">"</span></span> <span style="color:#669900">fill</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>grey<span style="color:#999999">"</span></span><span style="color:#999999">></span></span>
  <span style="color:#990055"><span style="color:#990055"><span style="color:#999999"><</span>circle</span> <span style="color:#669900">cx</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>50<span style="color:#999999">"</span></span> <span style="color:#669900">cy</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>50<span style="color:#999999">"</span></span> <span style="color:#669900">r</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>40<span style="color:#999999">"</span></span> <span style="color:#999999">/></span></span>
  <span style="color:#990055"><span style="color:#990055"><span style="color:#999999"><</span>circle</span> <span style="color:#669900">cx</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>150<span style="color:#999999">"</span></span> <span style="color:#669900">cy</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>50<span style="color:#999999">"</span></span> <span style="color:#669900">r</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>4<span style="color:#999999">"</span></span> <span style="color:#999999">/></span></span>

  <span style="color:#990055"><span style="color:#990055"><span style="color:#999999"><</span>svg</span> <span style="color:#669900">viewBox</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>0 0 10 10<span style="color:#999999">"</span></span> <span style="color:#669900">x</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>200<span style="color:#999999">"</span></span> <span style="color:#669900">width</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>100<span style="color:#999999">"</span></span><span style="color:#999999">></span></span>
    <span style="color:#990055"><span style="color:#990055"><span style="color:#999999"><</span>circle</span> <span style="color:#669900">cx</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>5<span style="color:#999999">"</span></span> <span style="color:#669900">cy</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>5<span style="color:#999999">"</span></span> <span style="color:#669900">r</span><span style="color:#0077aa"><span style="color:#999999">=</span><span style="color:#999999">"</span>4<span style="color:#999999">"</span></span> <span style="color:#999999">/></span></span>
  <span style="color:#990055"><span style="color:#990055"><span style="color:#999999"></</span>svg</span><span style="color:#999999">></span></span>
<span style="color:#990055"><span style="color:#990055"><span style="color:#999999"></</span>svg</span><span style="color:#999999">></span></span></code></span></span>

 

在CodePen中打开在JSFiddle中打开

 

属性Section

baseProfile 自SVG 2以来已弃用

文档所需的最小SVG语言配置文件。
值类型<string> ; 默认值:无; 动画没有

contentScriptType 自SVG 2以来已弃用

SVG片段使用的默认脚本语言。
值类型<string> ; 默认值application/ecmascript动画没有

contentStyleType 自SVG 2以来已弃用

SVG片段使用的默认样式表语言。
值类型<string> ; 默认值text/css动画没有

height

显示矩形视口的高度。(不是其坐标系的高度。)
值类型<length> | <百分比> ; 默认值auto动画是的

preserveAspectRatio

svg如果片段以不同的宽高比显示,则片段必须如何变形。
值类型:(nonexMinYMinxMidYMinxMaxYMinxMinYMidxMidYMidxMaxYMidxMinYMax|xMidYMaxxMaxYMax)(meetslice)?; 默认值xMidYMid meet动画是的

version 自SVG 2以来已弃用

哪个版本的SVG用于元素的内部内容。
值类型<number> ; 默认值:无; 动画没有

viewBox

当前SVG片段的SVG视口坐标。
值类型<list-of-numbers> ; 默认值:无; 动画是的

width

显示的矩形视口宽度。(不是其坐标系的宽度。)
值类型<length> | <百分比> ; 默认值auto动画是的

x

显示svg容器的x坐标。对最外层svg元素没有影响。
值类型<length> | <百分比> ; 默认值0动画是的

y

svg容器的显示y坐标。对最外层svg元素没有影响。
值类型<length> | <百分比> ; 默认值0动画是的

注:与SVG2开始,xywidth,和height几何Propertie S,这意味着这些属性也可以用作CSS属性。

全局属性Section

核心属性

最值得注意的是:idtabindex

样式属性

class, style

条件处理属性

最值得注意的是:requiredExtensionssystemLanguage

事件属性

全局事件属性图形事件属性文档事件属性文档元素事件属性

演示属性

最值得注意的是:clip-pathclip-rulecolorcolor-interpolationcolor-renderingcursordisplayfillfill-opacityfill-rulefiltermaskopacitypointer-eventsshape-renderingstrokestroke-dasharraystroke-dashoffsetstroke-linecapstroke-linejoinstroke-miterlimitstroke-opacitystroke-widthtransformvector-effectvisibility

咏叹调属性

aria-activedescendantaria-atomicaria-autocompletearia-busyaria-checkedaria-colcountaria-colindexaria-colspanaria-controlsaria-currentaria-describedbyaria-detailsaria-disabledaria-dropeffectaria-errormessagearia-expandedaria-flowtoaria-grabbedaria-haspopuparia-hiddenaria-invalidaria-keyshortcutsaria-labelaria-labelledbyaria-levelaria-livearia-modalaria-multilinearia-multiselectablearia-orientationaria-ownsaria-placeholderaria-posinsetaria-pressedaria-readonlyaria-relevantaria-requiredaria-roledescriptionaria-rowcountaria-rowindexaria-rowspanaria-selectedaria-setsizearia-sortaria-valuemaxaria-valueminaria-valuenowaria-valuetextrole

使用说明Section

分类容器元素,结构元素
允许的内容任意数量的以下元素中的,以任何顺序:
动画元素
描述元素
的形状要素
的结构要素
梯度元件
<a><altGlyphDef><clipPath><color-profile><cursor><filter><font><font-face><foreignObject><image><marker><mask><pattern><script><style><switch><text><view>

产品规格Section

规格状态评论
可缩放矢量图形(SVG)2
该规范中“<svg>”的定义。
候选推荐 
可缩放矢量图形(SVG)1.1(第二版)
该规范中“<svg>”的定义。
建议初步定义

浏览器兼容性Section

更新GitHub上的兼容性数据

 桌面移动
 边缘火狐IE浏览器歌剧苹果浏览器Android webview适用于Android的Chrome适用于Android的Firefox适用于Android的OperaiOS上的Safari三星互联网
svg全力支持1全力支持是的全力支持1.5全力支持9全力支持8全力支持3全力支持3全力支持是的全力支持4全力支持是的全力支持3
baseProfile

弃用

全力支持是的全力支持是的全力支持是的全力支持是的
contentScriptType

弃用

没有支持号没有支持号没有支持号没有支持号
contentStyleType

弃用

没有支持号没有支持号没有支持号没有支持号
height全力支持1全力支持是的全力支持1.5全力支持9全力支持8全力支持3全力支持3全力支持是的全力支持4全力支持是的全力支持3
preserveAspectRatio全力支持1全力支持是的全力支持1.5全力支持9全力支持8全力支持3全力支持3全力支持是的全力支持4全力支持是的全力支持3
version

弃用

全力支持是的全力支持是的全力支持是的全力支持是的
viewBox全力支持1全力支持是的全力支持1.5全力支持9全力支持8全力支持3全力支持3全力支持是的全力支持4全力支持是的全力支持3
width全力支持1全力支持是的全力支持1.5全力支持9全力支持8全力支持3全力支持3全力支持是的全力支持4全力支持是的全力支持3
x全力支持1全力支持是的全力支持1.5全力支持9全力支持8全力支持3全力支持3全力支持是的全力支持4全力支持是的全力支持3
y全力支持1全力支持是的全力支持1.5全力支持9全力支持8全力支持3全力支持3全力支持是的全力支持4全力支持是的全力支持3
zoomAndPan全力支持是的全力支持是的全力支持是的全力支持是的

传说

全力支持 

全力支持

没有支持 

没有支持

兼容性未知 

兼容性未知

已过时。不适用于新网站。

已过时。不适用于新网站。

 

吐糟一句:还是看权威写法,网上查到消息,看起来写的很清晰简单的样子,但是有些核心问题,仍然没有答案,当然有也不太敢相信,比如在html中将svg作为标签使用,是否该引用xmlns属性,没有答案,但是官方一些,权威一些的网站

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg 如下所示,说的清清楚楚,html文档内部不需要

https://www.jianshu.com/p/f5b510b656f2一开始看了这个文章,也不错,但总觉得万一遇到其他元素呢,能不能查到呢?最后还是要看官方一些的

https://svgwg.org/svg2-draft/painting.html#StrokeDashing

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值