JS实现炫酷轮播图


Posted in Javascript onNovember 15, 2020

本文实例为大家分享了JS实现炫酷轮播图的具体代码,供大家参考,具体内容如下

效果图

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>面试必备轮播图</title>
 <link rel="stylesheet" href="demo.css" >
</head>

<body>
 <div class="wrapper" id="wrap">
  <img src="./images/1.png" alt="">
  <img src="./images/2.png" alt="">
  <img src="./images/3.png" alt="">
  <img src="./images/4.png" alt="">
  <img src="./images/5.png" alt="">
 </div>
 <script src="jquery.min.js"></script>
 <script src="index.js"></script>

</body>

</html>

JS代码

var oImg = $('img');
// 默认中间展示索引值为0的这张图片
var curDisplay = 0;
// 将图片分散排列

// 获得图片个数
var len = oImg.length;

// 定时器
var timer;

function init() {
 initalCarousel();
 bindEvent();
}
init();

function initalCarousel() {
 // 获得中间图片
 console.log($('img'))
 var hLen = Math.floor(oImg.length / 2);
 // rNum,lNum分别是分散在中间图片左右左右两侧的图片索引
 var rNum, lNum;
 for (var i = 0; i < hLen; i++) {
  lNum = curDisplay - i - 1;
  // console.log(lNum)
  // 分别让分散在左右两侧的图片平移旋转
  oImg.eq(lNum).css({
   transform: 'translateX(' + (-150 * (i + 1)) + 'px) translateZ(' + (200 - i * 100) + 'px) rotateY(30deg)'
  });
  rNum = curDisplay + i + 1;
  // 如果运动到最后一张 循环运动
  if (rNum > oImg.length - 1) {
   rNum -= oImg.length;
  }
  oImg.eq(rNum).css({
   transform: 'translateX(' + (150 * (i + 1)) + 'px) translateZ(' + (200 - i * 100) + 'px) rotateY(-30deg)'
  });
  oImg.removeClass('active');
 }

 // 当前显示图片直接z轴向前移动 同时添加class名作为标记
 
 oImg.eq(curDisplay).css({
  transform: 'translateZ(300px)'
 }).addClass('active');

}
// 点击事件
function bindEvent() {
 // 在每一张图片上绑定上点击事件
 oImg.on('click', function (e) {
  // 判断点击图片不是第一张显示图片 
  if (!$(this).hasClass('active')) {
   // 标记图片flag切换
   // 改变当前显示图片索引
   curDisplay = $(this).index();
   initalCarousel();
  }
  // 鼠标覆盖 清除自动轮播定时器
 }).hover(function () {
  clearInterval(timer);
  // 鼠标移走 继续轮播
 }, function () {
  play();
 });
}
// 自动播放
function play() {
 timer = setInterval(function () {
  if (curDisplay == len - 1) {
   curDisplay = 0;
  } else {
   curDisplay++;
  }
  initalCarousel();
 }, 2000);
}

CSS样式

*{
 margin:0;
 padding:0;
}
.wrapper{
 position: relative;
 transform-style: preserve-3d;
 perspective: 800px;
 /* border:1px solid black; */
 height:200px;
 margin-top:200px;
}
.wrapper img{
 position: absolute;
 left: 50%;
 top: 50%;
 width: 300px;
 height: 200px;
 margin-left: -150px;
 margin-top: -100px;
 border-radius: 8px;
 transition: transform 0.5s ease-in-out;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
JS中window.open全屏命令解析及使用示例
Dec 11 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
node.js不得不说的12点内容
Jul 14 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
Jun 14 Javascript
javascript加载xml 并解析各节点的值(实现方法)
Oct 12 Javascript
JS 实现Base64编码与解码实例详解
Nov 07 Javascript
jQuery实现根据生日计算年龄 星座 生肖
Nov 23 Javascript
Angular自定义组件实现数据双向数据绑定的实例
Dec 11 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
Nuxt使用Vuex的方法示例
Sep 06 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
Nov 09 Javascript
JS实现购物车基本功能
Nov 08 #Javascript
Vue实现购物车基本功能
Nov 08 #Javascript
vue实现顶部菜单栏
Nov 08 #Javascript
Vue实现菜单切换功能
Nov 08 #Javascript
JS使用setInterval计时器实现挑战10秒
Nov 08 #Javascript
JS实现手风琴特效
Nov 08 #Javascript
JS画布动态实现黑客帝国背景效果
Nov 08 #Javascript
You might like
Views rows style模板重写代码
2011/05/16 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
javascript中的array数组使用技巧
2010/01/31 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
5种JavaScript脚本加载的方式
2017/01/16 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
node跨域请求方法小结
2017/08/25 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
Python上下文管理器用法及实例解析
2019/11/11 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
Python新手如何理解循环加载模块
2020/05/29 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
财务会计实习报告体会
2013/12/20 职场文书
小学一年级学生评语
2014/04/22 职场文书
教育读书笔记
2015/07/02 职场文书
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技