jquery
json
json是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种数据格式,目前这种数据格式比较流行,逐渐替换掉了传统的xml数据格式。
javascript自定义对象:
var oMan = {
name:'tom',
age:16,
talk:function(s){
alert('我会说'+s);
}
}
json格式的数据:
{
"name":"tom",
"age":18
}
与json对象不同的是,json数据格式的属性名称和字符串值需要用双引号引起来,用单引号或者不用引号会导致读取数据错误。
json的另外一个数据格式是数组,和javascript中的数组字面量相同。
["tom",18,"programmer"]
配置服务器环境
安装Node 并校验 版本
项目配置应为路径 dos切至根目录 运行server.js
浏览器登录localhost:8888
ajax与jsonp
ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息。ajax技术的原理是实例化xmlhttp对象,使用此对象与后台通信。ajax通信的过程不会影响后续javascript的执行,从而实现异步。
同步和异步
现实生活中,同步指的是同时做几件事情,异步指的是做完一件事后再做另外一件事,程序中的同步和异步是把现实生活中的概念对调,也就是程序中的异步指的是现实生活中的同步,程序中的同步指的是现实生活中的异步。
局部刷新和无刷新
ajax可以实现局部刷新,也叫做无刷新,无刷新指的是整个页面不刷新,只是局部刷新,ajax可以自己发送http请求,不用通过浏览器的地址栏,所以页面整体不会刷新,ajax获取到后台数据,更新页面显示数据的部分,就做到了页面局部刷新。
同源策略
ajax请求的页面或资源只能是同一个域下面的资源,不能是其他域的资源,这是在设计ajax时基于安全的考虑。特征报错提示:
XMLHttpRequest cannot load https://www.baidu.com/. No
'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'null' is therefore not allowed access.
$.ajax使用方法
常用参数:
1、url 请求地址
2、type 请求方式,默认是’GET’,常用的还有’POST’
3、dataType 设置返回的数据格式,常用的是’json’格式,也可以设置为’html’
4、data 设置发送给服务器的数据
5、success 设置请求成功后的回调函数
6、error 设置请求失败后的回调函数
7、async 设置是否异步,默认值是’true’,表示异步
以前的写法:
$.ajax({
url: 'js/data.json',
type: 'GET',
dataType: 'json',
data:{'aa':1}
success:function(data){
alert(data.name);
},
error:function(){
alert('服务器超时,请重试!');
}
});
新的写法(推荐):
$.ajax({
url: 'js/data.json',
type: 'GET',
dataType: 'json',
data:{'aa':1}
})
.done(function(data) {
alert(data.name);
})
.fail(function() {
alert('服务器超时,请重试!');
});
// data.json里面的数据: {"name":"tom","age":18}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(function(){
$.ajax({
url:'data.json',
type:'get',
dataType:'json'
})
.done(function(dat){
$('#username').html(dat.name);
$('#userage').html(dat.age);
})
.fail(function(){
alert('服务器超时!');
})
})
</script>
</head>
<body>
<p>姓名:<span id="username"></span></p>
<p>年龄:<span id="userage"></span></p>
</body>
</html>
制作首页用户信息读取
<script type="text/javascript">
$(function(){
$.ajax({
url:'js/data.json',
type:'get',
dataType:'json'
})
.done(function(dat){
$('.user_login_btn').hide();
$('.user_info em').html(dat.name);
$('.user_info').show();
})
.fail(function(){
alert('服务器超时!')
})
})
</script>
jsonp
ajax只能请求同一个域下的数据或资源,有时候需要跨域请求数据,就需要用到jsonp技术,jsonp可以跨域请求数据,它的原理主要是利用了
$.ajax({
url:'js/data.js',
type:'get',
dataType:'jsonp',
jsonpCallback:'fnBack'
})
.done(function(data){
alert(data.name);
})
.fail(function() {
alert('服务器超时,请重试!');
});
// data.js里面的数据: fnBack({"name":"tom","age":18});
360联想词案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
// https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=d
$(function(){
$('#input01').keyup(function(){
var $val = $(this).val();
$.ajax({
url:'https://sug.so.360.cn/suggest?',
type:'get',
dataType:'jsonp',
data:{'word':$val}
})
.done(function(data){
//console.log(data);
// 清空元素里面的内容
$('#list01').empty();
var dat = data.s;
for(var i=0;i<dat.length;i++)
{
var $newli = $('<li>');
$newli.html(dat[i]);
$newli.appendTo($('#list01'));
}
})
})
})
</script>
</head>
<body>
<input type="text" name="" id="input01">
<ul id="list01">
</ul>
</body>
</html>
本地存储
本地存储分为cookie,以及新增的localStorage和sessionStorage
1、cookie 存储在本地,容量最大4k,在同源的http请求时携带传递,损耗带宽,可设置访问路径,只有此路径及此路径的子路径才能访问此cookie,在设置的过期时间之前有效。
jquery 设置cookie
$.cookie('mycookie','123',{expires:7,path:'/'});
jquery 获取cookie
$.cookie('mycookie');
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery.cookie.js"></script>
<script type="text/javascript">
// 设置cookie 过期时间为7天,存在网站根目录下
//$.cookie('mycookie','ok!',{expires:7,path:'/'});
//读取cookie
var mycookie = $.cookie('mycookie');
alert(mycookie);
</script>
</head>
<body>
<h1>测试页面</h1>
</body>
</html>
localStorage
存储在本地,容量为5M或者更大,不会在请求时候携带传递,在所有同源窗口中共享,数据一直有效,除非人为删除,可作为长期数据。
//设置:
localStorage.setItem("dat", "456");
localStorage.dat = '456';
//获取:
localStorage.getItem("dat");
localStorage.dat
//删除
localStorage.removeItem("dat");
sessionStorage
存储在本地,容量为5M或者更大,不会在请求时候携带传递,在同源的当前窗口关闭前有效。
localStorage 和 sessionStorage 合称为Web Storage , Web Storage支持事件通知机制,可以将数据更新的通知监听者,Web Storage的api接口使用更方便。
iPhone的无痕浏览不支持Web Storage,只能用cookie。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
//localStorage.setItem("dat", "456");
//sessionStorage.setItem('dat1','789');
</script>
</head>
<body>
<h1>测试webstorage</h1>
</body>
</html>
只弹一次的弹窗 案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery.cookie.js"></script>
<script type="text/javascript">
$(function(){
var hasread = $.cookie('hasread');
//alert(hasread);
// 判断是否存了cookie,没有就弹出弹框
if(hasread==undefined)
{
$('.pop_con').show();
}
//用户点击知道后,存cookie,把弹框关掉
$('#user_read').click(function(){
$.cookie('hasread','read',{expires:7,path:'/'});
$('.pop_con').hide();
})
})
</script>
<script type="text/javascript">
</script>
<style type="text/css">
.pop_con{
display:none;
}
.pop{
position:fixed;
width:500px;
height:300px;
background-color:#fff;
border:3px solid #000;
left:50%;
top:50%;
margin-left:-250px;
margin-top:-150px;
z-index:9999;
}
.mask{
position:fixed;
width:100%;
height:100%;
background-color:#000;
opacity:0.3;
filter:alpha(opacity=30);
left:0;
top:0;
z-index:9990;
}
.close{
float:right;
font-size:30px;
}
</style>
</head>
<body>
<div class="pop_con">
<div class="pop">
亲!本网站最近有优惠活动!请强力关注!
<a href="#" id="close" class="close">×</a>
<a href="javascript:;" id="user_read">朕知道了!</a>
</div>
<div class="mask"></div>
</div>
<h1>网站内容</h1>
</body>
</html>
jqueryUI
jQuery UI是以 jQuery 为基础的代码库。包含底层用户交互、动画、特效和可更换主题的可视控件。我们可以直接用它来构建具有很好交互性的web应用程序。
jqueryUI 网址
http://jqueryui.com/
1、设置数值的滑动条
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function(){
$('.box').draggable({
// 限制在x轴向拖动
//axis:'x',
// 限定在父级的范围内拖动
containment:'parent',
drag:function(ev,ui){
//console.log(ui);
//document.title = ui.position.left;
$('#shownumber').val(parseInt(100*(ui.position.left/600)))
}
});
})
</script>
<style type="text/css">
.con{
width:800px;
height:200px;
border:1px solid #000;
margin:50px auto 0;
}
.box{
width:200px;
height:200px;
background-color: gold;
}
</style>
</head>
<body>
<div class="con">
<div class="box"></div>
</div>
<input type="text" name="" id="shownumber">
</body>
</html>
2、自定义滚动条
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义滚动条</title>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function(){
var h = $('.paragraph').outerHeight();
//整体文本的高度减去外面容器的高度
var hide = h-500;
$('.scroll_bar').draggable({
axis:'y',
containment:'parent',
opacity:0.6,
drag:function(ev,ui){
var nowtop = ui.position.top;
var nowscroll = parseInt(nowtop/290*hide);
$('.paragraph').css({top:-nowscroll});
}
});
})
</script>
<style type="text/css">
.scroll_con{
width:400px;
height:500px;
border:1px solid #ccc;
margin:50px auto 0;
position:relative;
overflow:hidden;
}
.paragraph{
width:360px;
position:absolute;
left:0;
top:0;
padding:10px 20px;
font-size:14px;
font-family:'Microsoft Yahei';
line-height:32px;
text-indent:2em;
}
.scroll_bar_con{
width:10px;
height:490px;
position:absolute;
right:5px;
top:5px;
}
.scroll_bar{
width:10px;
height:200px;
background-color:#ccc;
position:absolute;
left:0;
top:0;
cursor:pointer;
border-radius:5px;
}
</style>
</head>
<body>
<div class="scroll_con">
<div class="paragraph">
2005年以后,互联网进入Web2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地的变化。网页不再只是承载单一的文字和图片,各种富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现的。以前会Photoshop和Dreamweaver就可以制作网页,现在只掌握这些已经远远不够了。无论是开发难度上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好,这方面的专业人才近几年来备受青睐。Web前端开发是一项很特殊的工作,涵盖的知识面非常广,既有具体的技术,又有抽象的理念。简单地说,它的主要职能就是把网站的界面更好地呈现给用户。
掌握HTML是网页的核心,是一种制作万维网页面的标准语言,是万维网浏览器使用的一种语言,它消除了不同计算机之间信息交流的障碍。因此,它是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言,学好HTML是成为Web开发人员的基本条件。
学好CSS是网页外观的重要一点,CSS可以帮助把网页外观做得更加美观。
学习JavaScript的基本语法,以及如何使用JavaScript编程将会提高开发人员的个人技能。
了解Unix和Linux的基本知识虽然这两点很基础,但是开发人员了解Unix和Linux的基本知识是有益无害的。
了解Web服务器当你对Apache的基本配置,htaccess配置技巧有一些掌握的话,将来必定受益,而且这方面的知识学起来也相对容易。
</div>
<div class="scroll_bar_con">
<div class="scroll_bar">
</div>
</div>
</div>
</body>
</html>
移动端js事件
移动端的操作方式和PC端是不同的,移动端主要用手指操作,所以有特殊的touch事件,touch事件包括如下几个事件:
1、touchstart: //手指放到屏幕上时触发
2、touchmove: //手指在屏幕上滑动式触发
3、touchend: //手指离开屏幕时触发
4、touchcancel: //系统取消touch事件的时候触发,比较少用
移动端一般有三种操作,点击、滑动、拖动,这三种操作一般是组合使用上面的几个事件来完成的,所有上面的4个事件一般很少单独使用,一般是封装使用来实现这三种操作,可以使用封装成熟的js库。
zeptojs
Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api。 如果你会用jquery,那么你也会用zepto。Zepto的一些可选功能是专门针对移动端浏览器的;它的最初目标是在移动端提供一个精简的类似jquery的js库。
zepto官网:http://zeptojs.com/
zepto中文api:http://www.css88.com/doc/zeptojs_api/
zepto包含很多模块,默认下载版本包含的模块有Core, Ajax, Event, Form, IE模块,如果还需要其他的模块,可以自定义构建。
zepto自定义构建地址:http://github.e-sites.nl/zeptobuilder/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/zepto.min.js"></script>
<script type="text/javascript">
$(function(){
alert( $('#div1').html() );
})
</script>
</head>
<body>
<div id="div1">这是一个div元素</div>
</body>
</html>
swiper
swiper.js是一款成熟稳定的应用于PC端和移动端的滑动效果插件,一般用来触屏焦点图、触屏整屏滚动等效果。 swiper分为2.x版本和3.x版本,2.x版本支持低版本浏览器(IE7),3.x放弃支持低版本浏览器,适合应用在移动端。
2.x版本中文网址:http://2.swiper.com.cn/
3.x版本中文网地址:http://www.swiper.com.cn/
swiper使用方法:
<script type="text/javascript" src="js/swiper.min.js"></script>
<!--
如果页面引用了jquery或者zepto,就引用 swiper.jquery.min.js,它的容量比swiper.min.js
<script src="path/to/swiper.jquery.min.js"></script>
-->
......
<link rel="stylesheet" type="text/css" href="css/swiper.min.css">
......
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">slider1</div>
<div class="swiper-slide">slider2</div>
<div class="swiper-slide">slider3</div>
</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
<script>
var swiper = new Swiper('.swiper-container', {
pagination: '.swiper-pagination',
prevButton: '.swiper-button-prev',
nextButton: '.swiper-button-next',
initialSlide :1,
paginationClickable: true,
loop: true,
autoplay:3000,
autoplayDisableOnInteraction:false
});
</script>
swiper使用参数:
1、initialSlide:初始索引值,从0开始
2、direction:滑动方向 horizontal | vertical
3、speed:滑动速度,单位ms
4、autoplay:设置自动播放及播放时间
5、autoplayDisableOnInteraction:用户操作swipe后是否还自动播放,默认是true,不再自动播放
6、pagination:分页圆点
7、paginationClickable:分页圆点是否点击
8、prevButton:上一页箭头
9、nextButton:下一页箭头
10、loop:是否首尾衔接
参数设置自定义
在API文档寻找需要的组件
https://www.swiper.com.cn/api/index.html
1.插入对应位置
完善JS
在main.css中对样式进行覆写