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 相关文章推荐
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
JavaScript 捕获窗口关闭事件
Jul 26 Javascript
基于jquery的一个简单的脚本验证插件
Apr 05 Javascript
js null,undefined,字符串小结
Aug 21 Javascript
jQuery 追加元素的方法如append、prepend、before
Jan 16 Javascript
JavaScript仿flash遮罩动画效果
Jun 15 Javascript
全面理解JavaScript中的继承(必看)
Jun 16 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 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计算排列组合的方法
2013/11/13 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
利用json获取字符出现次数的代码
2012/03/22 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
python里对list中的整数求平均并排序
2014/09/12 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
python join方法使用详解
2019/07/30 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
新闻系毕业生推荐信
2013/11/16 职场文书
英文请假条
2014/04/11 职场文书
离婚协议书样本
2015/01/26 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
昆虫记读书笔记
2015/06/26 职场文书
汽车车尾标语大全
2015/08/11 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS