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 相关文章推荐
Javascript的各种节点操作实例演示代码
Jun 27 Javascript
js日期时间补零的小例子
Mar 05 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
Jul 04 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
Apr 21 Javascript
js+html5绘制图片到canvas的方法
Jun 05 Javascript
JavaScript中的this机制
Jan 30 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
Oct 17 Javascript
BootStrap modal模态弹窗使用小结
Oct 26 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
vue eslint简要配置教程详解
Jul 26 Javascript
微信小程序封装多张图片上传api代码实例
Dec 30 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
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
vue移动端屏幕适配详解
2019/04/30 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
jupyter实现重新加载模块
2020/04/16 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
深入理解Python 多线程
2020/06/16 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
网游商务专员求职信
2013/10/15 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
安全责任书模板
2014/07/22 职场文书
2014年少先队工作总结
2014/12/03 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python