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 相关文章推荐
“不能执行已释放的Script代码”错误的原因及解决办法
Sep 09 Javascript
jQuery实现的类flash菜单效果代码
May 17 Javascript
影响jQuery使用的14个方面
Sep 01 Javascript
有关json_decode乱码及NULL的问题
Oct 13 Javascript
关于Jquery中的事件绑定总结
Oct 26 Javascript
js实现一个简单的数字时钟效果
Mar 29 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 Javascript
vue中实现移动端的scroll滚动方法
Mar 03 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
Sep 18 Javascript
nuxt中使用路由守卫的方法步骤
Jan 27 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
Apr 25 Javascript
浅谈vue限制文本框输入数字的正确姿势
Sep 02 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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
PHP取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
python zip文件 压缩
2008/12/24 Python
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
python图像处理之反色实现方法
2015/05/30 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Python pip 常用命令汇总
2020/10/19 Python
python实现计算图形面积
2021/02/22 Python
纽约海:Sea New York
2018/11/04 全球购物
中软国际Java程序员机试题
2012/08/19 面试题
工厂搬迁方案
2014/05/11 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
中学推普周活动总结
2015/05/07 职场文书