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中的prototype与继承
Apr 14 Javascript
js动态生成指定行数的表格
Jul 11 Javascript
iframe窗口高度自适应的实现方法
Jan 08 Javascript
浅谈node.js中async异步编程
Oct 22 Javascript
JavaScript实现cookie的写入、读取、删除功能
Nov 05 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
jQuery实现的弹幕效果完整实例
Sep 06 jQuery
使用Bootstrap和Vue实现用户信息的编辑删除功能
Oct 25 Javascript
vue初尝试--项目结构(推荐)
Jan 30 Javascript
vue element项目引入icon图标的方法
Jun 06 Javascript
layui从数据库中获取复选框的值并默认选中方法
Aug 15 Javascript
浅谈JS中this在各个场景下的指向
Aug 14 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.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
Python实现类继承实例
2014/07/04 Python
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python3多线程基础知识点
2019/02/19 Python
python 经典数字滤波实例
2019/12/16 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
地理科学专业毕业生求职信
2013/10/15 职场文书
班组长安全职责
2014/01/05 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
详解MySQL的半同步
2021/04/22 MySQL
总结Python使用过程中的bug
2021/06/18 Python