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实际应用:innerHTMl和确认提示的使用
Jun 22 Javascript
实例:用 JavaScript 来操作字符串(一些字符串函数)
Feb 15 Javascript
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
ajax 文件上传应用简单实现
Mar 03 Javascript
JS正则验证邮箱的格式详细介绍
Nov 19 Javascript
yepnope.js使用详解及示例分享
Jun 23 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
JS文字球状放大效果代码分享
Aug 19 Javascript
基于node实现websocket协议
Apr 25 Javascript
Javascript中判断一个值是否为undefined的方法详解
Sep 28 Javascript
vue input标签通用指令校验的实现
Nov 05 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 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
将数组写入txt文件 var_export
2009/04/21 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
javascript下string.format函数补充
2010/08/24 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
详解js的六大数据类型
2016/12/27 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
vue $set 给数据赋值的实例
2019/11/09 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
python得到电脑的开机时间方法
2018/10/15 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
把富文本的回车转为br标签
2019/08/09 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
上班睡觉检讨书
2014/01/09 职场文书
财务内勤岗位职责
2014/04/17 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
学习普通话的体会
2014/11/07 职场文书
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android