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 相关文章推荐
动态加载dtree.js树treeview(示例代码)
Dec 17 Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
Dec 31 Javascript
js简单设置与使用cookie的方法
Jan 22 Javascript
JavaScript获取对象在页面中位置坐标的方法
Feb 03 Javascript
基于JavaScript实现类似于百度学术高级检索功能
Mar 02 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
Oct 11 Javascript
javascript验证香港身份证的格式或真实性
Feb 07 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
基于js的变量提升和函数提升(详解)
Sep 17 Javascript
Node.js log4js日志管理详解
Jul 31 Javascript
json字符串传到前台input的方法
Aug 06 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 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过程中的一些注意点的总结
2013/10/25 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
Javascript 继承机制实例
2009/08/12 Javascript
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
Python统计单词出现的次数
2018/04/04 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
pycharm导入源码的具体步骤
2020/08/04 Python
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
EJB的几种类型
2012/08/15 面试题
法人授权委托书范本
2014/04/04 职场文书
三年级学生评语
2014/04/23 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
2014年残联工作总结
2014/11/21 职场文书
护士先进个人总结
2015/02/13 职场文书
警示教育片观后感
2015/06/17 职场文书
爱的教育观后感
2015/06/17 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
详解Python中的for循环
2022/04/30 Python