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 相关文章推荐
JS 面向对象的5钟写法
Jul 31 Javascript
jQuery 开天辟地入门篇一
Dec 09 Javascript
基于jquery的放大镜效果
May 30 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
利用JS实现数字增长
Jul 28 Javascript
VueJS全面解析
Nov 10 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
详解Vue.js搭建路由报错 router.map is not a function
Jun 27 Javascript
微信小程序获取循环元素id以及wx.login登录操作
Aug 17 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
Angular服务Request异步请求的实例讲解
Aug 13 Javascript
vue项目打包后请求地址错误/打包后跨域操作
Nov 04 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
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
JavaScript 特殊字符
2007/04/05 Javascript
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
javascript自执行函数
2017/02/10 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
深入浅析Python传值与传址
2018/07/10 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
python爬取微博评论的实例讲解
2021/01/15 Python
Unix控制后台进程都有哪些进程
2016/09/22 面试题
个人自荐书
2013/12/20 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
文化活动实施方案
2014/03/28 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
初三语文教学计划
2015/01/22 职场文书
销售员岗位职责
2015/02/10 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript