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实现页面自适应
Jan 19 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
Apr 03 Javascript
js实现新浪微博首页效果
Oct 16 Javascript
20行JS代码实现网页刮刮乐效果
Jun 23 Javascript
微信小程序后台解密用户数据实例详解
Jun 28 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
May 21 Javascript
vue 本地环境跨域请求proxyTable的方法
Sep 19 Javascript
zepto.js 实时监听输入框的方法
Dec 04 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
Jan 08 Javascript
小程序和web画三角形实现解析
Sep 02 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 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类的使用 实例代码讲解
2009/12/28 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
PHP守护进程实例
2015/03/06 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
Python contextlib模块使用示例
2015/02/18 Python
python实现RSA加密(解密)算法
2016/02/17 Python
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
销售简历自我评价
2014/01/24 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
医德考评自我评价
2014/09/14 职场文书
小学六一主持词开场白
2015/05/28 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
redis 查看所有的key方式
2021/05/07 Redis
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python