以下说明数据,是指有4张图片的轮播图,分别切割成4张。

首先,做成单张切换的立体效果,即通过旋转,确定四张图片的位置,分别是一个立方体的上下前后的图片翻转移动角度。

       .box ul li:nth-child(1){transform:rotateX(90deg) translateZ(190px);}.box ul li:nth-child(2){transform:rotateX(-90deg) translateZ(190px);}.box ul li:nth-child(3){transform:translateZ(190px);}.box ul li:nth-child(4){transform:rotateX(180deg) translateZ(190px);}

  

其次,切割轮播图的原理并不是将一个图片切割成4张,而是通过flex伸缩布局调整4张图片的位置,并调整图片位置,使得看起来像一张图片,通过设置过渡延迟来实现切割效果。

.box {width: 560px;height: 380px;border: 1px solid #000;margin: 100px auto 0;/* 让这个盒子成为一个伸缩容器 一旦盒子成为了伸缩容器,里面所有的子元素都会自动成为项目 项目默认呈现水平排列 一旦水平排列就会超出box,所以,flex-shrink:1自动就会收缩每一个UL,最终的结果就是一个UL占的box的1/4*/display: flex;}.box ul {width: 560px;height: 380px;position: relative;transform-style:preserve-3d;transform:rotateX(0deg);transition:transform 1s;}.box ul li {/* 这里的LI设置成百分之百分宽高,为的是继承缩放后的UL的宽度 */width: 100%;height: 100%;position: absolute;left: 0;top: 0;/* 在这里添加overflow:hidden */overflow: hidden;}/* 给每一个UL添加延迟时间 */.box ul:nth-child(2){transition-delay: 0.2s;}.box ul:nth-child(3){transition-delay: 0.4s;}.box ul:nth-child(4){transition-delay: 0.6s;}/* 让每一个UL下面的图片都往左走 */.box ul:nth-child(2) img{margin-left: -140px;}.box ul:nth-child(3) img{margin-left: -280px;}.box ul:nth-child(4) img{margin-left: -420px;}

  最后,通过JS的遍历来分别给每个按钮、每个ul注册事件,并通过添加 节流阀来控制轮播图的进度

<script type="text/javascript">// 需求 :点击按钮让UL进行旋转 每一次点击累加一个90的角度//(1)找对象var box = document.querySelector('.box');var _ul = box.querySelectorAll('ul');var btns = document.querySelectorAll('button');// (2)给右边的按钮绑定点击事件 每点击一次让Ul基于之前的角度在加上一个90var num = 0; // 模拟信号量// 设置一个flag变量var flag = true;// 整体绑定for(var i = 0; i < btns.length; i++){// 设置自定义属性btns[i].setAttribute('data-index', i);btns[i].addEventListener('click',function(){if(flag){// 关门flag = false;// 判断当前点击的是哪一个对象// 通过this去拿到当前的那个对象的data-indexvar index = this.dataset['index'];// 不能用全等 因为一个是字符串一个是数值型if(index == 1){num++;}else if(index == 0){num--;}console.log(num*90);// _ul.style.transform = 'rotateX('+num*90+'deg)';// 让所有的UL转起来for(var i = 0; i < _ul.length; i++){_ul[i].style.transform = 'rotateX('+num*90+'deg)';}}})}// 当用户暴力点击的时候,会出现过渡来不及的BUG 解决方案:函数节流 // 当最后一个UL的过渡执行完毕之后重新开门_ul[_ul.length - 1].addEventListener('transitionend',function(){console.log(1);// 开门flag = true;
    })


转载于:https://www.cnblogs.com/tangting/p/6241891.html

CSS3+JS切割轮播图相关推荐

  1. CSS3 3D切割轮播图

    一.效果图 二.源码 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  2. 原生js实现轮播图实例教程

    原生js实现轮播图实例教程 本实例效果如下图所示: 根据实例效果,需要的元素有图片.中间圆点按钮.左右箭头按钮等.实际html代码如下所示: <div class="banner_co ...

  3. html图片轮播思路,css3如何实现轮播图?css3实现轮播图片的方法

    我们在网页上经常会看到有一块位置会有很多的图片来回切换,这就是轮播图,轮播图的出现,让重要的信息可以在一个位置显现,那么,轮播图是如何实现的呢?轮播图的实现用js或者css都可以,本篇文章就来给大家介 ...

  4. js实现轮播图_高性能轻量级零依赖的轮播图组件——Glider.js

    介绍 Glider.js是一个依赖原生js的轮播图组件库,因为其压缩后仅仅2.8k大小,其拥有着很好的性能,Glider.js在Github上开源,目前已拥有2.4kstars. Github htt ...

  5. 使用原生js将轮播图组件化

    代码地址如下: http://www.demodashi.com/demo/11316.html   这是一个轮播图组件,这里是代码地址,需要传入容器的id和图片地址,支持Internet Explo ...

  6. 轮播图实现html,html、css、js实现轮播图

    2017-03-13 今天把轮播图的知识1过了一下,写了一个比较简单的轮播图,给大家参考一下. 查看具体的效果点击这个链接 : http://gjhnstxu.me/%E8%BD%AE%E6%92%A ...

  7. JS实现轮播图点击切换、按钮切换功能

    JS实现轮播图点击切换.按钮切换功能 前言 轮播图案例 总结 前言 轮播图的案例非常经典,写法也非常多,我在写一个自己用的比较多的写法,帮助大家理解,在网页的设计中,可以直接拿去用(记得换图片路径哦! ...

  8. 原生JS无缝轮播图(左右切换、导航跟随)

    原生JS无缝轮播图(左右切换.导航图标) 功能: 1.实现轮播图的左右无缝切换 2.实现导航图标的跟随显示.点击切换 3.使用定时器进行无缝轮播 css部分 <style>/* 轮播图容器 ...

  9. 原生js实现轮播图——小肉包

    使用原生js实现轮播图--小肉包 今天分享一个使用原生JS实现轮播图的案例,并且配上比较详细的过程讲解,欢迎小伙伴的浏览和批评指正.静态效果图如下: 核心思想 将一些图片在一行中平铺,然后计算偏移量再 ...

最新文章

  1. 【Qt】Qt程序编译成功,执行时报错:程序异常结束,crashed
  2. 报错解决:Failed to talk to init daemon.
  3. CMake 指定安装目录
  4. AJAXA进行分页(2)
  5. Java的多线程和线程池的使用,你真的清楚了吗?
  6. OSI七层模型加协议
  7. HDU 1010题解这是一道简单的DFS加回溯题,看懂后就会对递归和回溯有较深刻的理解。...
  8. 【原】Spark Standalone模式
  9. *p++,(*p)++,*++p,++*p有什么不同
  10. Java基础篇4——数组
  11. mysql每天1点执行存储过程_一天一点MySQL复习——存储过程
  12. f分布表完整图a=0.01_Matlab中的数据分析之概率分布与检验实例讲解
  13. 网易buff服务器不稳定,《梦幻西游》手游平民94方寸逆袭成神分享心得助你腾飞_ 《梦幻西游》手游官网-人人都玩,无处不在...
  14. 如何做好一个APP开发项目?需要规避以下误区
  15. ReactNative--控件小记-更新中
  16. 还在为英语学习发愁吗?身为程序员的你可能需要这样一份“宝典”(上)
  17. stm32cubemx hal学习记录:SPI W25Q64
  18. QtCreator一键重命名
  19. 怎么做 Satellite assemblies
  20. 文件丢失了怎么能复原

热门文章

  1. iOS 修改UITabBar的默认点击行为
  2. 利用 Flash 远程检测客户端安装的杀软
  3. Emoji表情符号兼容方案(适用ios,android,wp等平台)
  4. Cocos2d-x v3.1 坐标系统(五)
  5. Deep learning:十九(RBM简单理解)
  6. Failed to install .apk on device 'emulator-5554': timeout解决方法
  7. android fragment 生命周期
  8. 【Android】页面栈
  9. 作用域链(scope chain)和原型链(prototype chain)
  10. 11-直接内存 Direct Memory