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 全局AJAX事件使用代码
Nov 05 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
Feb 26 Javascript
JavaScript中实现最高效的数组乱序方法
Oct 11 Javascript
js面向对象的写法
Feb 19 Javascript
javascript每日必学之多态
Feb 23 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
JavaScript两个变量交换值的实现方法
Mar 01 Javascript
jquery拖动改变div大小
Jul 04 jQuery
angular2路由之routerLinkActive指令【推荐】
May 30 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
May 01 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 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
PHP新手上路(十三)
2006/10/09 PHP
php 数组使用详解 推荐
2011/06/02 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
PHP 读取和编写 XML
2014/11/19 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
javascript定义函数的方法
2010/12/06 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
JS实现拼图游戏
2021/01/29 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
python编程嵌套函数实例代码
2018/02/11 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
中科软测试工程师面试题
2012/06/16 面试题
面料业务员岗位职责
2013/12/26 职场文书
检察官就职演讲稿
2014/01/13 职场文书
运动会解说词50字
2014/01/18 职场文书
活动志愿者自荐信
2014/01/27 职场文书
学前教育专业求职信
2014/09/02 职场文书
如何写辞职书
2015/02/26 职场文书
奖学金申请书(范文)
2019/08/14 职场文书