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 相关文章推荐
用jscript实现新建word文档
Jun 15 Javascript
javascript 伪数组实现方法
Oct 11 Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 Javascript
jquery实现简单文字提示效果
Dec 02 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
May 13 Javascript
js实现浏览器倒计时跳转页面效果
Aug 12 Javascript
js轮盘抽奖实例分析
Apr 17 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
Dec 08 Javascript
原生js实现节日时间倒计时功能
Jan 18 Javascript
基于javascript中的typeof和类型判断(详解)
Oct 27 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 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 Undefined index报错的修复方法
2011/07/17 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
python魔法方法-属性访问控制详解
2016/07/25 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
理论讲解python多进程并发编程
2018/02/09 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
pycharm安装和首次使用教程
2018/08/27 Python
python3 读取Excel表格中的数据
2018/10/16 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
实习指导教师评语
2014/12/30 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
分析Python list操作为什么会错误
2021/11/17 Python