zoukankan      html  css  js  c++  java
  • 25、插件编写 及练习测试

    (一) 弹出层插件

    效果:
    点击按钮产生遮罩,弹出提示框,提示框能拖拽,能关闭.

    html:
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<style type="text/css">
    			#mark{
    				 100%;
    				height: 100%;
    				position: absolute;
    				left: 0;
    				top: 0;
    				background: #000000;
    				opacity: 0.3;
    				z-index: 999;
    				display: none;
    			}
    			#box{
    				position: absolute;
    				z-index: 1000;
    				background: #67a3d9;
    				display: none;
    				 400px;
    				height: 300px;
    				background: pink;
    				
    			}
    			#mou_head{
    				position: absolute;
    				z-index: 1001;
    				 400px;
    				height: 30px;
    				background: #006699;
    				/*top:-40px;*/
    			}
    			#cls{
    				position: absolute;
    				right: 10px;
    				z-index: 1002;
    			}
    		</style>
    	</head>
    	<body>
    		<input type="button" name="btn" id="btn" value="弹出" />
    		<div id="mark">
    			
    		</div>
    		<div id="box">
    			<div id="mou_head">
    				这个是用来实现拖层
    			</div>
    			<input type="button" name="cls" id="cls" value="关闭" />
    		</div>
    	</body>
    	<script type="text/javascript" src="js/drag.js" ></script>
    	<script type="text/javascript">
    		let oMark = document.getElementById("mark");
    		let oBtn = document.getElementById("btn");
    		let oDiv = document.getElementById("box");
    		let oDrag = document.getElementById("mou_head");
    		let oCls = document.getElementById("cls");
    		oBtn.onclick = function(){
    			oMark.style.display = 'block';
    			oDiv.style.display = "block";
    			oDiv.style.left = document.documentElement.clientWidth / 2 - oDiv.offsetWidth / 2 + "px";
    			oDiv.style.top = document.documentElement.clientHeight / 2 - oDiv.offsetHeight / 2 + "px";
    			new Drag("box");
    		}
    		oCls.onclick = function(){
    			oDiv.style.display = "none";
    			oMark.style.display = 'none';
    		}
    	</script>
    </html>
    
    js:
    class Drag{
    	constructor(id){
    		this.ele = document.getElementById(id);
    		var that = this;
    		this.ele.onmousedown = function(evt){
    			that.fnDown(evt);
    		}
    	}
    	fnDown(evt){
    		var e = evt || window.event;
    		var target = e.target || e.srcElement;
    		var that = this;
    		if(target.id == "mou_head"){
    			this.disX = e.clientX - this.ele.offsetLeft;
    			this.disY = e.clientY - this.ele.offsetTop;
    			document.onmousemove = function(evt){
    				that.fnMove(evt);
    			}
    			document.onmouseup = this.fnUp;
    			document.ondragstart = function(){
    				return false;
    			}
    		}
    		
    	}
    	fnMove(evt){
    		var e = evt || window.event;
    		var left = e.clientX - this.disX;
    		var top = e.clientY - this.disY;
    		if(left <= 0){
    			left = 0;
    		}else if(left >= document.documentElement.clientWidth - this.ele.offsetWidth){
    			left = document.documentElement.clientWidth - this.ele.offsetWidth;
    		}
    		if(top <= 0){
    			top = 0;
    		}else if(top >= document.documentElement.clientHeight - this.ele.offsetHeight){
    			top = document.documentElement.clientHeight - this.ele.offsetHeight;
    		}
    		this.ele.style.left = left + "px";
    		this.ele.style.top = top + "px";
    	}
    	fnUp(){
    		document.onmousemove = null;
    	}
    }
    

    (二) 轮播图插件

    html:
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title></title>
    		<link rel="stylesheet" type="text/css" href="css/index.css"/>
    		<script src="js/js.js"></script>
    	</head>
    	<body>
    		<div id="slide1" class="container">
    			<ul>
    				<li><a href="http://www.1000phone.com"><img src="img/1.jpg" alt="文字1"/></a></li>
    				<li><a href="http://www.1000phone.com"><img src="img/2.jpg" alt="文字2"/></a></li>
    				<li><a href="http://www.1000phone.com"><img src="img/3.jpg" alt="文字3"/></a></li>
    				<li><a href="http://www.1000phone.com"><img src="img/4.jpg" alt="文字4"/></a></li>
    			</ul>
    		</div>
    		<script type="text/javascript">
    			
    			var s = new Slider("slide1");
    			console.info(s);
    		</script>
    	</body>
    </html>
    
    
    css:
    ul,ol,li{
    	padding: 0;
    	margin: 0;
    	list-style: none;
    }
    .container{
    	 500px;
    	height: 300px;
    	margin: 50px auto;
    	position: relative;
    }
    #msg{
    	 100%;
    	height: 40px;
    	line-height: 40px;
    	text-indent: 10px;
    	position: absolute;
    	bottom: 0px;
    	left: 0;
    	color: white;
    	font-size: 16px;
    	background: rgba(0,0,0,.8);
    	cursor: pointer;
    	z-index: 1;
    }
    ul li a {
    	display: block;
    }
    img{
    	 500px;
    	height: 300px;
    }
    ol{
    	position: absolute;
    	bottom: 10px;
    	left: 50%;
    	-webkit-transform: translateX(-50%);
    	background: rgba(255,255,255,.6);
    	border-radius: 7px;
    	padding: 3px;
    	z-index: 2;
    }
    ol li{
    	background: red;
    	float: left;
    	 8px;
    	height: 8px;
    	margin-left: 5px;
    	-webkit-border-radius: 4px;
    	-moz-border-radius: 4px;
    	margin-right: 7px;
    }
    span{
    	 30px;
    	height: 45px;
    	line-height: 45px;
    	font-size: 40px;
    	color: white;
    	background: rgba(255,255,255,.3);
    	cursor: pointer;
    	position: absolute;
    	font-weight: bold;
    	top: 50%;
    	left: 0;
    	-webkit-transform: translateY(-50%);
    	-moz-transform:translateY(-50%);
    	-webkit-transition: all 1s ease 0s;
    }
    #rtBtn{
    	right: 0;
    	left: auto;
    }
    span:hover{
    	-webkit-transform: rotateY(40deg) translateX(-3px) scale(1.2);
    }
    
    
    
    js:
    //ES5
    function Slider(id){
    	this.ele = this.$id(id);
    	this.ullis = this.$get(this.$get(this.ele,'ul')[0],'li');
    	this.num = this.ullis.length;
    	this.ollis = this.createEle();
    	this.indexA = 0;
    	this.div = this.$id('msg');
    	this.slide();
    	this.addEvent();
    	this.timer = null;
    	this.autoPlay();
    }
    Slider.prototype = {
    	$id : function(id){
    		return document.getElementById(id);
    	},
    	$get : function(obj,tagName){
    		if(typeof obj == 'object'){
    			return obj.getElementsByTagName(tagName);
    		}else if(typeof obj == 'string' && this.$id(obj)){
    			return this.$id(obj).getElementsByTagName(tagName);
    		}
    	},
    	$create : function(tagName){
    		return document.createElement(tagName);
    	},
    	createEle : function(){
    		var ol = this.$create('ol');
    		var arr = [];
    		for(var i = 0;i < this.num;i ++){
    			var li = this.$create('li');
    			arr.push(li);
    			ol.appendChild(li);
    		}
    		this.ele.appendChild(ol);
    		
    		
    		var leftSpan = this.$create('span');
    		leftSpan.id = 'ltBtn';
    		leftSpan.innerHTML = '&lt;';
    		this.ele.appendChild(leftSpan);
    		
    		var rightSpan = this.$create('span');
    		rightSpan.id = 'rtBtn';
    		rightSpan.innerHTML = '&gt;';
    		this.ele.appendChild(rightSpan);
    		
    		
    		var div = this.$create('div');
    		div.id = 'msg';
    		this.ele.appendChild(div);
    		
    		
    		return arr;
    	},
    	slide : function(){
    		for(var i = 0;i < this.num;i ++){
    			this.ullis[i].style.display = 'none';
    			this.ollis[i].style.background = 'red';
    		}
    		this.ullis[this.indexA].style.display = 'block';
    		this.ollis[this.indexA].style.background = 'blue';
    		
    		this.div.innerHTML = this.ullis[this.indexA].firstChild.firstChild.alt;
    	},
    	addEvent : function(){
    		this.ltBtn = this.$id('ltBtn');
    		this.rtBtn = this.$id('rtBtn');
    		var that = this;
    		this.ltBtn.onclick = function(){
    			that.indexA --;
    			if(that.indexA == -1){
    				that.indexA = that.num - 1;
    			}
    			that.slide();
    		}
    		this.rtBtn.onclick = function(){
    			that.indexA ++;
    			if(that.indexA == that.num){
    				that.indexA = 0;
    			}
    			that.slide();
    		}
    		
    		for(var i= 0;i < this.num; i ++){
    			this.ollis[i].index = i;
    			
    			this.ollis[i].onmouseover = function(){
    				that.indexA = this.index;
    				that.slide();
    			}
    		}
    	},
    	autoPlay : function(){
    		var that = this;
    		this.timer = setInterval(function(){
    			that.indexA ++;
    			if(that.indexA == that.num){
    				that.indexA = 0;
    			}
    			that.slide();
    		},3000)
    		this.ele.onmouseover = function(){
    			clearInterval(that.timer);
    		}
    		this.ele.onmouseout = function(){
    			that.autoPlay();
    		}
    	}
    }
    
    

    (三) Ajax插件

    html:
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		
    		<script type="text/javascript" src="ajax.js" ></script>
    		<script type="text/javascript">
    			$ajax({
    				type : "get",
    				url : "index.php",
    				data : {
    					"name" : "张三",
    					"pwd" : "123"
    				},
    				success : function(response){
    					var oDiv = document.createElement("div");
    					oDiv.innerHTML = response;
    					document.body.appendChild(oDiv);
    				}
    			});
    		</script>
    	</body>
    </html>
    
    
    js:

    ajax.js插件

    /* json对象
     *  obj.type   http连接的方式,包括POST和GET两种方式
     *  obj.url  发送请求的url
     *  obj.async 是否为异步请求,true 为异步,false为同步
     *  obj.data  发送的参数,格式为对象类型  {"name" : "张三","age":18}
     *  obj.success ajax发送并接收成功调用的回调函数
     *  obj.error ajax访问失败的回调函数
     * 
    
     * ?"key=value&key=value"
     * 
     *  setRequestHeader 设置请求头
     * 	设置请求头前需先调用open方法打开一个url
     * 	设置数据格式
     *  1.发送json格式数据
     * 	xhr.setRequestHeader("Content-type","application/json; charset=utf-8");
     *  2.发送表单数据
     *  xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=utf-8");
     *  3.发送纯文本
     *  xhr.setRequestHeader("Content-type","text/plain;charset=utf-8");
     *  4.发送html文本
     *  xhr.setRequestHeader("Content-type","text/html;charset=utf-8");
     */
    
    function $ajax(obj){
    	//初始化参数
    	if(!obj){
    		return ;
    	}
    	obj.type = obj.type || 'GET';
    	obj.url = obj.url || "";
    	obj.async = obj.async || 'true';
    	obj.data = obj.data || {};
    	obj.success = obj.success || function(){};
    	
    	//准备(转换参数)
    	//{name:"张三",age:18}
    	//"name=张三&age=18"
    	var str = '';
    	for(var key in obj.data){
    		str += key + '=' + obj.data[key] + '&';
    		//"&name=张三&age=18";
    	}
    	str = str.substring(0,str.length - 1);
    	alert(str);
    	var xhr = new XMLHttpRequest();
    	if(obj.type.toUpperCase() == 'GET'){
    		xhr.open(obj.type,obj.url + '?' + str,obj.async);
    		xhr.send();
    	}else if(obj.type.toUpperCase() == 'POST'){
    		xhr.open(obj.type,obj.url,obj.async);
    		xhr.setRequestHeader("content-type","application/x-www-form-urlencoded;charset=utf-8");
    		xhr.send(str);
    	}
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState === 4 && xhr.status === 200){
    			obj.success(xhr.responseText)
    		}
    	}
    }
    
    
    php:
    <?php
    	$name = $_GET['name'];
    	$pwd = $_GET['pwd'];
    	if($name == '张三'&& $pwd == '123'){
    		echo 'ok';
    	}else{
    		echo 'no';
    	}
    
    

    习题回顾

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    <script type="text/javascript">
    /*
    在界面上弹出一个带输入的提示框,只能输入数字,如果输入的数字大于10
    ,点击确定以后,弹出提示框,
    提示我们是否进行输入的数 + 10, confirm("是否进行输入的数 + 10")
    	<1>如果点击确定,输出表达式和结果,
    	<2>如果点击取消,重新弹出带输入的提示框,重复上述操作
    		
    	如果输入的数小于10,直接弹出警告框,无法运算
    	
    点击取消,就不进行后面操作。直接退出循环
    
    */
    
    //do{
    //	var n = Number(prompt("请输入数字:"));
    //
    //	if(isNaN(n) || n == 0){
    //		break;
    //	}else{
    //		if(n > 10){
    //			if(confirm("是否进行输入的数 + 10")){
    //				alert("" + n + 10 + '=' + (n + 10));
    //			}
    //		}else{
    //			alert('无法运算');
    //		}
    //	}
    //}while(1);	
    
    //var now = new Date();
    //var newTime = new Date(2018,10,1);
    //var ch = Math.floor((newTime - now) / 1000);
    //alert(ch);
    
    
    //扁平化数组
    	var arr = [1,[2,3],[4,5],6,['hello'],9];==>[1,2,3,4,5,6,'hello',9]
    	//递归
    	function fn(arr){
    		var list = []; //[1,2,3,4,5,6,'hello',9]
    		if(arr instanceof Array){
    			for(var i = 0;i < arr.length;i ++){
    				list = list.concat(fn(arr[i]));
    			}
    		}else{
    			list.push(arr);
    		}
    		return list;
    	}
    	alert(fn(arr));
    </script>
    	</body>
    </html>
    
    
  • 相关阅读:
    this指向问题
    b继承a的函数
    如何解决跨域问题
    事件冒泡和阻止事件冒泡
    Spring5(二)——IOC
    MySQL基础(四)——
    MySQL基础(二)——常用命令
    MySQL基础(一)——入门
    Linux(二)——常用命令
    Linux(一)——简介
  • 原文地址:https://www.cnblogs.com/zhongchao666/p/9275602.html
Copyright © 2011-2022 走看看