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弹出层(jQuery插件形式附带reLoad功能)
Apr 12 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
vue解决跨域路由冲突问题思路解析
Nov 03 Javascript
vuex进阶知识点巩固
May 20 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
vue+web端仿微信网页版聊天室功能
Apr 30 Javascript
小程序实现筛子抽奖
May 26 Javascript
5种 JavaScript 方式实现数组扁平化
Oct 05 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 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
django基于restframework的CBV封装详解
2019/08/08 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
Johnston & Murphy官网: 约翰斯顿·墨菲牛津总统鞋
2018/01/09 全球购物
高中体育教学反思
2014/01/29 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
2014年卫生工作总结
2014/11/27 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
sass 常用备忘案例详解
2021/09/15 HTML / CSS
Python实现Hash算法
2022/03/18 Python