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 引起的安全问题
Dec 27 Javascript
新发现一个骗链接的方法(js读取cookies)
Jan 11 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
基于javascript实现图片懒加载
Jan 05 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
Jun 21 Javascript
Jquery组件easyUi实现选项卡切换示例
Aug 23 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
React Native开发封装Toast与加载Loading组件示例
Sep 08 Javascript
vue踩坑记录之数组定义和赋值问题
Mar 20 Javascript
Vue export import 导入导出的多种方式与区别介绍
Feb 12 Javascript
通过实例解析javascript Date对象属性及方法
Nov 04 Javascript
原生JavaScript实现随机点名表
Jan 14 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
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
javascript forEach通用循环遍历方法
2010/10/11 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
python访问类中docstring注释的实现方法
2015/05/04 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Python元组知识点总结
2019/02/18 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
班组安全员工作职责
2014/02/01 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
党支部综合考察材料
2014/05/19 职场文书
父亲节活动总结
2015/02/12 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
实用求职信模板范文
2019/05/13 职场文书
求职自我评价参考范文
2019/05/16 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书