HTML 动画(一)[通俗易懂]
2023-06-13 09:12:07 时间
大家好,又见面了,我是你们的朋友全栈君。
动画(一)
图片从左至右逐渐消失
- 实现逻辑: a: 将遮罩分割为数个div,多个div通过图片定位拼接成一张图片; b: 运用requestAnimationFrame + animation实现动画; c: 遮罩层网格状逐步消失设置background-position: 0;
- 效果图:
- 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
#maskBox {
width: 800px;
height: 600px;
overflow: hidden;
position: absolute;
top: 0;
left: 0;
}
/* 精灵图 */
#maskBox .parentBox {
width: 100%;
height: 100px;
overflow: hidden;
}
.parentBox div {
width: 100px;
height: 100px;
float: left;
background: url("https://img-blog.csdnimg.cn/20210308163835396.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MzgwMzEx,size_16,color_FFFFFF,t_70#pic_center") no-repeat left center;
background-size: 800px 600px;
overflow: hidden;
border: 1px solid #ccc;
box-sizing: border-box;
}
.opacity{
animation:opacity 5s ease-in-out 0s 1 alternate forwards; /*循环完成保留最后一帧画面*/
-webkit-animation:opacity 5s ease-in-out 0s 1 alternate forwards; /*Safari and Chrome*/
}
/* 去掉 background-position 无图片折叠效果 */
@keyframes opacity{
from {opacity:1;}
to {opacity:0;background-position: 0;}
}
</style>
</head>
<body>
<!-- 内容 -->
<div style=" width: 800px;height: 600px;background: #efa925;font-size: 50px;">内容。。。</div>
<!-- 遮罩 -->
<div id="maskBox"></div>
<script type="text/javascript">
function Render() {
let r_this = this;
let lowNum = 48,colNum = 9; // 宽800/100 = 8;高 600/100=6; 个数 8*6 =48;
let p_box = document.getElementById('maskBox');
let pDiv = null,cDiv = null,dX = 0,dY = 0,divHidden = null;
let index = 0,childernArr = [];
// 创建DIV css精灵拼接图片
r_this.createDiv = () => {
for (let i=0;i<colNum;i++) {
pDiv = document.createElement("div"); // 创建父Div
p_box.appendChild(pDiv);
pDiv.setAttribute('class','parentBox');
for (let a=0;a<lowNum;a++) {
cDiv = document.createElement("div"); // 创建子div
pDiv.appendChild(cDiv);
dX = cDiv.offsetLeft;
dY = cDiv.offsetTop;
cDiv.style['background-position']=''+(-dX)+'px '+(-dY)+'px'; // 每个div都贴上图片
cDiv.setAttribute('class','div_'+a);
}
}
}
// 动画 将div 逐步消失
r_this.animation = () =>{
childernArr = document.querySelectorAll("div.div_"+index);
for(let i=0;i<childernArr.length;i++) {
childernArr[i].setAttribute('class','opacity')
}
index ++
// 关闭动画
if (index >= lowNum) {
p_box.remove(); // 清除遮罩
window.cancelAnimationFrame(divHidden);
divHidden = null;
return;
}
divHidden = window.requestAnimationFrame(function( callback ){
window.setTimeout(r_this.animation, 1000 / 20);//定义每秒执行60次动画
});
}
}
// 创建方法
var render = new Render();
// 创建遮罩div图片
render.createDiv();
// 让遮罩先停留一秒开始动画
setTimeout(function(){
render.animation();
},1000)
</script>
</body>
</html>
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148011.html原文链接:https://javaforall.cn
相关文章
- Android开机动画bootanimation
- protel 99se 简单的手动画pcb
- html语言添加下划线,HTML页面中怎么文本添加下划线?[通俗易懂]
- HTML中document的作用,html中的document对象是什么?一篇文章让你了解document对象
- CSS笔记(25)之动画animation
- 用html设计一个动漫网站_HTML一个介绍的页面代码
- javascript html转换成markdown,如何使用Turndown使用JavaScript将HTML转换为Markdown[通俗易懂]
- html中如何写系统时间,在HTML页面获取当前系统时间
- html表格空格符是什么,HTML中的空格符号是什么
- 怎么修改HTML网页的名字_如何修改html文件内容
- Elastic-Job2.1.5源码-图解分片算法动画
- 自定义加载动画的两种实现方式
- Mac版Cinema 4D R26提高3D动画处理效率,永久版下载
- CharacterAnimator2022打造个性化动画角色工具,让创意随手可得+全版本安装包
- 文件Linux 打开 HTML 文件的方法(linux打开html)
- 文件MySQL数据库存储HTML文件.(mysql存html)
- 从 HTML 页面访问 MySQL 数据库.(html访问mysql)
- 标签使用MySQL过滤HTML标签(mysql过滤html)
- Linux解析HTML:一种快捷的方式(linux解析html)
- MySQL存储HTML页面的简单技巧(mysql存储html)
- CSS3 动画效果
- HTML连接Oracle利用JavaScript即可实现(html连接oracle)
- HTML 操作 Oracle 数据库的实现(html调用oracle)
- Redis与HTML的不同之处(redis跟html区别)
- 简单的仿Flash文字动画(兼容Mozilla)
- 读取XML并绑定至RadioButtonList实现思路及演示动画
- CSS+jQuery实现的一个放大缩小动画效果
- JQuery动画animate的stop方法使用详解