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 相关文章推荐
在IE下:float属性会影响offsetTop的取值
Dec 22 Javascript
语义化 H1 标签
Jan 14 Javascript
JavaScript效率调优经验
Jun 04 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
Feb 23 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
Dec 14 Javascript
Javascript动态创建div的方法
Feb 09 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
May 12 Javascript
原生实现一个react-redux的代码示例
Jun 08 Javascript
JavaScript之实现一个简单的Vue示例
Jan 17 Javascript
vue请求服务器数据后绑定不上的解决方法
Oct 30 Javascript
vue实例的选项总结
Jun 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
php zend 相对路径问题
2009/01/12 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP xpath()函数讲解
2019/02/11 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
vue之延时刷新实例
2019/11/14 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
Python 模拟登陆的两种实现方法
2017/08/10 Python
Python实现的密码强度检测器示例
2017/08/23 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
python Canny边缘检测算法的实现
2020/04/24 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
请说出几个常用的异常类
2013/01/08 面试题
七匹狼男装广告词
2014/03/21 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
大国崛起英国观后感
2015/06/02 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
MySQL 5.7常见数据类型
2021/07/15 MySQL
Golang入门之计时器
2022/05/04 Golang