html笔记

html

​ 超文本编辑语言:通过浏览器可以直接解析的语言。

第一个例子
1:新建一个记事本,将文件后缀改成htm或者html。
2:通过记事本打开该文件:编写html命令;通过浏览器打开该文件:通过浏览器解析命令,在浏览器上观察结果。
3:直接写字符串会被直接显示在网页上,使用<>的格式称之为html命令(标签)
安装开发工具

工具随意,什么都可以,不做统一要求

html基本结构
<html>
	<head>
		<meta charset="utf-8" />		单标签:定义网页编码格式
		<title>网页标题</title>					双标签:网页标题标记
	</head>		定义网页的头部信息
	<body>
	</body>		定义网页的身体信息:网页上所有要显示的内容都写在该标签中
</html>			html文档根标签:定义一个html文档
html命令
html命令称之为标签,每一个标签就代表了网页上的一个内容

标签的格式:
	双标签:<单词></单词>
	单标签:<单词/>,该斜杠可写可不写

属性:针对每一个标签进行基本样式设置。
	<开始标签  属性名="属性值" 属性名="属性值" 属性名="属性值">

标签+属性==完成html命令

常用标签
<font size="" color="">文字内容</font>		文字标签
	size:字号
	color:颜色
	
<br>	换行

<img src="" width="" height=""> 		图片标签
	src:路径
	width:宽度
	height:高度
	
<center>内容</center>   居中	

<marquee scrollamount="50" behavior="scroll" direction="left" width="500">
	内容
</marquee>  滚动
	scrollamount:滚动速度
	behavior:滚动方式
		alternate:来回往返滚动
		scroll:默认方式:一边进已边出
		slide:滚动一次,碰边停止
	direction:滚动方向
	width:滚动轨迹的宽度
	height:滚动轨迹的高度
	
<hr width="200" size="10" color="#1B6D85">		横线
	width:宽度,默认居中
	size:粗细
	color:颜色
	
<p>内容</p>		段落

<pre>内容</pre>	预格式处理:标签中间键盘的空格和回车产生作用

标题标记
<h1>呵呵</h1>
<h2>呵呵</h2>
<h3>呵呵</h3>
<h4>呵呵</h4>
<h5>呵呵</h5>
<h6>呵呵</h6>

<ul type=“circle”>
	<li>aaaaa</li>
	<li>bbbbb</li>
	<li>ccccc</li>		列表项
</ul>	无序列表
	type:前缀类型
		circle:空心圆
		disc:实心圆,默认
		square:实心方块
		
<ol type=“i” start="5">
	<li>aaaaa</li>
	<li>bbbbb</li>
	<li>ccccc</li>		列表项
</ol>	有序列表
	type:前缀类型
		1:默认,阿拉伯数字
		a:英文字母
		i:古罗马数字	
	start:列表前缀以5开始


特殊符号:&nbsp;		空格

<b>文字</b>  加粗
<u>文字</u>  下划线
<i>文字</i>  下划线
表单
表单元素:表单当中任意一个标签(元素)


<!--隐藏域,隐藏文本框,专门给修改使用,修改数据时,通常都需要id-->
<input type="hidden" name="" id="" value="bbb" maxlength="5">

<input type="text" size="20" maxlength="5" placeholder="请输入账号" value="abc" name="a1" id="">
	type="text"	文本框
	size:长度
	maxlength:允许输入的最大长度
	placeholder:提示信息
	value:默认值,给服务器传递的参数
	name:给文本框起名字,给服务器传递参数的名字  a1 = "文本框所填内容"
	id:给文本框起名字(css/javascript使用)
	

<input type="password" size="20" maxlength="5" placeholder="请输入账号" value="abc" name="a2">
	type="password"	密码框
	size:长度
	maxlength:允许输入的最大长度
	placeholder:提示信息
	value:默认值,给服务器传递的参数
	name:给文本框起名字,给服务器传递参数的名字  a2 = "文本框所填内容"



<input type="radio" name="a3" value="a">男
<input type="radio" name="a3" value="b" checked="checked">女
	type="radio"	单选框
	 value="a"		选中之后,将value值传递给服务器
	 name:将多个单选框定义为一组,只能选择一个
	 checked:默认选中
	 
	 
<input type="checkbox" name="a4" value="x1">唱
<input type="checkbox" name="a4" value="x2" checked="checked">跳
<input type="checkbox" name="a4" value="x3">rap
<input type="checkbox" name="a4" value="x4" checked="checked">篮球
<input type="checkbox" name="a4" value="x5">足球
	 type="checkbox"	多选框
	 value="a"		选中之后,将value值传递给服务器
	 name:将多个多选框定义为一组
	 checked:默认选中
	 
<input type="file" name="a5" multiple="multiple">
	type="file"	上传域
	name:起名字
	multiple:允许选择多个文件上传
	
<select name="a6">
	<option value="a">请选择</option>
	<option value="b">陕西</option>
	<option value="c" selected="selected">四川</option>
	<option value="d">河南</option>
</select>	
	select:下拉框
	name:起名字
	option:下拉框选项
	value:选中后,传递给服务器的参数值
	selected:默认选中

<textarea rows="6" cols="50" name="a7" placeholder="aaa">呵呵</textarea>	
	textarea:文本域,多行文本框
	rows:高度
	cols:宽度
	name:起名字
	placeholder:提示信息
	默认值双标签在中间
	
<input type="button" value="按钮1">
	type="button":普通按钮,没有作用,可以与javascript配合使用。
	value:按钮上的文字
<input type="reset" value="按钮2">
	type="reset"	重置按钮,将所有表单元素恢复默认,必须有form表单标签
<input type="submit" value="按钮3">
	type="submit"	提交按钮,将所有表单元素提交给服务器(下个页面),就是给服务器传递参数
	注意:必须有form表单标签,提交给服务器(下个页面,目标地址):form标签的action属性
	index.html?a1=abc11&a2=a222&a3=a&a4=x2&a4=x4&a5=&a6=c&a7=呵呵
	index.html?a1=111&a2=222&a3=a&a4=x1&a4=x2&a4=x3&a4=x4&a4=x5&a5=html.md&a6=b&a7=33333
	
<button type="button">按钮4</button>
	type="button"
	type="submit"	默认
	type="reset"
	
<form action="url" method="" enctype="">所有表单元素</form>	
	action:表单提交的目标地址
	method:提交方式
		get:默认,将表单参数以字符串的方式显示在地址栏中传递给服务器,会将参数以字符流的形式传递给服务器且传递参数的数据量大约2kb
		post:将表单参数隐藏的方式传递给服务器,理论参数量无上限
		注意:有上传域必须使用post方式且表单必须以字节流提交参数。
	enctype:表单以字节流或者字符流方式提交
		application/x-www-form-urlencoded,默认方式,字符流
		multipart/form-data:字节流提交参数(有上传文件必须使用该方式)
表格

给页面局部排版

<table>
			<caption>呵呵</caption>
			<tr>
				<td>111</td>
				<td>222</td>
				<td>333</td>
			</tr>
</table>

table:定义表格:属性有:
	border="1" 			表格边框
	width="50%" 		表格宽度
	height="300" 		表格高度
	cellpadding="80" 	内容距边框距离
	cellspacing="0" 	内外边框间距
	align="right"		表格居左中右
	
caption:表格标题

tr:定义一行,属性有:
	height="150" 		该行的高度
	align="right" 		该行内容水平方向对齐方式(左中右)
	valign="middle"		该行内容垂直方向对齐方式(上中下)

td/th:定义一个单元格,th:内容居中黑体
	width="150" 		该列的宽度	
	height="250" 		该行的高度	
	align="center" 		该单元格内容水平方向对齐方式(左中右)
	valign="bottom"		该单元格内容垂直方向对齐方式(上中下)
	rowspan="2"			行合并:上下合并,第一个单元格写属性,删除被合并的单元格
	colspan="2"			列合并:左右合并,第一个单元格写属性,删除被合并的单元格

<thead>
	<tr></tr>
	<tr></tr>
</thead>	将多行定义为表头,不影响页面效果,只是定义,后期给动态页面使用


<tbody>
	<tr></tr>
	<tr></tr>
</tbody>	将多行定义为表身体,不影响页面效果,只是定义,后期给动态页面使用

超链接
针对文字或者图片,点击内容之后跳转网页
	<a href="" target="">内容</a>
		href:跳转网页的路径
		
所有的路径分为:
	相对路径:从当前网页文件开始找目标文件的路径:
		../		返回上一层目录
        直接写同级目录的文件名
			
	绝对路径:从盘符开始找文件		H:\desk\test\css\2.html
	网络路径:有服务器才使用:		http://127.0.0.1:8080/a1/2.jpg
		
		
target:目标网页打开方式
	target="_self":默认,自己窗口跳转网页
	target="_blank": 新开窗口跳转网页
		

css

层叠样式表,给网页标签添加样式,对页面进行布局排布,通过浏览器直接解析。

页面引入css的方式
方式1:行内式:每一个标签都有style属性
	<font style="css属性名:属性值;css属性名:属性值;">html标签</font>
	<img src="img/pic_login01.gif" style="css属性名:属性值;css属性名:属性值;">
方式2:内嵌式:
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			选择器{
				属性名:属性值;
				属性名:属性值;
			}
			选择器{
				属性名:属性值;
				属性名:属性值;
			}
		</style>
	</head>
方式3:链接式:需要新建一个css文件
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css" href="css/1.css" />
		rel:说明使用连接式给当前页面引入一个css文件
		type:以字符流方式引入
		href:css文件路径
	</head>
	1.css:
		选择器{
			属性名:属性值;
			属性名:属性值;
		}
		选择器{
			属性名:属性值;
			属性名:属性值;
		}
css选择器
行内式不需要写选择器,就是给当前标签添加css样式
	<font style="font-size:50px;color: #843534;font-weight:bold">html标签</font>
	<img src="img/pic_login01.gif" style="width: 200px;height:80px;">
	
1:标记标签选择器:选择网页上所有该标签进行样式设置
	标签{
		属性名:属性值;
		属性名:属性值;
	}
	font{
		font-size: 30px;
		color: red;
	}
	img{
		width: 200px;
		height: 200px;
	}
2:关联类选择器:选择网页上所有该标签且class=“名字”的标签进行样式设置
	标签名.名字{
		属性名:属性值;
		属性名:属性值;
	}
3:独立类选择器:选择网页上所有class="名字"的标签进行样式设置
	.名字{
		属性名:属性值;
		属性名:属性值;
	}
4:id选择器:选择网页上所有id="名字"的标签进行样式设置
	#名字{
		属性名:属性值;
		属性名:属性值;
	}	
	
	
注意1:行内式不需要选择器,内联式和链接式需要选择器
注意2:使用一种引入方式时,css从上到下执行
注意3:引入方式混用,就近原则。实际不可能使用
盒子模型
html+css网页开发时,将网页上每一部分的内容都放入盒子中,将盒子进行排版

html标签分为:行级标签和块级标签
	行级标签:与其他标签共占一行
	块级标签:独占一行
	
块级标签:默认独占一行,没有边框,高度靠内容撑开
	<div></div>
行级标签:共占一行,没有边框,宽高靠内容撑开
	<span></span>

css常用属性
border: 1px solid red;		边框:粗细 实心闲 颜色
font-size: 20px;			字号
color: red;					字体颜色
font-weight: bolder;		加粗
width: 200px;				宽度
height: 50px;				高度
display: none;				隐藏(block:显示)
background					背景颜色和背景图片
background-color			背景颜色
background-image			背景图片
float:div摆放在一行,浮动,需要用一个大盒子将一行内的所有小盒子包起来,大盒子不用浮动
margin: 50px 10px;			外边距:上,左距离
margin-top: 50px;			外边距:居上距离
margin-left: 100px;			外边距:居左距离
margin-right: 100px;		外边距:居右距离,必须浮动,右对齐
margin-bottom: 100px;		外边距:居下距离,下面必须有盒子
padding: 50px 200px;		内边距,居上下50px,左右200px,一般给span使用
padding-left: 100px;		内边距,居左100px,
padding-top: 100px;			内边距,居上100px,
text-align: right;			内容居右

javascript

面向对象编程的脚本语言:脚本语言:在客户端(浏览器)上运行的语言。

作用:控制网页元素添加动态效果:

共性1:必须有一个事件触发特效

共性2:修改标签元素的属性达到页面效果发生变化。

页面引入方式
方式1:内嵌式:
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css">
		<script type="text/javascript">
			js命令...
		</script>
	</head>

方式2:链接式:
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" type="text/css" href="">
		<script type="text/javascript" src="js/1.js">
			js命令...
		</script>
	</head>
基本语法

​ 基本与java一致,后面讲不同点。

变量、运算符、循环、判断、数组(区别)
数据类型
基本类型:number(数字类型)、string(字符串类型)、boolean(布尔)
	var a1 = 1.1;
	var a2 = "abc";
	var a3 = true;
	console.log(typeof a1);  //控制台打印:a1的数据类型
	console.log(typeof a2);
	console.log(typeof a3);
	
对象类型(Object):比较多,
	每一个标签都称之为一个对象
	var a1 = new Date();
	json
	.........
	var a4 = new Date();
	console.log(typeof a4);
	
	var a5 = null;
	var a6 = undefined;
	console.log(a5);
	console.log(a6);
	console.log(a6 == a5);
	
	document:js原生对象:当前网页文档对象
		document.getElementById("uacc");		根据id获得对象
		document.getElementsByName("usex");		根据name获得对象数组
	window:js原生对象:浏览器窗口对象
		window.alert();		弹出信息确认框
	下拉框对象.options:		获得下拉框所有的option对象数组
	
	
变量、运算符、循环、判断与java一致	
事件
事件是给网页元素添加,当网页元素添加了事件后,当该元素发生该事件后,执行自定义函数。
点击事件			 onclick="方法名()"				
鼠标进入事件			onmouseover="方法名()"				
鼠标离开事件			onmouseout="方法名()"				
打开网页事件			onload="方法名()"				针对body标签	
选项改变事件			onchange="方法名()"			针对select、type=file
获得焦点事件			onfocus="方法名()"				针对文本框
失去焦点事件			onblur="方法名()"				针对文本框
表单提交事件			onsubmit="return 方法名()"		
针对form标签,方法体默认返回true,当方法体返回false,不执行action跳转,方法体返回true,执行action跳转

自定义函数
语法:
function 方法名(形参1,形参2){
	方法体;
	return 返回值;
}
事件调用方法,当网页元素发生事件后,调用执行对应的方法。
网页元素对象
var obj = document.getElementById();	在当前页面根据id获得标签对象;
var obj = document.getElementsByName("usex");		根据name获得对象数组
obj.属性的语法,可以获得,修改对象的属性,达到页面变化的效果。
正则表达式
作用:判断字符串的格式,是否与表达式匹配
	var zz = /^[a-z]{6,12}$/;   //正则表达式
	var obj1 = document.getElementById("obj1");
	var ov = obj1.value;
	var boo = zz.test(ov);//判断正则与字符串是否匹配:返回boolean
	alert(boo);

正则表达式:以字符串一个字符一个字符进行匹配
	^		以该符号后面的内容开始
	$		以该符号前面的内容结束
	{a}		精确匹配大括号前面一个内容的次数
	{a,}	匹配大括号前面一个内容至少出现的次数
	{a,b}	匹配大括号前面一个内容出现的次数在a~b之间
	*		匹配该符号前面的一个内容出现任意次
	?		匹配该符号前面的一个内容出现0次或者1次
	[]		中括号里边定义一个集合,仅匹配字符串一个字符,
			要求字符串的每一个字符都属于该集合中任意一个字符
	|		逻辑或者,从该符号两边完全断开或者		var zz = /^ab|c$/;  ==  /^ab/   |   /c$/
	\d		0-9的数字==   [0-9]
	\w		字母、数字、下划线 _
	\D		!\d
	\W		!\w


对象.innerHTML = "字符串";		将字符串放入对象开始标签和结束标签中间
数组
var ss1 = [123,"aaa",true];			声明数组有内容
var ss1 = new Array(5);				声明数组长度为5个undefined
var ss1 = new Array(5,3);			声明数组有内容:5和3

for(var i=0;i<ss1.length;i++){
	ss1[i] = i+1;
}
ss1.push(111)  //数组最后一位添加元素
ss1.splice(2,3); //从下标2开始删除3个长度
for(var i=0;i<ss1.length;i++){
	alert(ss1[i]);
}

var a = [1,3,76,9];
a.length = 2;
alert(a);
Bom

Browser Object Model:浏览器对象模型

window:窗体对象
	window.alert("信息确认框");
	window.confirm("信息选择框");
	window.prompt("信息输入框");
	window.open("1.html");   //新窗口打开一个网页
	
	window.setTimeout("aaa()",N);	定时器:定义N毫秒以后执行一次aaa方法
	window.setInterval();	定时器:
	window对象所有方法调用时,window可以省略	

screen:屏幕对象
	screen.width		屏幕分辨率宽度
	screen.heigth		屏幕分辨率高度

location:浏览器地址栏对象
	location.href = "url";	当前页面跳转

history:浏览器历史记录对象	
	history.go(-1);		返回上一个页面
	history.go(1);		返回下一个页面
	history.go(0);		返回当前页面,刷新

document:当前文档对象
	document.getElementById("id");					在文档中根据id获得节点对象
	document.getElementsByName("name");				在文档中根据name获得节点对象数组
	document.getElementsByClassName("class");		在文档中根据class获得节点对象数组,不兼容
	document.getElementsByTagName("tagName");		在文档中根据class获得节点对象数组,不兼容


Dom

Document Object Model:文档对象模型

将当前html文档当成一个document文档对象,每一个标签就是一个对象,并且没有对象可能有子父节点对象


document:当前文档对象
	document.getElementById("id");					在文档中根据id获得节点对象
	document.getElementsByName("name");				在文档中根据name获得节点对象数组
	document.getElementsByClassName("class");		在文档中根据class获得节点对象数组,不兼容
	document.getElementsByTagName("tagName");		在文档中根据class获得节点对象数组,不兼容

	var div = document.createElement("div");		创建节点对象
	var xxx = document.getElementById("xxx");
	xxx.appendChild(div);							将div对象添加到xxx对象中
	div.remove();									删除div对象
	div2.removeChild(div1);							在父节点div2中删除div1子节点
	
	obj.parentNode;									获得obj对象的父节点对象
	obj.children;									获得obj对象的子节点对象数组

this:实参,写在哪个标签里,就代表当前标签对象
定时器
window.setTimeout("aaa()",N);	定时器:定义N毫秒以后执行一次aaa方法

<script>
	window.setTimeout("aaa()",1000);		该情况不常用,
	function aaa(){
		alert(111);
	}
</script>
常用:
<script>
	function aaa(){
		window.setTimeout("aaa()",1000);		//结果是每一秒执行一次aaa方法
		alert(111);
	}
</script>
<body onload="aaa()"></body>

window.setInterval("aaa()",1000);		每一秒执行一次aaa方法
	<script>
			window.setInterval("aaa()",1000);
			function aaa(){
				console.log(1111)
			}
	</script>
时间对象
var d = new Date();  //获得系统当前时间
var div = document.getElementById("div1");
var year = d.getFullYear();				获得时间的年份
var month = d.getMonth() + 1;			获得时间的月份
var dd = d.getDate();					获得时间的日期
var hour = d.getHours();				获得时间的小时
var minute = d.getMinutes();			获得时间的分钟
var second = d.getSeconds();			获得时间的秒数
var millSecond = d.getMilliseconds();	获得时间的毫秒
json
一种数据类型:
json对象:
var a = {a:1,b:2,c:3};		json数据类型,一个对象,不是数组,理解为java的实体类
			var aaa = {a:1,b:"aaa",c:true};
			alert(aaa.a);
			alert(aaa.b);
			alert(aaa.c);
			
			var aaa = {a:1,b:"aaa",c:true,d:{a:"aaa",b:"bbb"}};
			alert(aaa.a);
			alert(aaa.b);
			alert(aaa.c);
			alert(aaa.d.a);
			alert(aaa.d.b);
json对象数组:
			var aaa = [{a:1,b:2,c:3},{a:11,b:22,c:33},{a:111,b:222,c:333}];
			alert(aaa.length);
			for(var i=0;i<aaa.length;i++){
				alert(aaa[i].a);
				alert(aaa[i].b);
				alert(aaa[i].c);
			}

bootstrap

将html+css+js进行封装,咱们只需要会从官网粘贴修改即可:注意样例引入的css文件和js文件
https://www.runoob.com/bootstrap/bootstrap-forms.html
栅格网格系统
作用:将页面使用div布局,一行总共只能最多12列,超出12列自动换行
<link rel="stylesheet" href="css/bootstrap.css" />
<div class="full-container">
	<div class="row" style="border: 1px solid red;">
		<div class="col-lg-2" style="border: 1px solid red;">aaa</div>							<div class="col-lg-10" style="border: 1px solid red;">bbb</div>
	</div>
</div>
注意:bootstrap.css和bootstrap.min.css的区别:
	1:bootstrap.css和bootstrap.min.css作用代码完全一样
	2:有min名字的文件没有换行格式,可读性差,但是文件小,主要应用在服务器上,下载到客户端速度快
	3:不带min的文件:本机开发测试可读性较好。
折叠
作用:一般制作页面导航:注意页面引入的css和js文件的顺序不能改变


<div class="panel-group" id="accordion">
					<div class="panel panel-default">
						<div class="panel-heading">
							<h4 class="panel-title">
								<a data-toggle="collapse" data-parent="#accordion" 
								   href="#collapseOne">
									个人中心
								</a>
							</h4>
						</div>
						<div id="collapseOne" class="panel-collapse collapse in">
							<div class="panel-body">
								修改个人信息<br><br>
								修改密码<br><br>
								购物车<br><br>
								购买记录<br><br>
								安全退出<br><br>
								返回首页<br><br>
							</div>
						</div>
					</div>
					<div class="panel panel-warning">
						<div class="panel-heading">
							<h4 class="panel-title">
								<a data-toggle="collapse" data-parent="#accordion" 
								   href="#collapseTwo">
									卖家中心
								</a>
							</h4>
						</div>
						<div id="collapseTwo" class="panel-collapse collapse">
							<div class="panel-body">
								商品管理<br><br>
								销售记录<br><br>
							</div>
						</div>
					</div>
					<div class="panel panel-default">
						<div class="panel-heading">
							<h4 class="panel-title">
								<a data-toggle="collapse" data-parent="#accordion" 
								   href="#collapseThree">
									商城管理
								</a>
							</h4>
						</div>
						<div id="collapseThree" class="panel-collapse collapse">
							<div class="panel-body">
								用户管理<br><br>
								商品管理<br><br>
								类型管理<br><br>
								销售信息<br><br>
							</div>
						</div>
					</div>
				</div>

表格:
<table class="table  table-striped table-bordered table-hover">
		      		<tr>
		      			<td colspan="7" align="right">
		      				<button>添加</button>
		      				<button>修改</button>
		      				<button>删除</button>
		      			</td>
		      		</tr>
		      		<tr>
		      			<td><input type="checkbox" name="abc"></td>
		      			<td>商品名称</td>
		      			<td>商品图片</td>
		      			<td>商品单价</td>
		      			<td>商品库存</td>
		      			<td>商品类型</td>
		      			<td>商品日期</td>
		      		</tr>
		      		<tr>
		      			<td><input type="checkbox" name="abc"></td>
		      			<td>商品名称</td>
		      			<td>商品图片</td>
		      			<td>商品单价</td>
		      			<td>商品库存</td>
		      			<td>商品类型</td>
		      			<td>商品日期</td>
		      		</tr>
		      		<tr>
		      			<td><input type="checkbox" name="abc"></td>
		      			<td>商品名称</td>
		      			<td>商品图片</td>
		      			<td>商品单价</td>
		      			<td>商品库存</td>
		      			<td>商品类型</td>
		      			<td>商品日期</td>
		      		</tr>
</table>
模态框
一个可以隐藏的div

模态框的显示:
	方案1:<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
			模态框显示隐藏切换
	  </button>
	方案2:$('#myModal').modal('show');
	
模态框隐藏:
	方案1:<button data-dismiss="modal">关闭</button>
	方案2:$('#myModal').modal('hide');
分页
<div style="border: 0px solid red; width: 520px;margin-left: 58%;margin-top: -30px;">
			      	<ul class="pagination">
						<li><a href="#">首页</a></li>
						<li><a href="#">上一页</a></li>
						<li><a href="#">共N页</a></li>
						<li><a href="#">每页
							<select>
								<option>5</option>
								<option>10</option>
								<option>20</option>
								<option>50</option>
							</select>行
						</a></li>
						<li><a href="#">当前第N页</a></li>
						<li><a href="#">下一页</a></li>
						<li><a href="#">尾页</a></li>
					</ul>
</div>
字体图标
按钮添加图标

1:需要fonts目录:放在bootstrap.css文件的上层目录
2:按钮添加span样式
	<button class="btn-success">
		  <span class="glyphicon glyphicon-trash"></span> 删除
	</button>

Vue

针对原生javascript进行语法封装,主要用于数据渲染与数据绑定。也兼容原生javascirpt

基本语法
1:官网下载vue.js的文件,页面引入该文件
	<head>
		<script src="js/vue.js"></script>
	</head>
2:vue在渲染数据之前,必须先针对网页某个节点创建vue对象
	<body>
		<div id="app">
		
		</div>	
	</body>
	<script>
		var v1 = new Vue({		//针对网页哪个节点创建对象
			el:"#app",				//确定针对哪个节点创建对象
			data:{},				//针对当前对象,定义变量
			methods:{}				//针对当前对象,定义方法
		});
			
	</script>
文本绑定/文本插入
在html页面上,使用{{变量}},渲染该页面
	<div id="app">
			{{a}},{{b}},{{c}},{{d}},{{e.aaa}}
	</div>
也可以在双标签上使用文本插入的属性:v-text=""   ==   obj.innerHTML = a
	<div id="app">
			{{a}},{{b}},{{c}},{{d}},{{e.aaa}}
			<br><br>
			<span v-text="a"></span>,
			<font v-text="e.bbb"></font>
	</div>	
事件绑定
原来javascript事件:onclick、onmouseover、onchange。。。。。所有的事件都带on关键字
现在vue事件:与原来javascript事件语法一直,把on全部去掉。
改成:
	v-on:事件=“方法”
	@事件="方法"
判断指令
v-if、v-show:通过判断表达式来控制节点是否显示:true:显示,false:不显示
区别:
	v-if条件判断为false时,将该节点注释了,页面上没有该节点,不能操作该节点
	v-show条件判断为false时,将该节点通过css:display: none;隐藏了,页面上有该节点,可以操作该节点
	
			<span id="x1" v-if="a >= 1">{{e.aaa}}</span>,
			<span id="x2" v-if="c">{{e.aaa}}</span>,
			<span id="x3" v-show="c">{{e.aaa}}</span>	
循环指令
v-for:
	<tr v-for="xxx in  goods">		循环当前标签,循环goods变量:数组,数组中每一个元素叫做xxx
			<td>{{xxx.gid}}</td>
			<td v-text="xxx.gname"></td>
			<td>{{xxx.gprice}}</td>
	</tr>
	定义变量:
	data:{
				goods:[
					{gid:1,gname:"商品1",gprice:"11"},
					{gid:2,gname:"商品2",gprice:"22"},
					{gid:3,gname:"商品3",gprice:"33"}
				]
	}
属性绑定指令:重点
v-bind:针对html标签的属性绑定变量:称之为单向绑定:给标签的属性绑定变量后,如果变量发生改变,则属性值发生改变,页面随之变化;但是当页面发生变化,变量值不发生变化。注意该指令可以绑定任意属性
	v-bind:属性名="变量"
	:属性名="变量"			简写
	<font v-bind:size="a" :color="b">aaa</font>
	<img v-bind:src="d">
	<input type="text" :value="c">
	

v-model="变量":只能针对标签的value属性绑定变量(form表单元素),称之为双向绑定:给标签的value属性绑定变量后,如果变量发生改变,则属性值发生改变,页面随之变化;当页面发生变化,变量值也发生变化。
	<input type="text" v-model="c">
vue生命周期(钩子函数)
vue定义了8个系统函数,这8个方法就是创建vue对象的过程。


var v1 = new Vue({
			el:"#app",
			data:{
				a:1,
				b:2
			},
			methods:{	//自定义函数
				aaa(){
					this.a = 11111;
					console.log(this.a);
				},
				bbb(){
					this.$destroy();  //销毁当前对象
				},
				ccc(){
					this.b = 2222;
					console.log(this.b);
				}
				
			},   
			beforeCreate(){    //  
				var app = document.getElementById("app");
				console.log(app.innerHTML);
				console.log(this.a);
				console.log("该方法在vue创建对象完成之前执行,定义属性与方法,但是没有初始化完成");
				console.log("==================================");
			},
			created(){    //
				var app = document.getElementById("app");
				console.log(app.innerHTML);
				console.log(this.a);
				console.log("该方法在vue创建对象完成之后执行,定义属性与方法,完成初始化");
				console.log("==================================");
			},
			beforeMount(){
				var app = document.getElementById("app");
				console.log(app.innerHTML);
				console.log(this.a);
				console.log("该方法在页面渲染数据之前执行,");
				console.log("==================================");
			},
			mounted(){
				var app = document.getElementById("app");
				console.log(app.innerHTML);
				console.log(this.a);
				console.log("该方法在页面渲染数据之后执行,");
				console.log("==================================");
			},
			beforeUpdate(){
				var app = document.getElementById("app");
				console.log(app.innerHTML);
				console.log(this.a);
				console.log("该方法在修改数据之后,渲染页面之前执行");
				console.log("==================================");
			},
			updated(){
				var app = document.getElementById("app");
				console.log(app.innerHTML);
				console.log(this.a);
				console.log("该方法在修改数据之后执行,,渲染页面之后执行");
				console.log("==================================");
			},
			beforeDestroy(){
				var app = document.getElementById("app");
				console.log(app.innerHTML);
				console.log(this.a);
				console.log("该方法在销毁当前v1对象之前执行,对象的属性和方法依然可用,只是无法渲染页面");
				console.log("==================================");
			},
			destroyed(){
				var app = document.getElementById("app");
				console.log(app.innerHTML);
				console.log(this.a);
				console.log("该方法在销毁当前v1对象之后执行,对象的属性和方法依然可用,只是无法渲染页面");
				console.log("==================================");
			}
			
});



过滤器
针对时间、数字格式化
全局过滤器
可以给所有的vue对象使用:

	文本绑定时调用过滤器f1,并将数据time1传入过滤器f1,并将f1的返回值渲染在页面上
	{{time1 | f1 }}<br>	
	单向绑定时调用过滤器f1
	<input tpye="text" v-bind:value="time2 | f1">
	
	双向绑定调用过滤器:必须在渲染页面之前任意一个函数中手动调用过滤器修改原数据
	<input tpye="text" v-model="time2">
	,
	beforeMount(){
		//this.$options.filters获得所有过滤器数组
		this.time2 = this.$options.filters["f1"](this.time2);
	}
			
		
	Vue.filter("f1",function(d){
			var year = d.getFullYear();	
			var month = d.getMonth() + 1;
			var dd = d.getDate();
			var hour = d.getHours();
			var minute = d.getMinutes();
			var second = d.getSeconds();
			return year + "-" + format(month) + "-" + format(dd) + " " + format(hour) + ":" + format(minute) + ":" + format(second); 
		});
		
		//自定义函数
		function format(num){
			return num<10?"0"+num:num;
		}

局部过滤器
可以给当前的vue对象使用


<div id="app2">
			{{time1 | ff1 }}<br>
			<input tpye="text" v-model="time2">
</div>	

var v2 = new Vue({
			el:"#app2",
			data:{
				time1:new Date(),
				time2:new Date()
			},
			methods:{//自定义函数
				
			},
			filters:{   //局部过滤器,只针对app2节点
				ff1(d){
					var year = d.getFullYear();	
					var month = d.getMonth() + 1;
					var dd = d.getDate();
					var hour = d.getHours();
					var minute = d.getMinutes();
					var second = d.getSeconds();
					return year + "-" + format(month) + "-" + format(dd) + " " + format(hour) + ":" + format(minute) + ":" + format(second); 
				},
				ff2(){
					
				}
			},
			beforeMount(){
				this.time2 = this.$options.filters["ff1"](this.time2);
			}
		});

异步请求

​ 请求服务器的另外一种方式。

同步请求
同步请求服务器:客户端看到的结果与服务器执行的过程为同步。
    <a href="xxxx"></a>
    <form action="xxx"></form>
    location.href="xxx"
    window.open("xxx");
异步请求
当前页面主线程不动,开启新的子线程访问服务器,等待服务器反馈数据,子线程完成。
Vue给我们提供了一个方法,该方法就是异步请求的方式:需要引入异步请求的js源码文件:axios.js
将页面上所有的请求都改为js事件,在方法体中调用axios方法

发起请求:
	axios({
			baseURL:"http://localhost:8090/test1", //请求地址
			url:"/test.do",
			params:{a:111,b:222},  //请求参数,请求时会将参数以get方式拼接在地址栏(请求头)
			//请求参数,将参数转成字节码,通过字节流方式传递参数(请求体).,主要用于上传文件
			data:{},					
			method:"post",				//请求方式  get\post
			timeout:2000, //请求超时时间,
			//预期定义服务器反馈数据类型(text:字符串,json:json对象或者json数组)
			responseType:"text",   
	}).then(response=>{	//发起异步请求等待回传数据,请求成功后,接收到回传数据执行该方法
			//形参response就是异步请求后的回传对象
			alert(response.data);  //回传数据
		}); 

服务器回传数据:
	public void test2(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
		String a = request.getParameter("a");
		String b = request.getParameter("b");
		System.out.println("异步test........."+a+b);
		PrintWriter out = response.getWriter();
		out.write("呵呵");   // 回传字符串
	}
	注意:
		1:回传字符串需要设置编码格式
		2:回传数据类型只能是字符串或者json
		3:回传json时需要将实体对象或者Map转成json对象,将List集合转成json数组,需要引入jar包
			Goods goods = new Goods();//模拟查询一个数据
            goods.setGid(1);
            goods.setGname("aaa");
            goods.setGadd("陕西");
            goods.setGnum1(100);
            //将实体类对象goods转成json对象
            JSONObject json = JSONObject.fromObject(goods);
            System.out.println(goods);
            System.out.println(json);
            out.write(json.toString());   //回传json对象
            
            //集合转成json数组
            //JSONArray array = JSONArray.fromObject(list);
            //System.out.println(list);
            //System.out.println(array);
            //out.write(array.toString());
            
            PageInfo<Goods> pageInfo = new PageInfo<Goods>(list);
			JSONObject json = JSONObject.fromObject(pageInfo);
			out.write(json.toString());
		4:服务器不能再转发重定向:同步
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值