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 文档的编码问题解决
Mar 01 Javascript
JQuery中$(document)是什么意思有什么作用
Jul 21 Javascript
jQuery实现精美的多级下拉菜单特效
Mar 14 Javascript
jQuery的load()方法及其回调函数用法实例
Mar 25 Javascript
JavaScript中的getTime()方法使用详解
Jun 10 Javascript
jQuery+HTML5实现图片上传前预览效果
Aug 20 Javascript
Bootstrap每天必学之模态框(Modal)插件
Apr 26 Javascript
AngularJS表单详解及示例代码
Aug 17 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
Jun 09 jQuery
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
微信小程序自定义组件实现环形进度条
Nov 17 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危险函数(disable_functions)
2012/02/23 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
javascript解析json实例详解
2014/11/05 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
详解vue axios二次封装
2018/07/22 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
python基础教程之序列详解
2014/08/29 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
思想品德课教学反思
2014/02/10 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
个人年终总结范文
2015/03/09 职场文书