轮播图原理大概是这样的,假定三张图片需要做轮播效果,首先需要将这三张图片并列放置,然后将这个整体并列向左移动,每当一张图片完整的从显示框走出,则将这张图片放置到最后面,循环往复就可以实现图片向左(或一个方向)移动。然后,需要有两个定时器,一个定时器A控制三张图片整体左移速度,另一个定时器B控制每当一张完整的图片走进这个显示框就等待一到两秒得到更好的用户体验。
我这里用三个div框当作轮播图来演示。
在html的body中添加一个div作为显示框,然后在这个div内部添加三个子div作为图片显示。代码如下:

<div id="box">
	<div id="red" class="slide"></div>
	<div id="green" class="slide"></div>
	<div id="blue" class="slide"></div>
</div>

头部添加css样式:

此时网页中应该是有一个黑色显示框div,内部有红、绿、蓝三个div框,三个框从上到下排列。
第一步,需要将三张图片都并列显示。
要实现将div挪动,且div比较方便控制每时每刻的位置(移动),只能使用相对定位,且为方便,三个子div位置移动应该是相对box,所以box应该作为相对的参照点。分别为box和slide代码添加position属性:

#box{
	width:100px;
	height:100px;
	border:1px solid black;
	position:relative;
}
.slide{
	width:100px;
	height:100px;
	position:absolute;
}

为整个页面添加onload加载完成事件,当浏览器打开并加载完并自动执行事件中的代码块。这部分js代码写在刚才css下面即可,保持同级结构。

 <script type="text/javascript">
onload=function(){
	var arr = document.getElementsByClassName("slide");
	for(var i=0;i<arr.length;i  ){
		arr[i].style.left = i*100 "px";
	}
}
</script>

当页面加载完全,三个div应该并列在一起。
接下来,需要实现将这三个div整体向左移动,使用定时器,即前面的定时器A。*onload同级下面添加如下代码:

function LeftMove(){
		var arr = document.getElementsByClassName("slide");//获取三个子div
		for(var i=0;i<arr.length;i  ){
			var left = parseFloat(arr[i].style.left);
			left-=2;
			var width = 100;//图片的宽度
			if(left<=-width){
				left=(arr.length-1)*width;//当图片完全走出显示框,拼接到末尾
			}
			arr[i].style.left = left "px";
		}
		}
	moveId=setInterval(LeftMove,10);//设置一个10毫秒定时器,并给自己取名
**此时,三个div已经能够缓慢向左移动。现在需要再开启一个定时器B,并将A定时器装入到B定时器中,A的定时器时间间隔应该长于一个div完全走进显示框的时间,我这里设置为3秒。然后,将A定时器装入到方法divInterval中,B定时器调用这个方法。且为了用户体验效果更好,当一个div完全走入显示框后,应该等待一段时间,再开是移动。所以在LeftMove方法中,*if判断中还需关闭moveId这个定时器*,停止此时移动的div定时器。当3秒不到的时间后,定时器B又会开启一个新的定时器A。**
	if处添加一句代码为:
		

if(left<=-width){
				left=(arr.length-1)*width;//当图片完全走出显示框,拼接到末尾
				clearInterval(moveId);
			}
		
		function divInterval(){
		moveId=setInterval(LeftMove,10);//设置一个10毫秒定时器
		}
		timeId=setInterval(divInterval,3000);//设置一个3秒的定时器。

到这里,轮播图基本已经实现了。然后,还需要在css样式中为box添加overflow,将超出显示框的div隐藏。

	#box{
width:100px;
height:100px;
border:1px solid black;
position:relative;
overflow:hidden;}

然后为了解决当鼠标悬停在轮播图,轮播图停止轮播效果,需要在box上添加鼠标移入和移出事件。开始标签:

<div id="box" onmouseover="stop()" onmouseout="start()">

添加js代码:

function stop(){
	clearInterval(timeId);//鼠标停留关闭B定时器
}
function start(){
	clearInterval(timeId);//重新打开一个定时前,先关闭之前定时器。
	timeId=setInterval(divInterval,2000);//重启一个定时器
}

当浏览器窗口切出或页面切换到其他页面一段时间再回来时,轮播效果会有短暂加速(随切出时间加长而加长)。主要是因为虽然窗口切出去了,定时器依然在执行,但页面却没有将效果显示,所以切回来后会将之前的效果显示出来而加速轮播图。所以添加页面焦点事件:

//页面失去焦点定时器停止
onblur = function(){
	stop();
}
//页面获取焦点时重启定时器
onfocus = function(){
	start();
}

全部代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>轮播图</title>
<style type="text/css">
	#box{
		width:100px;
		height:100px;
		border:1px solid black;
		position:relative;
		overflow:hidden;
	}
	#red{
		background-color:red;
		width:100px;
	}
	#green{
		background-color:green;
		width:100px;
	}
	#blue{
		background-color:blue;
		width:100px;
	}
	.slide{
		width:100px;
		height:100px;
		position:absolute;
	}
</style>
<script type="text/javascript">
	onload=function(){
		var arr = document.getElementsByClassName("slide");
		for(var i=0;i<arr.length;i  ){
			arr[i].style.left = i*100 "px";
		}
	}
	function LeftMove(){
		var arr = document.getElementsByClassName("slide");//获取三个子div
		for(var i=0;i<arr.length;i  ){
			var left = parseFloat(arr[i].style.left);
			left-=2;
			var width = 100;//图片的宽度
			if(left<=-width){
				left=(arr.length-1)*width;//当图片完全走出显示框,拼接到末尾
				clearInterval(moveId);
			}
			arr[i].style.left = left "px";
		}
	}
	function divInterval(){
		moveId=setInterval(LeftMove,10);//设置一个10毫秒定时器
	}
	
	
	timeId=setInterval(divInterval,2000);//设置一个3秒的定时器。
	
	function stop(){
		clearInterval(timeId);
	}
	function start(){
		clearInterval(timeId);
		timeId=setInterval(divInterval,2000);
	}
	
	//页面失去焦点停止
	onblur = function(){
		stop();
	}
	//页面获取焦点时开始
	onfocus = function(){
		start();
	}
</script>
</head>
<body>
	<div id="box" onmouseover="stop()" onmouseout="start()">
		<div id="red" class="slide"></div>
		<div id="green" class="slide"></div>
		<div id="blue" class="slide"></div>
	</div>
</body>
</html>

到此这篇关于HTML5轮播图全代码的文章就介绍到这了,更多相关HTML5轮播图内容请搜索Devmax以前的文章或继续浏览下面的相关文章,希望大家以后多多支持Devmax!

HTML5轮播图全代码的更多相关文章

  1. bootstrapv4轮播图去除两侧阴影及线框的方法

    这篇文章主要介绍了bootstrapv4轮播图去除两侧阴影及线框的方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. AmazeUI图片轮播效果的示例代码

    这篇文章主要介绍了AmazeUI图片轮播效果的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. Swift版本的图片轮播器框架

    大家在使用的时候,只需要像这样:一个图片轮播器就完成了,是不是很简单呢?赶紧试试吧~如果框架中有什么bug,还请大家多多指教哦.图片效果如下:第一个自己写的框架,难免有不完善的地方,希望大家能帮着作者君一起完成哦~~补充:那天,这篇博客被隔壁老王看到了,把我狠狠的吐槽了一下。你这个毫无特色的图片轮播器也好意思上传?敢不敢来个炫一点的,于是,小汤就又含泪添加了一个比较酷炫的图片轮播器效果。。。

  4. 源码推荐(7.21):顶部滑动菜单FDSlideBar,Swift版无限循环轮播图

    顶部滑动菜单FDSlideBarFDSlideBar是一个顶部滑动菜单,如常见的网易、腾讯新闻等样式。菜单间切换流畅,具有较好的体验性。测试环境:Xcode6.2,iOS6.0以上Swift版无限循环轮播图无限循环轮播图片点击代理可设置图片Url的数组Url和本地图片混合轮播测试环境:Xcode6.2,iOS7.0以上弹幕系统实现--QHDanumuDemo说明:QHDanmu文件夹下是主要的弹幕模块系统,QHDanmuSend文件夹下是简单的发射弹幕的界面。

  5. Swift轮播图的实现及原理(支持xib)

    功能:无限循环轮播图片点击代理本地、远端图片混设支持code、xib、storyboard调用支持旋转支持iPhone、iPad运行展示图:使用方法:下载后直接把CircleView.swift和CircleView.xib这2个文件拉进项目中pod添加kingfisherxib||storyboard:code:添加:下步计划:支持pod开放更多功能如有意见,欢迎issue项目地址:swift无限自动循环轮播图

  6. swift 定时器的使用

    参考:http://www.cnblogs.com/sxlfybb/p/3792611.htmlNSTimer有2个构造函数注意到,注释为未继承,所以两个构造不能用NSTimer有2个静态实例在swift中,找不到NSInvocation类,日了狗了还好有另一种使用静态函数的形式去实例化:

  7. Swift-轻松实现图片轮播

    我写android的时候实现图片轮播用的viewpager,其实还算可以,也不是特麻烦,用swift实现图片轮播我用的scrollview+pageControl,今天我记录一下实现的过程,理清一下思路。这个一个scrollview,横着放,里面放了四张图片,计算出图片的frame,实现轮播的时候,我们去计算scrollview的offset偏移量,然后用定时器timer去触发滚动,计算当前的偏移量和page,配合pageControll,指示器改变,当到达最后一张图片的时候我们把page设为0。错误总结

  8. Swift图片轮播的代码

    //提示当前滚动的图片,指示器;拖动几张图片到Images.xcassets中,本例子拖动5张图片,名字分别为gallery1.....gallery5.4)在类内定义一个NSTimer类型的定时器:vartimer:NSTimer!

  9. Swift - 时间控制器NSTimer每隔一定时间执行某个函数

  10. Swift/OC计时器使用方法

    .invalidate();timer=nil;}

随机推荐

  1. 微信小程序canvas实现水平、垂直居中效果

    这篇文章主要介绍了小程序中canvas实现水平、垂直居中效果,本文图文实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. 使用HTML5做的导航条详细步骤

    这篇文章主要介绍了用HTML5做的导航条详细步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. H5最强接口之canvas实现动态图形功能

    这篇文章主要介绍了H5最强接口之canvas实现动态图形功能,需要的朋友可以参考下

  4. Canvas高级路径操作之拖拽对象的实现

    这篇文章主要介绍了Canvas高级路径操作之拖拽对象的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. html5视频自动横过来自适应页面且点击播放功能的实现

    这篇文章主要介绍了h5视频自动横过来自适应页面且点击播放,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. 详解HTML5中的picture元素响应式处理图片

    这篇文章主要介绍了详解HTML5中的picture元素响应式处理图片,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. canvas像素点操作之视频绿幕抠图

    这篇文章主要介绍了canvas像素点操作之视频绿幕抠图的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. html5利用canvas实现颜色容差抠图功能

    这篇文章主要介绍了html5利用canvas实现颜色容差抠图功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  9. canvas绘制视频封面的方法

    这篇文章主要介绍了canvas绘制视频封面的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. HTML5拖拽功能实现的拼图游戏

    本文通过实例代码给大家介绍了HTML5拖拽功能实现的拼图游戏,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

返回
顶部