Web前端
B/S架构
- 静态资源
- 使用静态网页开发技术发布的资源
- 特点:
- 所有用户访问,得到的结果是一样的
- 如:文本、图片、音频、视频,HTML、CSS、Javascript
- 如果用户请求的是静态资源,那么服务器会直接将静态资源发送给浏览器,浏览器内置了静态资源的解析引擎,可以展示静态资源
- 动态资源
- 使用动态网页即时发布的资源
- 特点:
- 所有用户访问,得到的结果可能不一样
- 如:jsp/servlet、php、asp…
- 如果用户请求的是动态资源,那么服务器会执行动态资源,转换为静态资源,再发送给浏览器
HTML
概念
- Hyper Text Markup Language 超文本标记语言
- 超文本:超文本是用超链接的方法,将各种不同空间的文字信息组织再一起的网状文本。
- 标记语言:由标签构成的语言,标记语言不是编程语言
基础语法
- html文档后缀:
.html
或.htm
- 标签分类
- 围堵标签:有开始标签和结束标签,如
<html></html>
- 自闭合标签:开始标签和结束标签在一起,如
<br/>
- 围堵标签:有开始标签和结束标签,如
- 在开始标签中可以定义属性。属性是由键值对构成,值需要用引号引起来(单引双引都可)
- html的表情不区分大小写,建议使用小写。
常用标签
文件标签
<html></html>
:html文档的根标签<head></head>
:头标签,用于指定html文档的一些属性。引入外部资源<title></title>
:标题标签<body></body>
:体标签<!DOCTYPE html>
:定义文档类型,html5中定义该文档是html文档<meta charset="UTF-8">
:指定字符集
文本标签
- 注释:
<!-- 注释内容 -->
<h1>to<h6>
:标题标签(h1~h6字体大小逐渐递减)<p></p>
:段落标签<br/>
:换行标签<hr>
:展示一条水平线- 属性:
- color:颜色
- width:宽度
- size:高度
- align:对齐方式(center/left/right)
- 属性:
<b></b>
:字体加粗<i></i>
:字体斜体<font></font>
:字体标签<center>
:文本居中,相对于父元素- 属性:
- color:颜色
- size:大小
- face:字体
- 属性:
属性定义
color:
- 英文单词
- rgb(值1,值2,值3):值的范围:0~255 如 rgb(0,0,255)
- #值1值2值3:值的范围:00~FF之间。如: #FF00FF
width:
- 数值,单位默认px像素
- 数值%:占比相对于父元素的比例
- 注释:
> 特殊字符表:空格:` `
图片标签
<img/>
:展示图片- 属性:
- src:指定图片的位置
- alt:规定在图像无法显示时的替代文本
<img src="图片地址" alt="图片名称">
相对路径:以.开头的路径
- ./:代表当前目录
- ../:代表上一级目录
- 属性:
列表标签
- 有序列表
<ol>
:定义有序列表。<li>
:定义列表的项目。
- 无序列表
<ul>
:定义无序列表。<li>
:定义列表的项目。
- 有序列表
链接标签
<a>
:定义一个超链接- 属性:
- href:指定访问资源的url(统一资源定位符)
- target:指定打开资源的方式
- _self:默认值,在当前页面打开
- _blank:在空白页打开
- 属性:
样式/节
<div></div>
:可以把文档分割为独立的、不同的部分。每一个div占满一整行。块级标签<span></span>
:用来组合文档中的行内元素。文本信息在一行展示,行内标签 内联标签<header></header>
:定义文档的页眉(介绍信息)。<footer></footer>
:定义文档或节的页脚。
表格标签
<table></table>
- width:宽度
- border:边框
- cellpadding:定义内容和单元格的距离
- cellspacing:定义单元格之间的距离。如果指定为0,则单元格的线会合为一条
- bgcolor:背景色
- align:对齐方式
<tr></tr>
:定义行- bgcolor:背景色
- align:对齐方式
<td></td>
:定义单元格- colspan:合并列
- rowspan:合并行
<th></th>
:定义表头单元格<caption></caption>
:表格标题<thead></thead>
:表示表格的头部分<tbody></tbody>
:表示表格的体部分<tfoot></tfoot>
:表示表格的脚部分
表单标签
- 概念:用于采集用户输入的数据。用于和服务器进行交互。
<form>
:用于定义表单,可以定义一个范围,范围内代表采集用户数据的范围属性:
action
;指定提交数据的URLmethod
:指定提交方式(一共7种,常用2种)get
- 请求参数会在地址栏显示。数据被封装到请求行中
- 请求参数大小有限制
- 不太安全
post
- 请求参数不会显示在地址栏。数据被封装到请求体中
- 请求参数大小没有限制
- 比较安全
表单项中的数据想要被提交,必须指定其
name
属性
表单项标签
input
:可以勇敢type属性值,改变元素展示的样式type
属性:text:文本输入框,默认值
password:密码输入框
radio:单选框
- 要想多个单选框实现单选的效果,则多个单选框的
name属性
必须一样 - 一般会给每一个单选框提供value属性,指定其被选中后提交的值
- checked属性:可以指定默认值
cheecked="checked"
,可以简写checked
- 要想多个单选框实现单选的效果,则多个单选框的
checkbox:复选框
- 一般会给每一个单选框提供value属性,指定其被选中后提交的值
- checked属性:可以指定默认值
file:文件选择框
hidden:隐藏域,用于提交一些信息
按钮:
- submit:提交按钮,可以提交表单
- button:普通按钮
- image:图片提交按钮(src属性指定图片的路径)
date:定义 date 控件(包括年、月、日,不包括时间)。
- email:定义用于 e-mail 地址的字段。
- color:定义拾色器
- number:定义用于输入数字的字段。
placeholder
:指定输入框的提示信息,当输入框的内容发生改变,会自动清空提示信息
select
:下拉列表- 子元素:
option
,指定列表项
- 子元素:
textarea
:文本域- cols:指定列数,每一行有多少个字符
- rows:默认多少行。
- `label`:指定输入项的文字描述信息
- label的for属性一般会和 input 的 id属性值 对应。如果对应了,则点击label区域,会让input输入框获取焦点。`<label for="username"></label>`
CSS
概念:Cascading Style Sheets 层叠样式表
- 层叠:多个样式可以作用在同一个html的元素上,同时生效
优点:
- 功能强大
- 将内容展示和样式控制分离
- 降低耦合度。解耦
- 让分工协作更容易
- 提高开发效率
使用
内联样式
- 在标签内使用style属性指定css代码
- 如:
<div style="color:red;">hello css</div>
内部样式
- 在head标签内,定义style标签,style标签的标签体内容就是css代码
- 如
1
2
3
4
5
6
7<style>
div{
color:blue;
}
</style>
<div>hello css</div>
外部样式
- 定义css资源文件
在head标签内,定义link标签,引入外部的资源文件
1
2
3
4
5
6
7<!-- a.css:
div{
color:green;
} -->
<link rel="stylesheet" href="css/a.css">
<div>hello css</div>
<div>hello css</div>
注意:
- 三种方式,css作用域越来越大
- 3种格式可以写为:
1
2
3<style>
@import "css/a.css";
</style>
语法
格式:
1
2
3
4
5选择器{
属性名1:属性值1;
属性名2:属性值2;
...
}注意:每一对属性需要使用分号;隔开,最后一对属性可以不加
选择器
- 选择器:筛选具有相似特征的元素
分类:
基础选择器
id选择器:选择具体的id属性值的元素,建议在一个html页面中id值唯一
- 语法:
#id属性值{}
- 语法:
元素选择器:选择具有相同标签名称的元素
- 语法:
标签名称{}
- 注意:id选择器优先级高于元素选择器
- 语法:
类选择器:选择具有相同class属性值的元素
- 语法:
.class属性值{}
- 注意:类选择器优先级高于元素选择器
- 语法:
扩展选择器
选择所有元素
- 语法:
*{}
- 语法:
并集选择器
- 语法:
选择器1,选择器2{}
- 语法:
子选择器:筛选选择器1元素下的选择器2元素
- 语法:
选择器1 选择器2{}
- 语法:
父选择器:筛选选择器2的父选择器1
- 语法:
选择器1 > 选择器2{}
- 语法:
属性选择器:选择元素名称,属性名=属性值的元素
- 语法:
元素名称[属性名="属性值"]{}
- 语法:
伪类选择器:选择一些元素具有的状态
- 语法:
元素:状态{}
- 如:
<a>标签
- link:初始化的状态
- visited:被访问过的状态
- active:正在访问状态
- hover:鼠标悬浮状态
- 语法:
属性
字体
- font-size:字体大小
- color:文本颜色
- text-align:对其方式
- line-height:行高
背景
- background:
background: url("图片地址") no-repeat right top;
- background:
边框
- border:设置边框,符合属性
尺寸
- width:宽度
- height:高度
盒子模型:控制布局
- margin:外边距
padding:内边距
- 默认情况下内边距会影响整个盒子的大小
- box-sizing: border-box; 设置盒子的属性,让width和height就是最终盒子的大小
float:浮动
- left
- right
Javascript
概念:客户端脚本语言
- 运行再客户端浏览器中,每一个浏览器都有JavaScript的解析引擎
- 脚本语言:不需要编译,直接就可以被浏览器解析执行
功能:可以增强用户和html页面的交互过程,可以来控制html元素,让页面增加动态效果,增强用户体验
JavaScript的发展史
- 1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。
- 1995年,NetScape公司,开发了一门客户端脚本语言:LiveScript。后来SUN公司的专家,修改LiveScript,命名为JavaScript
- 1996年,微软模仿JavaScript开发出JScript语言
- 1997年,ECMA(欧洲计算机制造商协会),制定出客户端脚本语言的标准:ECMAScript,就是统一了所有客户端脚本语言的编码方式
- JavaScript = ECMAScript + JavaScript特有东西(DOM+BOM)
ECMAScript:客户端脚本语言标准
基本语法
与html结合方式
- 内部JS:定义
<script>
,标签体内容就是js代码 - 外部JS:定义
<script>
,通过src属性
引入外部的js文件
- 注意:
<script>
可以定义在html页面的任何地方。但定义的位置会影响执行顺序<script>
可以定义多个
- 内部JS:定义
注释
- 单行注释:
//注释内容
- 多行注释:
/*注释内容*/
- 单行注释:
数据类型
基本数据类型
- number:数字。整数/小数/NaN(not a number一个不是数字的数字类型)
- string:字符串。
- boolean:true/false
- null:一个对象为空的占位符
- undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined
引用数据类型
- 对象
变量
- 变量:一小块存储数据的内存空间
Java语言是强类型语言,而JavaScript是弱类型语言
- 强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定类型的数据
- 弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据
语法:
var 变量名 = 初始化值;
typeof运算符
:获取变量的类型。(null运算后得到Object类型)
运算符
一元运算符:只有一个运算数的运算符
++,-- , +(正号)
- 在JS中,如果运算数不是运算符所要求的类型,那么JS引擎会自动地将运算数进行类型转换。
- String转number:按照字面值转换,如果字面值不是数字,则转为NaN
算数运算符
+ - * / % ...
赋值运算符
= += -+....
比较运算符
> < >= <= == ===(全等于)
- 比较方式
- 类型相同:直接比较
- 字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止
- 类型不同:先进行类型转换,再比较(“123”==123)
===全等于
在比较之前,先判断类型,如果类型不一致,则直接会返回false
- 类型相同:直接比较
逻辑运算符
&& || !
- 其他类型转boolean
- number:0或NaN为false,其他为true
- string:除了空字符串,其他都是true
- null/undefined:false
- 对象:所有对象都为true
三元运算符
表达式? 值1:值2;
- 判断表达式的值,如果是true则取值1,如果是false则取值2
流程控制语句
- if…else…
switch
- 在Java中,switch语句可以接受地数据类型:byte int shor char,枚举(jdk1.5) ,String(jdk1.7)
- 在JS中,switch语句可以接受任意的原始数据类型
while
- do…while
- for
JS特殊语法
- 语句以分号
;
结尾,如果一行只有一条语句,分号可以省略 - 变量地定义使用
var
关键字,也可以不使用- 使用:定义的变量是局部变量
- 不使用:定义的变量是全局变量(不建议)
- 语句以分号
基本对象
Function函数(方法)对象
创建:
1
2
3
4
5
6
7
8// 常用
function 方法名称(形参列表){
方法体
}
// 常用2
var 方法名 = function(形参列表){
方法体
}属性:
- length:返回形参的个数
特点:
- 方法定义是,形参的类型不用写,返回值类型也不用写
- 方法是一个对象,如果定义名称相同的方法,会覆盖
- JS中,方法的调用只与方法的名称有关,和参数列表无关(无法重载,可以通过arguments.length进行模拟重载)
- 在方法声明中有一个隐藏的内置对象(数组),arguments封装所有的实际参数
调用:方法名称(实际参数列表);
Array数组对象
创建
1
2
3
4
5
6// 1
var arr = new Array(元素列表);
// 2
var arr = new Array(默认长度);
// 3
var arr = [元素列表];方法
- join(分隔符):将数组中的元素按照指定的分隔符拼接为字符串
- push():项数组的末尾添加一个或更多元素,并返回新的长度
属性
- length:数组的长度
特点
- 在JS中,数组元素的类型是可变的
- 在JS中,数组的长度是可变的
Boolean
Date日期对象
创建:
1
var date = new Date();
方法:
- toLocaleString();返回当前date对象对应的时间本地字符串格式
- getTime():获取毫秒值。返回当前日期对象描述的时间到1970年1月1日0点的毫秒值差
Math对象
- 创建:Math对象不用创建,直接使用。
Math.方法名();
方法
- random():返回 0 ~ 1 之间的随机数。 含0不含1
- ceil():对数进行上舍入。
- floor():对数进行下舍入。
- round():把数四舍五入为最接近的整数。
属性
- PI
- 创建:Math对象不用创建,直接使用。
Number
- String
RegExp正则表达式对象
正则表达式:定义字符串的组成规则
单个字符:
[]
如:
[a]
[ab]
[a-zA-Z0-9_]
- 特殊符号代表特殊含义的单个字符:
\d
:单个数字字符 [0-9]\w
:单个单词字符[a-zA-Z0-9_]
- 特殊符号代表特殊含义的单个字符:
量词符号
?
:表示出现0次或1次*
:表示出现0次或多次+
:出现1次或多次{m,n}
:表示 m<= 数量 <= n- m如果缺省: {,n}:最多n次
- n如果缺省:{m,} 最少m次
开始结束符号
^
:开始$
:结束
正则对象
创建
1
2
3
4
5var reg = new RegExp("正则表达式")//引号里面的字符串需要转义符\
var reg = /正则表达式/;
//eg
var reg1 = new RegExp("^\\w{6,12}$");
var reg2 = /^\w{6,12}$/;方法
- test(参数):验证指定的字符串是否符合正则定义的规范
Global全局对象
- 特点:Global中封装的方法不需要对象就可以直接调用。方法名();
方法:
encodeURI()
:url编码decodeURI()
:url解码1
2
3
4
5var str1 = "乃木坂";
var encode = encodeURI(str1);//编码
document.write(encode+'<br>');//%E4%B9%83%E6%9C%A8%E5%9D%82
var str2 = decodeURI(encode)//解码
document.write(str2+'<br>');
- `encodeURIComponent()`:url编码,编码的字符更多
- `decodeURIComponent()`:url解码
- `parseInt()`:将字符串转为数字
> 逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
- `isNaN()`:判断一个值是否是NaN
> NaN六亲不认,连自己都不认。NaN参与的==比较全部问false
- `eval()`:将JavaScript 字符串,并把它作为脚本代码来执行。
BOM
- 概念:Browser Object Model 浏览器对象模型。将浏览器的各个组成部分封装成对象
组成:
- Window:窗口对象
- Navigator:浏览器对象
- Screen:显示器屏幕对象
- History:历史记录对象
- Location:地址栏对象
Window窗口对象
- 创建
方法
与弹出框有关的方法
alert()
:显示带有一段消息和一个确认按钮的警告框。confirm()
:显示带有一段消息以及确认按钮和取消按钮的对话框。- 确定:返回true
- 取消:返回false
prompt()
:显示可提示用户输入的对话框。- 返回值:获取用户输入的值
与打开关闭有关的方法
close()
:关闭浏览器窗口。谁调用,谁被关闭open()
:打开一个新的浏览器窗口。返回新的Window对象
与定时器有关的方法
setTimeout(方法对象,毫秒值)
:在指定的毫秒数后调用函数或计算表达式- 参数:js代码或者方法对象,毫秒值
- 返回值:唯一标识,用于取消定时器
clearTimeout(id)
:取消由setTimeout()方法设置的timeoutsetInterval(方法对象,毫秒值)
:按照指定的周期(以毫秒计)来调用函数或计算表达式。clearInterval(id)
:取消由 setInterval() 设置的 timeout。
属性
获取其他BOM对象
- history
- location
- Navigator
- Screen
获取DOM对象
- documet:
window.document
可简写document
- documet:
特点
- Window对象不需要创建可以直接使用。
window.方法名()
- window引用可以省略。
方法名()
- Window对象不需要创建可以直接使用。
Location地址栏对象
创建
window.location
location
方法
reload()
:重新加载当前文档。刷新
属性
href
:设置或返回完整的 URL。
History历史记录对象
- 创建
- window.history
- history
- 方法
back()
:加载 history 列表中的前一个 URL。forward()
:加载 history 列表中的下一个 URL。go(参数)
:加载 history 列表中的某个具体页面。- 正数:前进几个历史记录
- 负数:后退几个历史记录
- 属性
- length:返回当前窗口历史列表中的 URL 数量。
- 创建
DOM
- 概念:Document Object Model文档对象模型。将标记语言文档的各个组成部分,封装成对象,可以使用这些对象,对标记语言文档进行CRUD动态操作(文档->dom树)
- 功能:控制html文档的内容
W3C DOM标准被分为3个不同的部分
核心DOM:正对任何结构化文档的标准模型
- Document:文档对象
- ElementL:元素对象
- Attribute:属性对象
- Text:文本对象
- Comment:注释对象
- Node:节点对象,上述5个对象的父对象
XML DOM:针对XML文档的标准模型
- HTML DOM:针对HTML文档的标准模型
核心DOM
Document:文档对象
创建(获取):在html DOM模型中可以使用window对象来获取
- window.document
- document
方法
获取Element对象
getElementById()
:根据id属性值获取元素对象。id属性值一般唯一。getElementsByTagName()
:根据元素名称获取元素对象们。返回值是一个数组getElementsByClassName()
:根据class属性值获取元素对象们。返回值是一个数组。getElementsByName()
:根据name属性值获取元素对象们。返回值是一个数组
创建其他DOM对象
createAttribute(name)
createComment()
createElement()
createTextNode()
属性
Element:元素对象
获取:通过document对象来获取
- window.document.getElementById()
- document.getElementById()
方法
- removeAttribute():删除属性
- setAttribute():设置属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<a>点我进入百度</a>
<input type="button" id="btn1" value="快点我一下">
<input type="button" id="btn2" value="点我删除">
<script>
/*设置Element对象属性*/
var btn1 = document.getElementById("btn1");
btn1.onclick = function(){
var ele_a = document.getElementsByTagName("a")[0];
ele_a.setAttribute("href","https://www.baidu.com");
}
/*删除Element对象属性*/
var btn2 = document.getElementById("btn2");
btn2.onclick = function(){
var ele_a = document.getElementsByTagName("a")[0];
ele_a.removeAttribute("href");
}
</script>
Node:节点对象,其他5个对象的父对象
- 特点:所有DOM对象都可以被认为是一个节点
方法:
CRUD DOM树
appendChild()
:向节点的子节点列表的结尾添加新的子节点removeChild()
:删除(并返回)当前节点的指定子节点replaceChild()
:用新节点替换一个子节点
属性
- parantNode:返回节点的父亲节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<script>
/*删除子节点*/
var ele_a = document.getElementById("del");
ele_a.onclick = function(){
var div1 = document.getElementById("div1");
div1.removeChild(div2);
};
/*添加子节点*/
var div3 = document.createElement("div");
div3.setAttribute("id","div3");
var ele_b = document.getElementById("add");
ele_b.onclick = function(){
var div1 = document.getElementById("div1");
div1.append(div3);
}
</script>
HTML DOM
- 标签体的设置和获取:
innerHTML
- 使用html元素对象的属性
控制元素样式
使用元素的
style属性
来设置1
2
3
4
5//修改样式方式1
div1.style.border = "1px solid red";
div1.style.width = "200px";
//font-size--> fontSize
div1.style.fontSize = "20px";提前定义好类选择器的样式,通过元素的
className属性
来设置其class属性值
事件监听机制
概念:某些组件被执行了某些操作后,会触发某些代码的执行
- 事件:某些操作。如:单击、双击
- 事件源:组件。如:按钮、文本输入框
- 监听器:代码
- 注册监听:将事件、事件源、监听器结合在一起。当事件源上发生了某个事件,则触发执行某个监听器代码。
常见事件:
点击事件
onclick
:单击事件ondbclick
:双击事件
焦点事件
onblur
:失去焦点onfocus
:元素获得焦点
加载事件
onload
:一张页面或一幅图像完成加载
鼠标事件
onmousedown
:鼠标按键被按下onmouseup
:鼠标按键被松开onmousemove
:鼠标被移动onmouseover
:鼠标移到某元素之上onmouseout
:鼠标从某元素移开
键盘事件
onkeydown
:某个键盘按键被按下onkeyup
:某个键盘按键被松开onkeypress
:某个键盘按键被按下并松开
选择和改变
onchange
:域的内容被改变onselect
:文本被选中
表单事件
onsubmit
:提交按钮被点击(可以阻止表单的提交。方法返回false则表单被阻止提交)onreset
:重置按钮被点击
绑定事件:
直接在html标签上,指定事件的属性(操作),属性值就是js代码
onclick
:单击事件
通过js获取元素对象,指定事件属性,设置一个函数