用原生JS怎样做翻书的特效,代码是什么
Admin 2022-06-23 群英技术资讯 716 次浏览
这篇文章给大家分享的是用原生JS怎样做翻书的特效,代码是什么。小编觉得挺实用的,因此分享给大家做个参考,文中的介绍得很详细,而要易于理解和学习,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。本文给大家分享一个用原生JS实现的翻书效果图,效果如下:

实现代码如下,欢迎大家复制粘贴。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>原生JS实现翻书特效</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
list-style: none;
}
#btn {
width: 50px;
height: 40px;
line-height: 40px;
position: relative;
left: 50%;
margin-left: -25px;
top: 100px;
}
#book {
width: 600px;
height: 400px;
position: absolute;
left: 50%;
top: 50%;
margin: -200px 0 0 -300px;
border: 1px solid black;
/* 第一个封面 */
background: url(images/0.jpg);
}
#rightPage {
width: 50%;
height: 100%;
position: absolute;
left: 50%;
z-index: 2;
transition: 0.5s;
transform: perspective(800px) rotateY(0px);
transform-origin: left center;
background: black;
transform-style: preserve-3d;
}
#rightPage #topNode {
position: absolute;
width: 100%;
height: 100%;
/* 第一个封面 */
background: url(images/0.jpg) 300px 0;
transform: translateZ(1px);
}
#rightPage #bottomNode {
position: absolute;
width: 100%;
height: 100%;
/* 第三个封面 */
background: url(images/2.jpg) 0 0;
/*scaleX将翻书镜像后的图像还原镜像*/
transform: translateZ(-1px) scaleX(-1);
}
#rightOtherPage {
position: absolute;
left: 50%;
height: 100%;
width: 50%;
/* 第三个封面 */
background: url(images/2.jpg) 300px 0;
z-index: 1;
}
</style>
</head>
<body>
<input type='button' value='下一页' id='btn'>
<div id='book'>
<div id='rightPage'>
<div id='topNode'></div>
<div id='bottomNode'></div>
</div>
<div id='rightOtherPage'></div>
</div>
<script type="text/javascript">
var index = 0;
var flag = false;
btn.onclick = function () {
if (flag) return;
flag = true;
index++;
rightPage.style.transition = '0.5s';
rightPage.style.transform = 'perspective(800px) rotateY(-180deg)';
setTimeout(function () {
// 翻页后瞬间更换下一页的背景
book.style.backgroundImage = 'url(images/' + (index % 2 + 1) + '.jpg)';
// 让翻页瞬间回去
rightPage.style.transition = '0s';
rightPage.style.transform = 'perspective(800px) rotateY(0deg)';
// 更换翻页纸正面背景
topNode.style.backgroundImage = 'url(images/' + (index % 2 + 1) + '.jpg)';
// 更换翻页纸背面背景
bottomNode.style.backgroundImage = 'url(images/' + ((index + 1) % 2 + 1) + '.jpg)';
// 更换翻页后的纸背景
rightOtherPage.style.backgroundImage = 'url(images/' + ((index + 1) % 2 + 1) + '.jpg)';
flag = false;
}, 500);
};
</script>
</body>
</html>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
目录累加/累积求最大/最小值格式化搜索参数反序列化搜索参数拉平嵌套数组实现 flat数组去重数组计数获取对象多个属性反转字符串不知道大家平常用 Reduce 多不多,反正本瓜用
浅谈访问vue实例this指针的相关知识,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
滑块组件就是一个允许用户在有限区间内通过移动滑块来选择值的组件。滑块组件的应用是比较常见的,例如商品价格区间筛选,音量设置,滑块验证等等。这篇文章就给大家介绍一下用原生JS实现滑块组件,下面是实现效果,功能分析以及代码。
本篇文章给大家带来了关于javascript的相关知识,主要介绍了JavaScript事件循环同步任务与异步任务,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下。
本文主要介绍了el-upload多选文件上传报错解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008