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 相关文章推荐
两种WEB下的模态对话框 (asp.net或js的分别实现)
Dec 02 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
Dec 17 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
jQuery实现背景弹性滚动的导航效果
Jun 01 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
Sep 04 Javascript
浅谈AngularJs指令之scope属性详解
Oct 24 Javascript
通过bootstrap全面学习less
Nov 09 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
在小程序开发中使用npm的方法
Oct 17 Javascript
vuejs中父子组件之间通信方法实例详解
Jan 17 Javascript
es6中Promise 对象基本功能与用法实例分析
Feb 23 Javascript
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
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
js 目录列举函数
2008/11/06 Javascript
jQuery MD5加密实现代码
2010/03/15 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
对python函数签名的方法详解
2019/01/22 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
高级护理实习生自荐信
2013/09/28 职场文书
小学教师的个人自我鉴定
2013/10/24 职场文书
大学生实习证明范本
2014/01/15 职场文书
股权收购意向书
2014/04/01 职场文书
个人授权委托书
2014/04/03 职场文书
反四风对照检查材料
2014/09/22 职场文书
企业培训简报范文
2015/07/20 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
python实现监听键盘
2021/04/26 Python
Python实现制作销售数据可视化看板详解
2021/11/27 Python