• 滑屏插件


    之前需要做一个滑屏插件,现在将这个代码再次改进,使它更易于使用。
    代码如下:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title>Slider</title>
    		<!--引入文件-->
    		<script src="js/slider.js"></script>
    		<style>
    			#myDiv{
    				400px;
    				height: 400px;
    				position:relative;
    				top:0px;
    				bottom: 0px;
    				overflow:hidden;
    				background: #333;
    			}
    			
    		</style>
    	</head>
    	<body>
    			<div id="myDiv"></div>
    	</body>
    	<script>
    		//图片地址数组
    		let imgArr=['img/2.jpg','img/1.jpg','img/3.jpg','img/4.png','img/6.jpg'];
    		
    		//底部圆点样式
    		let circleStyle='10px;height: 10px;border-radius: 10px;background-color: #fff;';
    		
    		//左右按钮样式
    		let btnStyle='background-color:#fff;opacity:0.6;border:0;height:20px';
    		
    		//传入被插入元素,图片地址
    		new Slider(document.querySelector('#myDiv'),imgArr,circleStyle,btnStyle);
    		
    	</script>
    	
    </html>
    
    

    js文件

    class Slider{
    	constructor(ct,imgs,circleStyle,btnStyle) {
    		this.currentPage=0;
    		this.pageCount=imgs.length;
    	    let width=ct.offsetWidth;
    		let height=ct.offsetHeight;
    		this.width=width;
    		this.circleStyle=circleStyle;
    		this.btnStyle=btnStyle;
    		
    		this.innerCt=document.createElement('div');
    		this.innerCt.style.cssText=''+width*imgs.length+'px;'+'height:100%;padding:0px;margin:0px;overflow:hidden; position: relative;transition:transform 1s ease';
    		ct.appendChild(this.innerCt);
    		
    		let circleCt=document.createElement('div');
    		circleCt.style.cssText='position: absolute;bottom:0;left: 30%;padding: 10px 0;overflow:hidden;'
    		circleCt.setAttribute('align','center');
    		ct.appendChild(circleCt);
    		this.circles=[];
    		
    		imgs.forEach((item,index)=>{
    			let ct1=document.createElement('div');
    			ct1.style.cssText=''+width+'px;'+'height:'+height+'px;'+'float:left;';
    			ct1.setAttribute('align','center');
    			let img=new Image();
    			img.src=item;
    			
    			img.style.cssText=''+width+'px;'+'height:'+height+'px;';
    			
    			img.onload=()=>{
    				img.style.marginTop=(height-img.height)/2+'px';
    					}
    			ct1.appendChild(img);
    			this.innerCt.appendChild(ct1);
    			
    			let c=document.createElement('div');
    			
    			c.style.cssText=this.circleStyle+'display: inline-block;margin-left: 10px;float: left';
    			this.circles.push(c);
    			circleCt.appendChild(c);
    			c.addEventListener('mouseover',()=>{
    				this.slideTo(index);
    			})
    			
    		});
    		let css='position:absolute;top:50%;padding:0 10px;display: inline-block;float: left;margin-top:-15px;'+this.btnStyle;
    		let btnLeft=document.createElement('button')
    		btnLeft.innerHTML='<';
    		let btnRight=document.createElement('button')
    		btnRight.innerHTML='>';
    		btnLeft.style.cssText=css;
    		btnRight.style.cssText=css;
    		btnLeft.style.left='0px';
    		btnRight.style.right='0px';
    		ct.appendChild(btnLeft);
    		ct.appendChild(btnRight);
    		btnLeft.addEventListener('click',()=>{
    			if(this.currentPage===0)
    			{
    				return;
    			}
    			this.slideTo(this.currentPage-1);
    	
    			
    		})
    		btnRight.addEventListener('click',()=>{
    			if(this.currentPage===this.pageCount-1)
    			{
    				return;
    			}
    			
    			this.slideTo(this.currentPage+1);
    			
    		});
    		this.slideTo(0);
    		
    	}
    	
    	
    	
    	slideTo(num){
    		this.circles[this.currentPage].style.cssText=this.circleStyle+'display: inline-block;margin-left: 10px;float: left';
    		this.circles[num].style.backgroundColor='red';
    		let left=-num*this.width;
    		console.log(left);
    		this.innerCt.style.transform='translate('+left+'px,0px)';
    		this.currentPage=num;
    	}
    }
    
  • 相关阅读:
    利用python求非线性方程
    迪士尼穷游攻略
    爬虫八之爬取京东商品信息
    爬虫七之分析Ajax请求并爬取今日头条
    爬虫五之Selenium
    爬虫4之pyquery
    前端传入 SQL 语句 到后端执行
    手写分页处理
    集合(Map,List)分组:多属性进行分组
    java 枚举类非常好的运用实例
  • 原文地址:https://www.cnblogs.com/ellen-mylife/p/12007180.html
Copyright © 2020-2023  润新知