博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用code打造自己的过渡动画
阅读量:6002 次
发布时间:2019-06-20

本文共 1427 字,大约阅读时间需要 4 分钟。

起源

自己的过渡动画,为什么要这个东西呢?不是说好的Simple is beautiful么。的确我也是非常欣赏简洁的东西,但是对于挂载在Github上的本博客,在国内访问总是不那么流畅,而Next主题的文字下落动画恰恰使博客访问体验变的非常糟糕(感觉访问变得更慢了)。所以本喵决定打造自己的过渡动画。

借鉴

在两三个月前记得访问过一个个人博客,过渡动画非常惊艳,但当时并没有时间详细琢磨实现细节。如今正好借鉴一番,经过一番Google,还是本喵找到了(但是作者的博客好像没有维护了,无法访问),好在也是依托Github pages 挂载的博客,直接把源码下载下来进行研究。

地址:

图片描述

实现细节

动画并非纯css实现而是使用了SVG + CSS

可缩放矢量图形(英语:Scalable Vector Graphics,SVG)是一种基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式。 SVG由W3C制定,是一个开放标准。

既然是矢量图,它的缩放就不会失真,因为表示方法是基于数学的表示,而不是像素点。动画中的笔画即是基于SVG中path标签中的数据先后顺序。

#mySVG path {  stroke: #000;  stroke-width: 2px;  stroke-dasharray: 11434;  stroke-dashoffset: 11456;  -webkit-animation: dash 5s linear infinite;  animation: dash 5s linear infinite;  -webkit-animation-fill-mode: both;          animation-fill-mode: both;/*   -webkit-transition:fill 0.5s 1s linear;  transition:fill 0.5s 1s linear;*/}@-webkit-keyframes dash {  10% {    stroke-dashoffset: 11456;  }  70% {    stroke-dashoffset: 0;    fill: transparent;  }  80% {    stroke-dashoffset: 0;    fill: #000;  }  95% {    stroke-dashoffset: 11456;    fill: #000;  }  100% {    stroke-dashoffset: 11456;    fill: transparent;  }}

不过当我理解了这svg两个属性(stroke-dasharray,stroke-dashoffset)后,还是非常震惊于这个动画的实现原理。

stroke-dasharray属性可控制用来描边的点划线的图案范式。

MDN给出的示例:

stroke-dashoffset属性指定了dash模式到路径开始的距离

通过CSS修改这两个属性,动画的边界就相应的动起来了。

我的实现

我的素材:

clipboard.png

使用 AI 得到 SVG,最终效果:

图片描述

转载地址:http://codmx.baihongyu.com/

你可能感兴趣的文章
利用 CocoaPod 和 Git 管理组件中的一些细节梳理
查看>>
聊聊storm trident spout的_maxTransactionActive
查看>>
面向Vue新人:写一个简单的倒计时按钮
查看>>
关于手势处理
查看>>
super
查看>>
5G美洲白皮书:5G开源的现状(pdf)
查看>>
世界移动通信大会
查看>>
基于Spring Security Role过滤Jackson JSON输出内容
查看>>
从设计者的角度看 React
查看>>
js常见问题
查看>>
CentOS6系统编译部署LAMP(Linux, Apache, MySQL, PHP)环境
查看>>
71. Simplify Path
查看>>
海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践
查看>>
PAT A1043
查看>>
JavaScript之手写Promise
查看>>
PHP_SELF变量解析和重复路径解决
查看>>
git 命令行使用(基础篇)
查看>>
Vue笔记(五)——Token&生命周期
查看>>
《前端十年心路-我把一切告诉你》的书稿大纲&问题收集
查看>>
CSS居中总结大全
查看>>