轮播图的简单实现

html实现代码:用于内容的显示

<div class="web">
			<div id="left" class="iconfont icon-xiangzuo"></div>
			<div id="right" class="iconfont icon-tubiaozhizuomoban"></div>
			<ul>
				<li><img src="img/porsche-normal.jpg"/></li>
				<li><img src="img/porsche-normal (2).jpg"/></li>
				<li><img src="img/porsche-normal (1).jpg"/></li>
				<li><img src="img/porsche-normal (3).jpg"/></li>
				<li><img src="img/porsche-normal (4).jpg"/></li>
			</ul>
			<div class="circle">

			</div>
		</div>

css设置内容的起初样式

<link rel="stylesheet" type="text/css" href="font/iconfont.css"/>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			.web{
				transform: translateY(40%);
				width: 790px;
				height: 340px;
				border-radius: 40px;
				position: relative;
				overflow: hidden;
				margin: 0 auto;
			}

			ul{
				width: 999999px;
				height: 340px;
			}
			ul>li{
				width: 790px;
				list-style:none;
				height: 340px;
				float: left;

			}
			ul::after{
				content: "";
				display: block;
				clear: both;
			}
			img{
				width: 790px;
				height: 340px;
			}
			#left,#right{
				position: absolute;
				width: 50px;
				height: 340px;
				color: rgba(255,255,255,0.7);
				text-align: center;
				line-height: 340px;
				font-size: 40px;
				top: 0;
				background: rgba(0,0,0,0.7);
				z-index: 1;
				display: none;
			}
			.web:hover>#left{
				display: block;
			}
			.web:hover>#right{
				display: block;
			}
			#left{
				left: 0;
			}
			#right{
				right: 0;
			}
			.circle{
				position: absolute;
				top: 90%;
				left: 50%;
				z-index: 2;
				transform: translate(-50%,-50%);
			}
			.circle>div{
				float: left;
				margin-right: 5px;
				width: 15px;
				height: 15px;
				border-radius: 50%;
				background: rgba(255,255,255,0.5);
				list-style: none;
			}
			.circle::after{
				content: "";
				display: block;
				clear: both;
			}
		</style>

 js则是让效果实现

<script type="text/javascript">
			var web=document.getElementsByClassName(‘web‘)[0];
			var left=document.getElementById(‘left‘);
			var right=document.getElementById(‘right‘);
			var ul=document.querySelector(‘ul‘);
			var li=document.querySelectorAll(‘li‘);
			var lis=li.length;
			var width=li[0].offsetWidth;
			var cloneli=li[0].cloneNode(true);
			var clonelastli=li[lis-1].cloneNode(true);
			var btn=true;
			ul.appendChild(cloneli);
			ul.insertBefore(clonelastli,li[0]);
			ul.style.transform=‘translateX(-‘+width+‘px)‘;
			var i=1;
			var circle=document.getElementsByClassName(‘circle‘)[0];
			var div=circle.getElementsByTagName(‘div‘);

			//按右向左滑动
			for(var p=0;p<li.length;p++){
				var div1=document.createElement(‘div‘);
				div1.className=‘bgg‘;
				circle.appendChild(div1);
			}
			div[0].style.background=‘#FFFFFF‘;
			//自动轮播定时器
			var xm=window.setInterval(function(){
				to_right();
			},1000);

			function to_right(){
				btn=false;
				i++;
				for(var j=0;j<div.length;j++){
					div[j].style.background=‘rgba(255,255,255,0.5)‘;
				}
				ul.style.transform=‘translateX(-‘+(i*width)+‘px)‘;
				if(i-1<div.length){
					div[i-1].style.background=‘#FFFFFF‘
				}else{
					div[0].style.background=‘#FFFFFF‘;
				}
				ul.style.transition=‘all 0.5s linear‘;
				ul.addEventListener(‘transitionend‘,function(){
					btn=true;
					if(i==li.length+1){
						ul.style.transition=‘none‘;
						i=1;
						ul.style.transform=‘translateX(-‘+(i*width)+‘px)‘;
						getComputedStyle(ul).width;
						ul.style.transition=‘all 0.5s linear‘;
					}
				})
			};
			right.addEventListener(‘click‘,function(){

				if(btn){
					to_right();
				}
			});

			//导航
			function cir(){
				for(var k=0;k<div.length;k++){
					div[k].index=k+1;
					div[k].addEventListener(‘click‘,function(a){
						i=this.index;
						ul.style.transform=‘translateX(-‘+(i*width)+‘px)‘;
						ul.style.transition=‘all 0.5s linear‘;
						for(var l=0;l<div.length;l++){
							div[l].style.background=‘rgba(255,255,255,0.5)‘;
						};
						div[i-1].style.background=‘#FFFFFF‘;
					});

				}

			};
			cir();

				//鼠标放内容上边会把自动轮播效果取消
				web.addEventListener(‘mouseover‘,function(){
					clearInterval(xm);
				});
				//鼠标离开内容会重新触发定时器
				web.addEventListener(‘mouseout‘,function(){
					xm=setInterval(function(){
						to_right();
					},1000);
				})

			//按左向右滑动

			function to_left(){
				btn=false;
				i--;
				for(var w=0;w<div.length;w++){
					div[w].style.background=‘rgba(255,255,255,0.5)‘;
				}
				if(i>0){
						div[i-1].style.background=‘#FFFFFF‘;
					}
				if(i==0){
					div[div.length-1].style.background=‘#FFFFFF‘;
				}
				ul.style.transition=‘all 0.5s linear‘;
				ul.style.transform=‘translateX(-‘+(i*width)+‘px)‘;
				ul.addEventListener(‘transitionend‘,function(){
					btn=true;
					if(i==0){
						ul.style.transition=‘none‘;
						i=li.length;
						ul.style.transform=‘translateX(-‘+width*(li.length)+‘px)‘;
						getComputedStyle(ul).width;
						ul.style.transition=‘all 0.5s linear‘;
					}
				});

			};
			left.addEventListener(‘click‘,function(){

				if(btn){
					to_left();

				}

			});

		</script>

  写的有点乱,新手,希望看过的大神们提出宝贵的意见!

时间: 2024-12-06 21:32:32

轮播图的简单实现的相关文章

类似轮播图的简单jQuery代码

代码和个人解析: <!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&

jquery简单无缝轮播图实现

此简单轮播图布局原理是: 一个div包含图片列表,和控制按钮.其宽度等于图片的宽度,溢出隐藏. 图片要左浮动. jquery原理: 开一个定时器,隔一段时间执行图片列表向左移动一个图片的宽度,同时在移动时设置一个回调函数. 把向左移动的图片,也是图片列表的第一张图片,添加到图片列表ul的末尾. 这样实现了,图片自动播放的效果. 怎么带动图片控制的小按钮变亮? 因为每一次图片轮播,都会改变图片值得索引,那就给函数加一个变量 i ,每一次执行定时器都会i++: var spanindex=i%4;

手把手原生js简单轮播图

在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用面向过程函数式编程去实现,相对于面向对象设计模式,代码难免会显得臃肿冗余.但没有面向对象的抽象却很适合新手理解与学习.已经在BAT的同学看到希望少喷点.另外可以多提意见. 轮播图的原理: 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利用定时器实现自动播放,或通过

JQuery实现简单的轮播图基本思路

demo点这里 需要达到的效果 常见的轮播图组件自动翻页,左右跳转按钮,下方是indexindex显示了当前图片位置,左右按钮就是更改当前位置第一个版本暂时不定义api了,写简单点 大概思路 用banner隐藏超出部分的图片imageList是inline要显示的话就float到标签位置 首先是html 从sublime换了webstorm,自带了emmet插件也就是可以这样写div.wrapper>div.banner>ul.imageList>(li>img)*4^img+im

js网站轮播图怎么做如何做?鸡哥教你简单制作效果炫酷

日了狗啦,刚刚鸡哥辛苦码了那么多字全丢了又要重新写,这是第二遍写了...今天鸡哥给小白写个不需要写js原生代码,只需要几个插件和一段通俗易懂得jquery代码就能搞定的轮播图,当然js原生代码写着也不算很繁琐,但是有些浪费时间,更何况很多人并不会用js直接写包括鸡哥,当年在学校还是研究过一段时间js的,当时还独自写了一个轮播图俘获了多少同班妹子的芳心,不过现在是基本废了,这东西要常写,不然忘的很快. 唉,本来还有妹子等着鸡哥呢,我这一大意文章丢了,重新写的话估计来不及了,先打个电话让妹子回家吧~

(新手向)基于Bootstrap的简单轮播图的手机实现

个人电脑里存了不少适合手机欣赏的图片,但是放手机里看是件很占据资源的事.鉴于家里有一台电脑经常开着,正好用来做家庭局域网共享,于是笔者就设想通过一种比较简单环保的思路.通过手机访问电脑内的图片. 首先是本地站点搭建:win+R输入mmc打开控制台,文件-添加/删除管理单元,Internet信息服务.添加确定,右侧基本信息,新建网站-把路径改了.设定一个端口号,手机浏览器就可以输入  电脑局域网ip:端口号 就可以连上去了. 接下来问题来了,一个个点击查看然后关闭图片是一件更不环保的事.何不做一个

简单说说tab标签页和轮播图

准确的来说,一个页面能够独立的做出轮播图才算是刚步入前端世界.说轮播图之前先来说说标签页,.因为它比较简单,我的效果使用jquery来实现的,. 具体代码只有一点点,. var timeout; $(document).ready(function(){ $("#tabfirst li").each(function(index){ var liNode=$(this); liNode.click(function(){ timeout=setTimeout(function(){ $

vue上的简单轮播图

好久没写轮播图了,今天在vue上写了个超简单的,效果还ok. .moveLeft{position:relative;right:ZOOMpx;transition:all 1s;} 原理是滚动时利用.moveLeft向左移动一个格子,造成滚动的假象,此时第二张图在第一个格子的位置: 这时候把第一个格子 li 的元素摘下接到 ul 末尾,并马上撤掉.moveLeft.每张图都在自己的格子上. 定时器循环该操作,一直轮播.可以用touch事件添加touchmove左右滑动效果和切换图片的功能,就不

实现比较简单的轮播图效果

实现简单的轮播图效果. 废话不多说,我们开始. HTML和CSS较为简单,不在这里做赘述.简单的给大家一个HTML代码. <div class="carousel"> <div id="goLeft"></div> <ul> <li><img src="" /></li> <li><img src="" /></l