前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用三种方式实现轮播图

用三种方式实现轮播图

作者头像
微醺
发布2019-01-17 13:13:19
2.6K0
发布2019-01-17 13:13:19
举报

轮播图的实现原理

顾名思义,轮播图就是实现图片的轮换播放效果。先显示一张图片,一定的时间,让这张图片消失,下一张图片显示。让它们实现跟淘宝首页一样的广告轮播效果。

首先是前端html代码
代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>轮播图</title>
	<style>
		*{
			margin: 0;
			padding: 0;
			text-decoration: none;
		}
		.top{
			width:700px;
			margin: 0 auto;
			height: 500px;
			border: 1px solid;
			background-repeat:no-repeat;
		}
		img{
			width: 700px;
			height: 500px;
		}	
		.inner1,.inner2,.inner3,.inner4{
			position: absolute;
			margin-top: 0;
			display:block;
		}
		.ul{
			width: 150px;
			height: 15px;
			font-size: 10px;
			line-height:15px;
			text-align: center;
			margin: 0 auto;
		}
		.first{
			display: inline-block;
			width:15px ;
			height:15px;
			border: 1px solid;
			background-color:lightblue;
			border-radius: 50%;
			margin-right: 15px;
		}
    		.first:hover{
			background-color:red;
		}
	</style>
</head> 
<body>
	<div class="top">
			<div class="inner1">
			 <img src="img/1.jpg">
			</div>
			 <div class="inner2">
			<img src="img/2.jpg">
			</div>
			 <div class="inner3">
			<img src="img/3.jpg">
		     </div>
			 <div class="inner4">
			<img src="img/4.jpg">
		 	</div>
		</div>
		<div class="ul">
			<ul>
			<li class="first one">1</li>
			<li class="first two">2</li>
			<li class="first three">3</li>
			<li class="first four">4</li>
			</ul>
		</div>
</body>
</html>

图片可以设置成自己想要的图片,只需要在img src后换成自己本地的图片就行。

js代码

使用display实现轮播

代码语言:javascript
复制
<script type="text/javascript">			
	//获取img
	var img = document.querySelectorAll("img");//通过选择器,获取img
	var li = document.querySelectorAll("li");
	var div = document.querySelectorAll('.top div');
	// console.log(img);
	var index = 0;//定义一个初始值为0的变量
	function scrol() {

> //使用display实现
>     	//隐藏
>     	for(var i=0;i<img.length;i++){
>     	//设置让三个隐藏,一个显示
>     	img[i].style.display = "none";//把所有的img隐藏
>     	 li[i].style.backgroundColor =""; //分页颜色全都不显示
>     	}
>      img[index].style.display = "block";//让一个显示
>     	li[index].style.backgroundColor = "red";//一个分页显示颜色
>      index++;//自增
>      if(index==div.length){
>     index=0;
> 	}
  }
       var timer = setInterval(scrol,500);//设置定时器
        function mOver(index){//设置鼠标移动在分页上的函数
        clearInterval(timer);//清除定时器
      	for(var i=0;i<div.length;i++){//循环实现分页颜色的变化
        div[i].style.zIndex ="1";//让所有图片隐藏
        li[i].style.backgroundColor =""; //分页颜色失效
          	}
    	div[index].style.zIndex = "9";//当前选中分页显示
          	}
        function mOut(){//鼠标移出让它继续轮播
        timer = setInterval(scrol,500);
           }
         for(var i =0;i<div.length;i++){
         li[i].onmouseover = function(){
         mOver(i);
          }
          li[i].onmouseout = function(){
           mOut(i);
            }
         }
        </script>

使用zIndex实现轮播

zIndex我的理解就是屏幕离人的距离,就是z轴。值越大,离人的距离越近,也就是首先显示出来

代码语言:javascript
复制
//使用zIndex实现
> 	for(var i=0;i<div.length;i++){
>     		div[i].style.zIndex ="1";
>     		li[i].style.backgroundColor =""; 
>     	}
>     	div[index].style.zIndex = "9";
>     	li[index].style.backgroundColor = "red";
>     	index++;
>     	if(index==div.length){
>     		index=0;
>     	}

使用透明度实现轮播

透明度是0-1之间,0是透明,1是不透明,也就是显示出来

代码语言:javascript
复制
    //使用透明度实现
>   	for(var i=0;i<img.length;i++){
>     	img[i].style.opacity="0";
 >     li[i].style.backgroundColor =""; 
>             }
>     	img[index].style.opacity = "1";
>     	li[index].style.backgroundColor = "red";
>     	index++;
>     	if(index==img.length){
>     		index=0;
>     	}

总结

轮播图,刚才是我做的时候首先想到的是使用for循环实现轮播图,做的过程中发现,for循环实在是太快,肉眼根本捕捉不到。就想到使用定时器,每隔多长时间调用这个函数,就能实现轮播的效果。我的总体思路就是先让其他隐藏,让一个显示,然后定时器每调用一个就能实现一个的显示其他的隐藏。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 轮播图的实现原理
    • 首先是前端html代码
    • js代码
      • 使用display实现轮播
        • 使用zIndex实现轮播
          • 使用透明度实现轮播
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档