问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用javascript实现轮播图

发布网友 发布时间:2022-04-22 09:37

我来回答

2个回答

懂视网 时间:2022-04-07 10:48

首先,我们来看一下木马轮播图效果:

46327716d35058f52f40ee716d9cb78.png

具体代码如下:

(推荐教程:js教程)

html部分代码:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>旋转木马轮播图</title>
 <link rel="stylesheet" href="css/myStyle.css" rel="external nofollow" />
 <script type="text/javascript" src="js/animate.js"></script>
 <script type="text/javascript" src="js/my.js"></script>
</head>
<body>
<div id="wrap">
 <div id="slide">
 <ul>
 <li><a href="#"><img src="images/slidepic1.jpg" alt=""/></a></li>
 <li><a href="#"><img src="images/slidepic2.jpg" alt=""/></a></li>
 <li><a href="#"><img src="images/slidepic3.jpg" alt=""/></a></li>
 <li><a href="#"><img src="images/slidepic4.jpg" alt=""/></a></li>
 <li><a href="#"><img src="images/slidepic5.jpg" alt=""/></a></li>
 </ul>
 <div id="arrow">
 <a href="javascript:;" id="arrLeft"></a>
 <a href="javascript:;" id="arrRight"></a>
 </div>
 </div>
</div>
</body>
</html>

在html部分引入的myStyle.css文件部分代码

@charset "UTF-8";
 
blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4, h5, h6, hr, input, legend, li, ol, p, pre, td, textarea, th, ul{
 margin:0;
 padding:0
}
 
body,button,input,select,textarea{
 font:12px/1.5 "Microsoft YaHei", "微软雅黑", SimSun, "宋体", sans-serif;
 color:#666;
}
 
ol,ul{
 list-style:none
}
 
a{
 text-decoration:none
}
 
fieldset,img{
 border:0;
 vertical-align:top;
}
 
a,input,button,select,textarea{
 outline:none
}
 
a,button{
 cursor:pointer
}
 
.wrap{
 width:1200px;
 margin:100px auto;
}
.slide{
 height:500px;
 position: relative;
}
 
.slide li{
 position:absolute;
 left:200px;
 top:0
}
 
.slide li img{
 width:100%
}
 
.arrow{
 opacity:0;
}
 
.prev ,.next{
 width:76px;
 height:112px;
 position:absolute;
 top:50%;
 margin-top:-56px;
 background:url(../images/prev.png) no-repeat;
 z-index:99;
}
 
 
.next{
 right:0;
 background-image:url(../images/next.png);
}

在html部分引入的animate.js文件部分代码

/**
 * Created by RENPINGSHENG on 2018/4/6.
 */
 
function animate(obj,json,fn) {
 clearInterval(obj.timer);
 obj.timer = setInterval(function () {
 var flag = true;
 for(var k in json){
 if( k == "opacity"){
 var leader = getStyle(obj,k) * 100;
 var target = json[k] * 100;
 var step = (target - leader) /10;
 step = step > 0 ? Math.ceil(step) : Math.floor(step);
 leader = leader + step;
 obj.style[k] = leader /100;
 } else if ( k == "zIndex"){
 obj.style[k] = json[k];
 }else{
 var leader = parseInt(getStyle(obj,k)) || 0;
 var target = json[k];
 var step = (target - leader) /10;
 step = step >0 ? Math.ceil(step) : Math.floor(step);
 leader = leader + step;
 obj.style[k] = leader + "px";
 }
 
 console.log("target:" + target + "leader:" + leader + "step:" + step);
 if (leader != target){
 flag = false;
 }
 }
 
 if (flag){
 clearInterval(obj.timer);
 if(fn){
 fn();
 }
 }
 },15)
}
 
function getStyle(obj,attr){
 if (obj.currentStyle){
 return obj.currentStyle[attr];
 }else{
 return window.getComputedStyle(obj,null)[attr];
 }
}

在html部分引入的my.js文件部分代码

/**
 * Created by RENPINGSHENG on 2018/4/6.
 */
 
 
window.onload = function () {
 var wrap = document.getElementById("wrap");
 var slide = document.getElementById("slide");
 var ul = slide.children[0];
 var lis = ul.children;
 var arrow = document.getElementById("arrow");
 var arrRight = document.getElementById("arrRight");
 var arrLeft = document.getElementById("arrLeft");
 
 var config = [
 {
 width:400,
 top:20,
 left:50,
 opacity:0.2,
 zIndex:2
 },
 {
 width:600,
 top:70,
 left:0,
 opacity:0.8,
 zIndex:3
 },
 {
 width:800,
 top:100,
 left:200,
 opacity:1,
 zIndex:4
 },
 {
 width:600,
 top:70,
 left:600,
 opacity:0.8,
 zIndex:3
 },
 {
 width:400,
 top:20,
 left:750,
 opacity:0.2,
 zIndex:2
 }
 ];
 
 wrap.onmouseover = function () {
 animate(arrow,{"opacity":1});
 }
 wrap.onmouseout = function () {
 animate(arrow,{"opacity":0});
 }
 function assign() {
 for(var i = 0;i < lis.length;i++){
 animate(lis[i],config[i],function(){
 flag = true;
 })
 }
 }
 
 var flag = true;
 assign();
 arrRight.onclick = function () {
 flag = false;
 config.push(config.shift());
 assign();
 };
 arrLeft.onclick = function () {
 flag = false;
 config.unshift(config.pop());
 assign();
 }
}

整个页面的文件结构如下图所示:

a8ce0d7ac0fb01529bb2c89900ef5f1.png

更多炫酷CSS3、html5、javascript特效代码,尽在:js特效大全

热心网友 时间:2022-04-07 07:56

function getStyle(obj,name){
2 if(obj.currentStyle){
3 return obj.currentStyle[name];
4 } else{
5 return getComputedStyle(obj,false)[name];
6 }
7 }
8
9 function startMove(obj, json, fnEnd) {
10 clearInterval(obj.timer);
11 obj.timer = setInterval(function() {
12 var bStop = true;
13 for (var attr in json) {
14 var cur = 0;
15 if (attr == "opacity") {
16 cur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
17 } else {
18 cur = parseInt(getStyle(obj, attr))
19 }
20 var speed = (json[attr] - cur) / 10;
21 speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
22 if (cur !== json[attr]) {
23 bStop = false;
24 };
25 if (attr == "opacity") {
26 obj.style.opacity = (speed + cur) / 100;
27 obj.style.filter = 'alpha(opacity:' + (speed + cur) + ')';
28 } else {
29 obj.style[attr] = cur + speed + 'px';
30 }
31 }
32 if (bStop) {
33 clearInterval(obj.timer);
34 if (fnEnd) fnEnd();
35 }
36 }, 30)
37 }

然后写轮播小案例

1 <!DOCTYPE html>
2 <html lang="en">
3
4 <head>
5 <meta charset="UTF-8">
6 <title>淘宝轮播</title>
7 <style>
8 ul,
9 li {
10 list-style: none;
11 margin: 0;
12 padding: 0;
13 }
14
15 #wrap {
16 width: 400px;
17 height: 225px;
18 margin: 0 auto;
19 position: relative;
20 overflow: hidden;
21 }
22
23 li {
24 float: left;
25 }
26
27 #tips li {
28 margin: 5px;
29 border: 1px solid #f60;
30 width: 20px;
31 height: 20px;
32 line-height: 20px;
33 text-align: center;
34 color: white;
35 cursor: pointer;
36 }
37
38 .active {
39 background: #f60;
40 }
41
42 img {
43 vertical-align: top;
44 width: 400px;
45 }
46
47 #content {
48 width: 2400px;
49 position: absolute;
50 left: -1200px;
51 }
52
53 #content li {
54 float: left;
55 }
56
57 #tips {
58 position: absolute;
59 right: 20px;
60 bottom: 5px;
61 }
62 </style>
63 </head>
64
65 <body>
66 <div id="wrap">
67 <ul id="content">
68 <li><img src="img3/1.jpg" alt=""></li>
69 <li><img src="img3/2.jpg" alt=""></li>
70 <li><img src="img3/3.jpg" alt=""></li>
71 <li><img src="img3/4.jpg" alt=""></li>
72 <li><img src="img3/5.jpg" alt=""></li>
73 <li><img src="img3/6.jpg" alt=""></li>
74 </ul>
75 <ul id="tips">
76 <li>1</li>
77 <li>2</li>
78 <li>3</li>
79 <li>4</li>
80 <li>5</li>
81 </ul>
82 </div>
83 <script src="move.js"></script>
84 <script>
85 var wrap = document.getElementById('wrap');
86 var content = document.getElementById('content');
87 var tips = document.getElementById('tips');
88 var aLi = tips.getElementsByTagName('li');
89 var now = 0;
90 //var
91 for (var i = 0; i < aLi.length; i++) {
92 aLi[0].className = 'active'; //把初始状态定义好
93 content.style.left = 0 +'px';
94 aLi[i].index = i; //自定义属性
95 aLi[i].onclick = function() {
96 now = this.index;
97 play();
98 }
99 }
100
101 function play() {
102 for (var j = 0; j < aLi.length; j++) {
103 aLi[j].className = '';
104 }
105 aLi[now].className = 'active';
106
107 //this.index = now; //反过来写就不对了大兄弟
108 //content.style.left = -400 * this.index + 'px';
109 startMove(content, {
110 left: -400 * now, //你还真别说,json格式就是这么写的
111 });
112 }
113
114 function autoPlay() {
115 now++;
116 if (now == aLi.length) {
117 now = 0;
118 }
119 play();
120 }
121
122 var timer = setInterval(autoPlay, 2000);
123 wrap.onmouseover = function(){ //这里如果把事件绑定到ul上的话,那么鼠标移入,下面对饮的li会不起作用,
124 clearInterval(timer); //因为li的层级比较高,所以应该把事件绑定到大的div上
125 }
126 wrap.onmouseout = function(){
127 timer = setInterval(autoPlay,2000);
128 //setInterval(autoPlay,2000); 不能这么写,凡是开的定时器,必须得赋值,要不然总会多开一个定时器,导致速度加快
129 }
130 </script>
131 </body>
132
133 </html>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么把苹果电脑安装到固态硬盘苹果笔记本可以换成固态硬盘吗_百度知 ... 营转非的车保险和私车一样吗? 功夫不负有心人的观点怎么写 用具体事实说明一个观点比如“功夫不负有心人”“虚心使人进步骄傲使... 我左腿膝盖向上10cm外侧刚发现有个硬的包很疼,表面无异样请问是什么`昨 ... 左腿膝盖外侧酸是怎么回事,右腿没感觉,是缺少什么了吗,以前一般吃几天... 膝盖处外侧皮肤麻木,皮肤容易红,外侧摸关节处略大于右腿同部位关节。去... 灰色冬裙配什么短外套 2024年信用卡诈骗罪是什么样的量刑标准 徐州启星中学好不好在徐州排第几徐州启星中学 ppt怎样做图片轮播 淘宝店铺装修,轮播图自适应的代码 请问PC端的轮播图怎么让它的高度自适应屏幕的分辨率。 android 中怎么实现多图自动轮播中间放大的效果 如何把照片发到网上 轮播图js怎么设置图片自适应大小 怎么给照片发到网络百度里面去 js轮播图自动播放时为什么会跳的可视窗口位置 如何将手机上的相片上传到网上? Axure制作自适应轮播图(banner) 怎么把手机上的照片传到网上啊? 电视上的轮播图怎么做? 杯子蛋糕的做法 草莓印TXT下载_小说全文最新章节在线阅读免费 谁有《草莓印》不止是颗菜的百度网盘? 如何把照片发到网上? 杯蛋糕怎么做 如何做杯子蛋糕的方法 谁有酸酸的草莓印的全文..我找了半天- - 杯子蛋糕的做法是怎样的? html5如何实现图片轮播 天猫自定义页面全屏的轮播图怎么设置? 什么是黑产行为 近视眼怎么保护视力? 近视眼该如何保护眼睛? 微信参与接龙怎么和以前的在一起 近视眼怎么保护眼睛 微信参与接龙了怎么没有我 近视眼平时该怎样保护眼睛啊??? 眼睛近视了怎么保养 微信账号被提醒组织或参与网络刷单,予以警示处理... 近视了怎么保护眼睛啊? 已经近视,该怎样保护眼睛? 微信支付日活动怎么参与? 近视眼怎样保护视力 近视眼患者要怎么保护眼睛? 微信是如何参与电子支付的? 近视眼的人平时怎么保护眼睛? 近视眼如何保护眼睛 当代年轻人有很多近视眼,我们该如何保护自己的眼睛?