本文实例为大家分享了JS实现炫酷轮播图的具体代码,供大家参考,具体内容如下
效果图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<!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代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
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样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
*{ margin : 0 ; padding : 0 ; } .wrapper{ position : relative ; transform-style: preserve -3 d; 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.5 s ease-in-out; } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_41605893/article/details/109540568