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 相关文章推荐
JQuery 浮动导航栏实现代码
Aug 27 Javascript
基于jquery的拖动布局插件
Nov 25 Javascript
javascript淡入淡出效果的实现思路
Mar 31 Javascript
Ajax搜索结果页面下方的分页按钮的生成
Apr 05 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
Dec 04 Javascript
JavaScript实现鼠标点击后层展开效果的方法
May 13 Javascript
JavaScript常用代码书写规范的超全面总结
Sep 11 Javascript
使用Math.max,Math.min获取数组中的最值实例
Apr 25 Javascript
原生JS上传大文件显示进度条 php上传文件代码
Mar 27 Javascript
小程序指纹验证的实现代码
Dec 04 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
java和js实现的洗牌小程序
Sep 30 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实现遍历多维数组的方法
2015/11/25 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
jquery实现提示语淡入效果
2017/05/05 jQuery
Angular设置别名alias的方法
2018/11/08 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
深入理解Django中内置的用户认证
2017/10/06 Python
django中的图片验证码功能
2019/09/18 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
浅析Python requests 模块
2020/10/09 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
软件工程专业推荐信
2013/10/28 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
解析Redis Cluster原理
2021/06/21 Redis