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 相关文章推荐
js实现按一下删除键删除整个单词附demo
Sep 05 Javascript
node.js中的fs.readdir方法使用说明
Dec 17 Javascript
浅谈js中变量初始化
Feb 03 Javascript
jquery实现仿新浪微博评论滚动效果
Aug 06 Javascript
JavaScript重载函数实例剖析
May 13 Javascript
针对JavaScript中this指向的简单理解
Aug 26 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
JavaScript之创意时钟项目(实例讲解)
Oct 23 Javascript
JS多个表单数据提交下的serialize()应用实例分析
Aug 27 Javascript
在layui.use 中自定义 function 的正确方法
Sep 16 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
怎样去阅读一份php源代码
2009/08/21 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
php写的AES加密解密类分享
2014/06/20 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
Python中的进程分支fork和exec详解
2015/04/11 Python
介绍Python中的__future__模块
2015/04/27 Python
python结合API实现即时天气信息
2016/01/19 Python
Python实现随机漫步功能
2018/07/09 Python
python ChainMap的使用和说明详解
2019/06/11 Python
详解python中index()、find()方法
2019/08/29 Python
python nmap实现端口扫描器教程
2020/05/28 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
管理学专业个人求职信范文
2013/12/13 职场文书
金融专业大学生自我评价
2014/01/09 职场文书
财会专业毕业生自荐信
2014/07/09 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android