一、jQuery案例
1.overflow属性
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> div{ width: 150px; height: 150px; background-color: lightgray; /*scroll hidden*/ overflow: scroll; } </style> </head> <body> <!-- overflow:定义溢出元素内容区的内容会如何处理 visible:默认值,内容不会被修剪,会呈现在元素框之外 hidden:隐藏,内容会被修剪,并且多于内容是不可见的 scroll:滚动,内容会被修剪,但是浏览器会显示滚动条以方便显示多余的内容 auto:根据内容自适应 inherit:规定当前元素继承父元素的overflow的值 --> <div> 默认值,内容不会被修剪,会呈现在元素框之外 默认值,内容不会被修剪,会呈现在元素框之外 默认值,内容不会被修剪,会呈现在元素框之外 默认值,内容不会被修剪,会呈现在元素框之外 默认值,内容不会被修剪,会呈现在元素框之外 </div> </body> </html>
2.cursor属性
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- cursor:定义鼠标指针放在元素范围内的时候的光标形状 --> <div style="cursor: auto;">指针放在元素范围内的时候的光</div> <div style="cursor: default;">指针放在元素范围内的时候的光</div> <div style="cursor: crosshair;">指针放在元素范围内的时候的光</div> <div style="cursor: text;">指针放在元素范围内的时候的光</div> <div style="cursor: wait;">指针放在元素范围内的时候的光</div> <div style="cursor: help;">指针放在元素范围内的时候的光</div> <div style="cursor: move;">指针放在元素范围内的时候的光</div> <div style="cursor: pointer;">指针放在元素范围内的时候的光</div> </body> </html>
3.选项卡
//页面加载响应函数 $(function(){ //给导航中的li添加单击事件 $("#menu li").bind("click",function(){ //一.导航按钮的切换 //1.清空所有导航按钮上的active //$("#menu li").removeClass("active"); //2.给当前选中的li重新添加active /* * eq():在一个容器中获取第几个子标签 * index():获取当前被操作的标签在一个指定容器中的下标 */ //$("#menu li").eq($(this).index()).addClass("active"); //将上面的操作合并为一行代码 $("#menu li").removeClass("active").eq($(this).index()).addClass("active"); //二、正文部分的切换 $("#panel .panel").removeClass("active").eq($(this).index()).addClass("active"); }); })
/*全局设置*/ *{ padding: 0px; margin: 0px; font-size: 12px; } /*设置所有的无序列表*/ ul{ list-style: none; } /*设置整体*/ #box{ margin: 50px auto; width: 570px; } /*设置导航*/ #menu{ /* * 单词,rgb() #ffffff----->#fff */ background: #eee; /*处理溢出的部分*/ overflow: hidden; } /*设置导航中的li*/ #menu li{ float: left; width: 90px; height: 30px; line-height: 30px; text-align: center; border: 1px solid #eee; border-bottom-color: #ccc; border-top-width: 2px; cursor: pointer; } /*设置导航被选中的样式*/ #menu .active{ border-left-color: #ccc; border-right-color: #ccc; border-top-color: blue; border-bottom-color: #fff; background: #fff; } /*设置每一块正文内容*/ #panel .panel{ /*将每一块隐藏*/ display: none; margin: 10px 0px; overflow: hidden; } /*单独设置第一块的正文:显示*/ #panel .active{ display: block; } /*图片*/ #panel .panel img{ float: left; } /*标题*/ #panel .panel .title{ margin-left:280px; padding-bottom: 10px; border-bottom: 1px solid #ccc; } #panel .panel .list{ margin-left:280px; } #panel .panel .list li{ float: left; margin-right: 10px; margin-top: 15px; text-decoration: underline; }
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <!--引入外部文件--> <link href="css/menuStyle.css" type="text/css" rel="stylesheet" /> <script src="js/jquery-3.3.1.js" type="text/javascript"></script> </head> <body> <!--整体--> <div id="box"> <!--导航--> <ul id="menu"> <!--使用类选择器:一个类选择器可以作用于多个元素,active表示被选中【活跃】--> <li class="active">手机通讯</li> <li>电脑数码</li> <li>食品百货</li> <li>电脑数码</li> <li>食品百货</li> <li>电脑数码</li> </ul> <!--正文部分--> <div id="panel"> <!--panel表示6块内容的共性--> <div class="panel active"> <img src="img/images/1.jpg" /> <div class="title">京东家电.年度好货盘点</div> <ul class="list"> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> </ul> </div> <div class="panel"> <img src="img/images/2.jpg" /> <div class="title">京东家电.年度好货盘点</div> <ul class="list"> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> </ul> </div> <div class="panel"> <img src="img/images/3.jpg" /> <div class="title">京东家电.年度好货盘点</div> <ul class="list"> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> </ul> </div> <div class="panel"> <img src="img/images/4.jpg" /> <div class="title">京东家电.年度好货盘点</div> <ul class="list"> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> </ul> </div> <div class="panel"> <img src="img/images/5.jpg" /> <div class="title">京东家电.年度好货盘点</div> <ul class="list"> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> </ul> </div> <div class="panel"> <img src="img/images/6.jpg" /> <div class="title">京东家电.年度好货盘点</div> <ul class="list"> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> <li>买电视立省8888元</li> </ul> </div> </div> </div> <script type="text/javascript" src="js/menujs.js"></script> </body> </html>
4.省份城市区域三级关联
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #city,#country{ display:none; } </style> <script type="text/javascript" src="js/jquery-3.3.1.js"></script> <script type="text/javascript" src="js/city.js"></script> </head> <body> <select name="province" id="province"> <option>请选择</option> </select> <select name="city" id="city"> <option>请选择</option> </select> <select name="country" id="country"> <option>请选择</option> </select> <script type="text/javascript"> $(function(){ //1.加载省份 function provinceLoad(){ //通过键获取省份的数组 var provinceArr = zcityData["0"]; //定义一个变量,用于拼接所有的省份信息 var provinceStr = "<option value='-1'>请选择</option>"; //遍历数组,获取数组中省份名称 for(var i = 0; i < provinceArr.length;i++){ //provinceArr[i] provinceStr += "<option value='" + i + "'>" + provinceArr[i] + "</option>"; } //给省份的select标签设置html内容 $("select[name='province']").html(provinceStr); } //调用函数 provinceLoad(); //2.加载城市 function cityLoad(){ //当省份的值发生改变的时候加载城市的select $("select[name='province']").change(function(){ //隐藏区域的select $("#country").css("display","none"); //获取当前被选中的省份,获取当前选中的省份的value值,可以去获取对应的城市 var provinceVal = $(this).val(); //判断 if(provinceVal == -1){ $("select[name='city']").css("display","none"); return; } //手动拼接属性 var city = "0_" + provinceVal; //通过属性名获取对应的城市 var cityArr = zcityData[city]; //定义一个字符串,用于拼接所有的城市 var cityStr = "<option value='-1'>请选择</option>"; //遍历数组 for(var i = 0;i < cityArr.length;i++){ cityStr += "<option value='" + city + "_" + i + "'>" + cityArr[i] + "</option>"; } //设置html文件内容 $("select[name='city']").html(cityStr); //需要让城市的select和省份的select在同一行显示出来 $("select[name='city']").css("display","inline-block"); }); } //调用 cityLoad(); //3.加载区域 function countryLoad(){ //当城市的值发生改变的时候加载区域的select $("select[name='city']").change(function(){ //获取当前选中的城市对应的value值,获取对应的区域 var cityVal = $(this).val(); if(cityVal == -1){ $("select[name='country']").css("display","none"); return; } //通过城市的value获取对应的区域 var countryArr = zcityData[cityVal]; //定义一个变量,用于拼接区域的字符串 var countryStr = "<option value='-1'>请选择</option>"; //遍历 for(var i = 0;i < countryArr.length;i++){ countryStr += "<option>" + countryArr[i] + "</option>"; } //设置html文件内容 $("select[name='country']").html(countryStr); //显示 $("select[name='country']").css("display","inline-block"); }); } countryLoad(); }) </script> </body> </html>
5.swipe
见微信场景页代码
二、AJAX
1.简介
AJAX=Asynchronous JavaScript And XML ,异步的javascript和xml
ajax不是新的编程语言,而是一种用于快速创建动态网页的技术
作用:传统的网页如果需要更新网页内容,则会重新加载整个网页,如果在网页中使用了ajax,实现局部刷新
异步交互:客户端发出一个请求,无需等待服务端的响应,就可以继续发送请求
同步交互:客户端发出一个请求,需要等待服务端的响应之后,才能发出第二次请求
2.ajax的工作原理【面试题】
C/S:client server ,客户端服务端
B/S:Broswer sever,浏览器服务端
工作流程:
四步操作:
a.创建核心对象【XMLHttpRequest/ActiveObject】
b.使用核心对象打开与服务器之间的连接:open()
c.发送请求:send()
d.注册监听,监听服务器响应
3.表单请求
3.1get请求
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 表单 作用:向服务器提交不同类型的数据 action:提交到哪里去 method:提交方式 表单提交数据的方式有两种:get和post,默认为get get请求: 将数据名称和数据值使用=连接,并且使用&拼接, 缺点:不安全,会将所有的数据暴露在地址栏中,最大传输为2kb,并不适合传输较大的数据 优点:简单,效率高 url:统一资源定位符【网址】 格式:网络协议://主机名/资源的路径?关键字1=值1&关键字2=值2 --> <form action="http://10.12.152.104/formget.php" method="get"> <input type="text" name="username" /> <input type="text" name="age" /> <input type="password" name="password" /> <br /> <input type="submit" value="提交" /> </form> </body> </html>
3.2post请求
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- post请求: 安全,数据通过浏览器内部传输的,上传文件的大小理论上没有任何的限制 缺点:比get麻烦 --> <form action="http://10.12.152.104/formpost.php" method="post"> <input type="text" name="username" /> <input type="text" name="age" /> <input type="password" name="password" /> <br /> <input type="submit" value="提交" /> </form> </body> </html>
4.原生的ajax请求
4.1get请求
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> 用户名:<input type="text" name="username" id="username"/><br /> 年龄:<input type="text" name="age" id="age"/><br /> 密码:<input type="password" name="password" id="password"/> <br /> <button id="btn">提交数据</button> <script type="text/javascript"> window.onload = function(){ //获取标签对象 var userInput = document.getElementById("username"); var ageInput = document.getElementById("age"); var pwdInput = document.getElementById("password"); var btn = document.getElementById("btn"); //给按钮绑定点击事件 btn.onclick = function(){ //请求服务器过程 //1.创建请求的核心对象 var xhr = null; //兼容问题:如果没有异常,则正常创建;如果 出现异常,则需要采用另外方式创建 //Python异常:try-except,js:try-catch try{ xhr = new XMLHttpRequest(); }catch(e){ xhr = new ActiveXObject("Microsoft.XMLHTTP"); } //2.与服务器建立连接 //open(请求方式,服务器地址,true) //get请求的特点:将数据拼接在服务器地址的后面传输 //http://10.12.152.104/ajaxget.php?username=xxxx&age=xxx&password=xxx //对参数中出现的中文需要编码处理:encodeURI() urlStr = "http://10.12.152.104/ajaxget.php?username=" + encodeURI(userInput.value) + "&age=" + ageInput.value + "&password=" + pwdInput.value; xhr.open("get",urlStr ,true); //3.发送请求 xhr.send(); //4.建立监听,监听服务器的响应 xhr.onreadystatechange = function(){ //是服务器返回的响应 /* * 有两个字段可以捕捉 * readystate;表示当前核心对象的状态 * 0:请求未初始化【还没有调用open()】 * 1:请求已经建立,但是还没有发送【还没有调用send()】 * 2:请求已经发送,正在处理中 * 3:请求正在处理,通常在响应中的部分数据就可以说使用了 * 4:响应已经完成,可以获取并使用服务端的响应 * * * status:服务器返回的响应码 * 404:数据不存在 * 200:请求成功 * 400 * 500 * * 1xx:信息响应类,表示接受到请求需要继续处理 * 2xx:处理成功响应类, * 3xx;重定向响应类, * 4xx:客户端响应 * 5xx:服务端错误 * */ if(xhr.readyState == 4){ if(xhr.status == 200){ alert("数据请求成功"); //服务器的响应数据 alert(xhr.responseText); }else{ alert("数据请求失败"); } } } } } </script> </body> </html>
4.2post请求
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> 用户名:<input type="text" name="username" id="username"/><br /> 年龄:<input type="text" name="age" id="age"/><br /> 密码:<input type="password" name="password" id="password"/> <br /> <button id="btn">提交数据</button> <script type="text/javascript"> window.onload = function(){ //获取标签对象 var userInput = document.getElementById("username"); var ageInput = document.getElementById("age"); var pwdInput = document.getElementById("password"); var btn = document.getElementById("btn"); //给按钮绑定点击事件 btn.onclick = function(){ //请求服务器过程 //1.创建请求的核心对象 var xhr = null; //兼容问题:如果没有异常,则正常创建;如果 出现异常,则需要采用另外方式创建 //Python异常:try-except,js:try-catch try{ xhr = new XMLHttpRequest(); }catch(e){ xhr = new ActiveXObject("Microsoft.XMLHTTP"); } //2.与服务器建立连接 //open(请求方式,服务器地址,true) //对参数中出现的中文需要编码处理:encodeURI() urlStr = "http://10.12.152.104/ajaxpost.php?"; xhr.open("post",urlStr ,true); //3.发送请求 //设置编码格式 //请求头,固定写法 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded"); //将需要发送的数据在请求体中发送 var data = "username=" + encodeURI(userInput.value) + "&age=" + ageInput.value + "&password=" + pwdInput.value; xhr.send(data); //4.建立监听,监听服务器的响应 xhr.onreadystatechange = function(){ //是服务器返回的响应 if(xhr.readyState == 4){ if(xhr.status == 200){ alert("数据请求成功"); //服务器的响应数据 alert(xhr.responseText); }else{ alert("数据请求失败"); } } } } } </script> </body> </html>
5.案例实现
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script type="text/javascript"> //请求方式,请求地址,数据,请求成功之后的回调函数 function ajax(method,url,data,successfn){ //1.创建请求的核心对象 var xhr = null; //兼容问题:如果没有异常,则正常创建;如果 出现异常,则需要采用另外方式创建 //Python异常:try-except,js:try-catch try{ xhr = new XMLHttpRequest(); }catch(e){ xhr = new ActiveXObject("Microsoft.XMLHTTP"); } //2.判断请求的方式并建立连接 if(method == "get"){ //http://xxxx/news.php?data url += "?" + data; } xhr.open(method,url,true); //3.发送请求 if(method == "get"){ xhr.send(); }else if(method == "post"){ xhr.setRequestHeader("content-type","application/x-www-form-urlencoded"); xhr.send(data); } //4.请求完成之后的操作 xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status == 200){ //注意:ajax将数据请求完成之后,每个用户的需求是不一样的,需要自定义下载完成之后的代码 //调用回调函数,将请求成功之后的响应传参 successfn(xhr.responseText); } } } } window.onload = function(){ //获取现有的标签对象 var btn = document.getElementById("btn"); var ulEle = document.getElementById("ul"); //给按钮添加事件 btn.onclick = function(){ //请求服务器 ajax("get","http://10.12.152.104/news.php","",function(text){ //alert(text); //前端处理服务器响应的时候,明确服务器的数据类型以及是否编码 //返回一个数组 var arr = JSON.parse(text); alert(arr); //遍历数组 for(var i = 0;i < arr.length;i++){ //arr[i] //arr[i].title arr[i].date //创建标签对象 var liEle = document.createElement("li"); var aEle = document.createElement("a"); var spanEle = document.createElement("span"); //解析数据,将数据设置为标签的文本 aEle.innerHTML = arr[i].title; aEle.href = "#"; spanEle.innerHTML = "【" + arr[i].date + "】"; //添加 liEle.appendChild(aEle); liEle.appendChild(spanEle); ulEle.appendChild(liEle); } }) } } </script> <button id="btn">下载</button> <ul id="ul"> </ul> </body> </html>