轮播图,小白教程

轮播图:可以看出
可以从图上,看出我们要实现的效果,首先罗列出来,方便我们一步步的进行处理。
此处我才用的是重叠图片,通过定时器,按一定时间进行对图片display属性进行更改。
实现的效果是:1>图片自动轮播 2>图片序列按钮的点击更改图片事件 3>上、下一张的按钮事件 4>鼠标悬于图片上,不进行轮播。
当然,在这些效果之前,我们需要写完我们的html内容和css样式。
下列开始先写html。

<!--最大的div,是为了做为一个轮播图所需元素的容器-->
		<div id='main'>
	<!--轮播图片区   在取名时,因为各有所长(分别取名slide1-5),有共有特性(banner-slide),所以,取多个类名-->
				<div id='banner'>
					<!--图1-->
					<a href="">
					<div class='banner-slide  slide1'>1</div>
					</a>
					<!--图2-->
					<a href="">
					<div class='banner-slide  slide2'>2</div>
					</a>
					<!--图3-->
					<a href="">
					<div class='banner-slide  slide3'>3</div>
					</a>
					<!--图4-->
					<a href="">
					<div class='banner-slide  slide4'>4</div>
					</a>
					<!--图5-->
					<a href="">
					<div class='banner-slide  slide5'>5</div>
					</a>
				</div>
		<!--
			移动数字绑定图片
			必然的是,和图片数量是对等的
		-->
				<div class="dots">
					<ul id='dots'>
						<li>1</li>
						<li>2</li>
						<li>3</li>
						<li>4</li>
						<li>5</li>
					</ul>
				</div>	
				<!--
					上、下一张按钮
				-->
				<div id="left-right">
					<div class="move" id="prev">&lsaquo;</div>
					<div class="move" id="next">&rsaquo;</div>
				</div>
		</div>	

很好,框架已经有了,开始写css吧。

	/*二话不说,上来就用通配符删除浏览器默认 值*/
	*{
		margin:0;
		padding: 0;
	}
	
	#main{
		width: 1200px;
		height: 600px;
		position: relative;
		margin: 50px auto;/*为了在此的观看效果,我选择了这个数据*/
		/*overflow: hidden;*//*因为设置了隐藏,所示的效果只有一张solid1*/
		/*可在元素赠加和定位完成后进行影藏*/
	}
	/*
	 * 为所以图片设置同main一样宽高不大推荐
	 	因为,如果图片没进行过处理,强制改变宽高,容易产生变形,
	 	图片将变得难看。
	 * *//*为了使图片叠加所以我们使用absolute,在此之前
	 * 	我们需要去它的父级添加一个relative。
	 * */
	#main .banner-slide{
		position: absolute;
		width: 1200px;
		height: 600px; 
		overflow: hidden;/*防止图片过大,超出范围,影响视觉*/
	}
	/*
	 * 挨个设置轮播图的图片
	 * 为了方便在图片所在div加内容,标签
	 * 我们选择把轮播图内容以background形式出现。
	 */
	#main .slide1{
		background: red;
	}
	#main .slide2{
		background: yellow;
	}
	#main .slide3{
		background: blue;
	}
	#main .slide4{
		background: green;
	}
	#main .slide5{
		background: deepskyblue;
	}
	/*ul标签的移动*/
	#main .dots #dots{
		position: absolute;
		margin-top: 560px;/*由于我设置了li高为40,总高600,所以进行
		560的移动*/
		margin-left: 275px;/*(1200-5*130)/2*/
	}
	#main .dots #dots li{
		height: 40px;
		width: 80px;
		border-radius: 20%;
		background: gray;/*在此的样式根据个人喜好自己添加*/
		/*由于上面的定位,所以*/
		float: left;/*为了是图标自左向右*/
		margin-left: 50px;
		list-style: none;
	}
	#main #left-right .move{
		position: absolute;
		margin-top:260px;
		height: 80px;
		width: 40px;
		font-size: 50px;/*设置<>大小*/
		padding-left: 10px ;
	}
	/*左右分离*/
	#main #left-right #next{
		right:0;
	}
	/*触碰上下张有效果*/
	#main #left-right .move:hover{
		background: rgba(0,0,0,0.4);
	}

暂时先这样,看一下效果:

这里写图片描述

是不是已经有点雏形了?但是里面还少了一些东西,我们后面慢慢加,接下来开始我们的js部分

//因为之前使用了很多的id,所以我们为了方便得到
//所需的document.getElementById();,做一个封装函数(我是网上看来觉得挺好的)
	function byid(id){
		return typeof(id)==='string'?document.getElementById(id):id;
	//	相当于 return if(typeof(id)==='string'){
	//		document.getElementById(id);
	//	}else{
	//		id;
	//	}
	}
	//接下来开始轮播图脚本了。
	//为了使得函数很多变量能互相使用,所以我们需要在wai
	//定义好全局变量。
	//len的设定   :  由于长度上的计算很少,而且图片和数字移动数量相同,只需设置一个
	// index的设定:  设置记数变量,因为数字从0开始计算。
	var main = byid('main'),
		pics = byid('banner').getElementsByTagName('div'),
		dots = byid('dots').getElementsByTagName('li'),
		prev = byid('prev'),
		next = byid('next'),
		len = pics.length,
		index = 0,
		timer = null;//timer是为了进行定时器的设置挺与开
	//轮播图整体函数
	function solide(){
		//轮播定时器(是整个容器即main):移入鼠标停止,和移出继续轮播
		//先来个划入清除定时器
		banner.onmouseover=function(){
			
		}
		//再写一个划出继续启动定时器
		banner.onmouseout = function(){
			
		}
	}
	solide();//提前写上,开始方法,才有轮播效果

接着为了方便我们接下来的js操作,进行下css和html的补充。如图

这里写图片描述
这里写图片描述

来,我们看下补充的js代码(为了好区分)我使用了图片:
这里写图片描述

接着
这里写图片描述

最后!
这里写图片描述
下面送上完整代码(分块)
html

<!--最大的div,是为了做为一个轮播图所需元素的容器-->
		<div id='main'>
	<!--轮播图片区   在取名时,因为各有所长(分别取名slide1-5),有共有特性(banner-slide),所以,取多个类名-->
				<div id='banner'>
					<!--图1-->
					<a href="">
					<div class='banner-slide  slide1 slide-active'>1</div>
					</a>
					<!--图2-->
					<a href="">
					<div class='banner-slide  slide2'>2</div>
					</a>
					<!--图3-->
					<a href="">
					<div class='banner-slide  slide3'>3</div>
					</a>
					<!--图4-->
					<a href="">
					<div class='banner-slide  slide4'>4</div>
					</a>
					<!--图5-->
					<a href="">
					<div class='banner-slide  slide5'>5</div>
					</a>
				</div>
		<!--
			移动数字绑定图片
			必然的是,和图片数量是对等的
		-->
				<div class="dots">
					<ul id='dots'>
						<li class="li1">1</li>
						<li>2</li>
						<li>3</li>
						<li>4</li>
						<li>5</li>
					</ul>
				</div>	
				<!--
					上、下一张按钮
				-->
				<div id="left-right">
					<div class="move" id="prev">&lsaquo;</div>
					<div class="move" id="next">&rsaquo;</div>
				</div>
		</div>	

css

	/*二话不说,上来就用通配符删除浏览器默认 值*/
	*{
		margin:0;
		padding: 0;
	}
	
	#main{
		width: 1200px;
		height: 600px;
		position: relative;
		margin: 50px auto;/*为了在此的观看效果,我选择了这个数据*/
		overflow: hidden;/*因为设置了隐藏,所示的效果只有一张solid1*/
		/*可在元素赠加和定位完成后进行影藏*/
	}
	/*
	 * 为所以图片设置同main一样宽高不大推荐
	 	因为,如果图片没进行过处理,强制改变宽高,容易产生变形,
	 	图片将变得难看。
	 * *//*为了使图片叠加所以我们使用absolute,在此之前
	 * 	我们需要去它的父级添加一个relative。
	 * */
	#main .banner-slide{
		position: absolute;
		width: 1200px;
		height: 600px; 
		overflow: hidden;/*防止图片过大,超出范围,影响视觉*/
		display:none;
	}
	#main .slide-active{
		display: block;
	}
	/*
	 * 挨个设置轮播图的图片
	 * 为了方便在图片所在div加内容,标签
	 * 我们选择把轮播图内容以background形式出现。
	 */
	#main .slide1{
		background: red;
	}
	#main .slide2{
		background: yellow;
	}
	#main .slide3{
		background: blue;
	}
	#main .slide4{
		background: green;
	}
	#main .slide5{
		background: deepskyblue;
	}
	/*ul标签的移动*/
	#main .dots #dots{
		position: absolute;
		margin-top: 560px;/*由于我设置了li高为40,总高600,所以进行
		560的移动*/
		margin-left: 275px;/*(1200-5*130)/2*/
	}
	#main .dots #dots li{
		height: 40px;
		width: 80px;
		border-radius: 20%;
		background: gray;/*在此的样式根据个人喜好自己添加*/
		/*由于上面的定位,所以*/
		float: left;/*为了是图标自左向右*/
		margin-left: 50px;
		list-style: none;
	}
	#main .dots #dots .li1{
		background: blue;
	}
	#main #left-right .move{
		position: absolute;
		margin-top:260px;
		height: 80px;
		width: 40px;
		font-size: 50px;/*设置<>大小*/
		padding-left: 10px ;
	}
	/*左右分离*/
	#main #left-right #next{
		right:0;
	}
	/*触碰上下张有效果*/
	#main #left-right .move:hover{
		background: rgba(0,0,0,0.4);
	}
	

js

//因为之前使用了很多的id,所以我们为了方便得到
//所需的document.getElementById();,做一个封装函数(我是网上看来觉得挺好的)
	function byid(id){
		return typeof(id)==='string'?document.getElementById(id):id;
	//	相当于 return if(typeof(id)==='string'){
	//		document.getElementById(id);
	//	}else{
	//		id;
	//	}
	}
	//接下来开始轮播图脚本了。
	//为了使得函数很多变量能互相使用,所以我们需要在wai
	//定义好全局变量。
	//len的设定   :  由于长度上的计算很少,而且图片和数字移动数量相同,只需设置一个
	// index的设定:  设置记数变量,因为数字从0开始计算。
	var main = byid('main'),
		pics = byid('banner').getElementsByTagName('div'),
		dots = byid('dots').getElementsByTagName('li'),
		prev = byid('prev'),
		next = byid('next'),
		len = pics.length,
		index = 0,
		timer = null;//timer是为了进行定时器的设置挺与开
	//定时器的关注
	function solide(){
		//轮播定时器(是整个容器即main):移入鼠标停止,和移出继续轮播
		//先来个划入清除定时器
		banner.onmouseover=function(){
			if(timer){//即timer不为null,为真
				clearInterval(timer);//清除setinterval,并且此时timer又为false,不过,随着循环(即师表
				//移开banner,循环继续又变回 setinterval。
			}
		}
		//再写一个划出继续启动定时器
		banner.onmouseout = function(){
			timer = setInterval(function(){
				index++;
				if(index>=len){
					index=0;
				}//注意因为index表示的是图片的标号,最大为4!!
				//有了index就可以进行轮播了,可是我们没有执行图片变化的番薯
				//设置一个,在全局作用域中。
				changImg();
			},3000);//setInterval为延时不停息的执行
		}
		banner.onmouseout();//这样子直接运行function,可以不用在鼠标移出才进行,进入页面同时就开始轮播
		//接下来我们开始数字下标绑定图片移动;
		for(var j=0;j<len;j++){
			//在开始前,我们需要知道,函数是可以独立作用域之外的。
			dots[j].index=j;//为所以dots属性添加id,分别为0,1,2,3,4。
			//不太推荐使用这样,毕竟id名字取数字开头不好,不太合规矩。
			dots[j].onclick = function(){
				index = this.index;//(引用id的是dots,及dots的id);
				changImg();
			}
		}
		//然后是上、下一张
		prev.onclick = function(){
			index--;
			if(index<0){
				index=len-1;
			}
			changImg();
		}
		next.onclick = function(){
			index++;
			if(index>=len){
				index=0;
			}
			changImg();
		}
	}
	solide();//提前写上,开始方法,才有轮播效果
	//图片自动切换
	function changImg(){
		for(var i=0;i<len;i++){
			pics[i].style.display='none';
			dots[i].className="";
		}
		pics[index].style.display='block';
		dots[index].className='li1';
	}

  • 35
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
嗨对于Web网站轮播图教程,我可以给你一些基本的指导。下面是一个常见的轮播图实现步骤: 1. HTML结构:在HTML文件中创建一个包含轮播图的容器元素,可以使用`<div>`或者`<ul>`等标签进行包裹。 2. CSS样式:使用CSS对轮播图容器进行布局和样式设置,例如设置宽度、高度、背景颜色等。 3. 图片准备:准备好要展示在轮播图中的图片。可以将图片保存在项目文件夹中,或者使用外部图片链接。 4. JavaScript功能:使用JavaScript来实现轮播图的切换效果。常见的方法是设置一个计时器和按钮,用于切换图片。 下面是一个简单的示例代码,供你参考: ``` HTML部分: <div class="slideshow-container"> <img src="image1.jpg" class="slide"> <img src="image2.jpg" class="slide"> <img src="image3.jpg" class="slide"> </div> CSS部分: .slideshow-container { width: 100%; height: 300px; } .slide { display: none; width: 100%; height: 100%; } JavaScript部分: let slides = document.getElementsByClassName("slide"); let currentSlide = 0; function showSlide(n) { slides[currentSlide].style.display = "none"; currentSlide = (n + slides.length) % slides.length; slides[currentSlide].style.display = "block"; } setInterval(() => { showSlide(currentSlide + 1); }, 3000); ``` 这只是一个简单的示例,你可以根据需求进行样式和功能的扩展。希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值