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 类方法定义还是有点区别
Apr 15 Javascript
javascript new一个对象的实质
Jan 07 Javascript
javascript实现带节日和农历的日历特效
Feb 01 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 Javascript
AngularJS equal比较对象实例详解
Sep 14 Javascript
bootstrap table复杂操作代码
Nov 01 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
Jun 13 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 Javascript
基于JSONP原理解析(推荐)
Dec 04 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
Jquery高级应用Deferred对象原理及使用实例
May 28 jQuery
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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
简单的js分页脚本
2009/05/21 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
python实现从字典中删除元素的方法
2015/05/04 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
python中remove函数的踩坑记录
2021/01/04 Python
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
电脑教师的教学自我评价
2013/11/26 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
音乐教师求职信
2014/06/28 职场文书
谢师宴邀请函
2015/02/02 职场文书
校本培训个人总结
2015/02/28 职场文书
求职信格式范文
2015/03/19 职场文书
白银帝国观后感
2015/06/17 职场文书
公司员工奖惩制度
2015/08/04 职场文书
python实现黄金分割法的示例代码
2021/04/28 Python