JS+CSS实现3D切割轮播图


Posted in Javascript onMarch 21, 2020

本文实例为大家分享了JS+CSS实现3D切割轮播图的具体代码,供大家参考,具体内容如下

第一步:我们首先要通过CSS来完成一个基本布局,利用 transform-style: preserve-3d设置成3D。

下面是CSS部分的代码

* {
 margin: 0;
 padding: 0;
 box-sizing: border-box;
}
li {
 list-style: none;
}
/* 轮播图 */
.homePage {
 width: 800px;
 height: 200px;
 margin: 150px auto;
 background-color: pink;
 position: relative;
 /* overflow: hidden; */
}

.homePage>ul {
 width: 100%;
 height: 100%;
}

.homePage>ul>li {
 width: 200px;
 height: 100%;
 float: left;
 transform-style: preserve-3d;
 position: relative;
 transition: all 1s;
}

.homePage>ul>li>span {
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
}

.homePage>ul>li>span:nth-child(1) {
 background-image: url(../images/bxqy.jpg);
 transform: translateZ(100px);
}
.homePage>ul>li>span:nth-child(2) {
 background-image: url(../images/fczlm.jpg);
 transform: rotateX(90deg) translateZ(100px);
}
.homePage>ul>li>span:nth-child(3) {
 background-image: url(../images/hfh.jpg);
 transform: rotateX(180deg) translateZ(100px);
}
.homePage>ul>li>span:nth-child(4) {
 background-image: url(../images/ss.jpg);
 transform: rotateX(270deg) translateZ(100px);
}

/* 图片的定位 */
.homePage>ul>li:nth-child(2) span {
 background-position: -200px 0;
}
.homePage>ul>li:nth-child(3) span {
 background-position: -400px 0;
}
.homePage>ul>li:nth-child(4) span {
 background-position: -600px 0;
}

/* 小按钮 */
a {
 position: absolute;
 width: 30px;
 height: 70px;
 background-color: rgba(0,0,0,.2);
 text-decoration: none;
 color: #fff;
 top: 50%;
 margin-top: -35px;
 line-height: 70px;
 text-align: center;
 display: none;
}
.right {
 right: 0;
}

第二步:我们利用JS来调整图片运动时的切割速度以及方向。

下面是js的代码。

$(function(){
 var index = 0;
 var flag = true;
 var time = setInterval(move, 700);

 // 下一张
 function move(){
 if(!flag) return;
 flag = false;
 index++;
 $(".homePage>ul>li").css("transform","rotateX(" + (-90 * index) + "deg)").each(function(index,item){
  $(item).css("transition-delay",index * 0.2 + "s");
 });
 }

 // 移入移出
 $(".homePage").mouseenter(function(){
 clearInterval(time);
 $(".homePage>a").css("display","block");
 })
 $(".homePage").mouseleave(function(){
 time = setInterval(move, 700);
 $(".homePage>a").css("display","none");
 })

 // 点击左边按钮:上一张
 $(".left").on("click",function(){
 if(!flag) return;
 flag = false;
 index--;
 $(".homePage>ul>li").css("transform","rotateX(" + (-90 * index) + "deg)").each(function(index,item){
  $(item).css("transition-delay",index * 0.2 + "s");
 });
 })

 // 点击有面按钮:下一张
 $(".right").click(move);

 // 动画整个过渡结束之后,transitionend过渡完成时触发
 $("li:last").on("transitionend",function(){
 flag = true;
 })
})

最后:body区域代码如下

<div class="homePage">
 <ul>
  <li>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  </li>
  <li>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  </li>
  <li>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  </li>
  <li>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  </li>
 </ul>
 <a class="left" href="javascript:;" ><</a>
 <a class="right" href="javascript:;" >></a>
 </div>
 
<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/demo.js"></script>

注意:要利用 overflow: hidden;来隐藏切割时超出的部分。最后3D切割轮播图就完成了。

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery提示 &quot;object expected&quot;的解决方法
Dec 13 Javascript
JavaScript 产生不重复的随机数三种实现思路
Dec 13 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
Jun 09 Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 Javascript
基于jquery实现省市区三级联动效果
Dec 25 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
Aug 29 Javascript
微信小程序 教程之事件
Oct 18 Javascript
关于Angular2 + node接口调试的解决方案
May 28 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
判断js数据类型的函数实例详解
May 23 Javascript
微信小程序以ssm做后台开发的实现示例
Apr 08 Javascript
vue编写简单的购物车功能
Jan 08 Vue.js
vue-autoui自匹配webapi的UI控件的实现
Mar 20 #Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 #jQuery
微信小程序保持session会话的方法
Mar 20 #Javascript
微信小程序后端无法保持session的原因及解决办法问题
Mar 20 #Javascript
js 闭包深入理解与实例分析
Mar 19 #Javascript
JS一次前端面试经历记录
Mar 19 #Javascript
jQuery实现点击滚动到指定元素上的方法分析
Mar 19 #jQuery
You might like
基于文本的搜索
2006/10/09 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
Python中SQLite如何使用
2020/05/27 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
元旦晚会邀请函
2014/01/27 职场文书
安全生产检查通报
2014/01/29 职场文书
工伤赔偿协议书
2014/04/15 职场文书
创业女性典型材料
2014/05/02 职场文书
主题实践活动总结
2014/05/08 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
详解Python魔法方法之描述符类
2021/05/26 Python