web前端技术笔记(十五)json、本地存储jqueryUI和移动端JS

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中对样式进行覆写
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值