前端
一、Web概念
1、JavaWeb:概念:使用Java语言开发基于互联网的项目
2、软件构架
1.C/S:Client/Server 客户端/服务器端
优点:用户体验好
缺点:开发、安装,部署,维护 麻烦
2. B/S: Browser/Server 浏览器/服务器端
优点:开发、安装,部署,维护 简单
缺点:
1. 如果应用过大,用户的体验可能会受到影响
2. 对硬件要求过高
3、B/S架构详解
资源分类:
1. 静态资源:使用静态网页开发技术发布的资源。
特点:所有用户访问,得到的结果是一样的。
2. 动态资源:使用动态网页及时发布的资源。
特点:所有用户访问,得到的结果可能不一样
4、 静态资源:
1、HTML:用于搭建基础网页,展示页面的内容
2、CSS:用于美化页面,布局页面
3、JavaScript:控制页面的元素,让页面有一些动态的效果
二、HTML
1、概念:是最基础的网页开发语言
Hyper Text Markup Language 超文本标记语言
超文本:超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本.
标记语言:由标签构成的语言。<标签名称> 如 html,xml标记语言不是编程语言
2、语法:
1. html文档后缀名 .html 或者 .htm
2. 标签分为
1. 围堵标签:有开始标签和结束标签。如 <html> </html>
2. 自闭和标签:开始标签和结束标签在一起。如 <br/>
3. 在开始标签中可以定义属性。属性是由键值对构成,值需要用引号(单双都可)引起来
4. html的标签不区分大小写,但是建议使用小写。
3、标签:
1)文件标签:构成html最基本的标签
html:html文档的根标签
head:头标签。用于指定html文档的一些属性。引入外部的资源
title:标题标签。
body:体标签
<!DOCTYPE html>:html5中定义该文档是html文档
2)文本标签:和文本有关的标签
注释:<!-- 注释内容 -->
<h1> to <h6>:标题标签
h1~h6:字体大小逐渐递减
<p>:段落标签
<br>:换行标签
<hr>:展示一条水平线
属性:
color:颜色
width:宽度
size:高度
align:对其方式
center:居中
left:左对齐
right:右对齐
<b>:字体加粗
<i>:字体斜体
<font>:字体标签
<center>:文本居中
属性:
color:颜色
size:大小
face:字体
属性定义:
color:
1. 英文单词:red,green,blue
2. rgb(值1,值2,值3):值的范围:0~255 如 rgb(0,0,255)
3. #值1值2值3:值的范围:00~FF之间。如: #FF00FF
width:
1. 数值:width='20' ,数值的单位,默认是 px(像素)
2. 数值%:占比相对于父元素的比例
3)图片标签:
格式:<img src="路径" alt="说明" width=" "height=" "/>
img:展示图片
属性:src:指定图片的位置
4)列表标签:
有序列表:
ol:
li:
无序列表:
ul:
li:
5)链接标签:
格式:<a href="地址"title="展示"target="-blank">文字/图片 </a>
a:定义一个超链接
属性:
href:指定访问资源的URL(统一资源定位符)
target:指定打开资源的方式
_self:默认值,在当前页面打开
_blank:在空白页面打开
6)div和span:
div:每一个div占满一整行。块级标签
span:文本信息在一行展示,行内标签 内联标签
7)语义化标签:
html5中为了提高程序的可读性,提供了一些标签。
1. <header>:页眉
2. <footer>:页脚
8)表格标签:
格式:
<table border=""cellpadding=""cellspaceing="">
<tr><th> </th><th> </th><th> </th></tr>
<tr><th> </th><th> </th><th> </th></tr>
<tr><th> </th><th> </th><th> </th></tr>
</table>
table:定义表格
width:宽度
border:边框
cellpadding:定义内容和单元格的距离
cellspacing:定义单元格之间的距离。如果指定为0,则单元格的线会合为一条、
bgcolor:背景色
align:对齐方式
tr:定义行
bgcolor:背景色
align:对齐方式
td:定义单元格
colspan:合并列
rowspan:合并行
th:定义表头单元格
<caption>:表格标题
<thead>:表示表格的头部分
<tbody>:表示表格的体部分
<tfoot>:表示表格的脚部分
9)表单标签
概念:用于采集用户输入的数据的。用于和服务器进行交互。
form:用于定义表单的。可以定义一个范围,范围代表采集用户数据的范围
属性:
action:指定提交数据的URL
method:指定提交方式
分类:一共7种,2种比较常用
get:
1. 请求参数会在地址栏中显示。会封装到请求行中(HTTP协议后讲解)。
2. 请求参数大小是有限制的。
3. 不太安全。
post:
1. 请求参数不会再地址栏中显示。会封装在请求体中(HTTP协议后讲解)
2. 请求参数的大小没有限制。
3. 较为安全。
表单项中的数据要想被提交:必须指定其name属性
表单项标签:
<form action="" name="" target_blank="" method="">
<input type="text" /> (普通文本框)
<input type="password" /> (密码框)
<input type="file" /> (上传文件)
<input type="hidden" /> (隐藏的值)
<input type="button" /> (普通的按钮)
<input type="radio" /> (单选)
<imput type="checkbox"/> 复选框
<imput type="submit" />提交
<imput type="reset" /> 重置
</form>
input:可以通过type属性值,改变元素展示的样式
type属性:
text:文本输入框,默认值'placeholder':指定输入框的提示信息
password:密码输入框
file:文件选择框
hidden:隐藏域,用于提交一些信息。
radio:单选框
注意:
1. 要想让多个单选框实现单选的效果,则多个单选框的name属性值必须一样。
2. 一般会给每一个单选框提供value属性,指定其被选中后提交的值
3. checked属性,可以指定默认值
4. checked="checked" 自动勾上
checkbox:复选框
注意:
1. 一般会给每一个单选框提供value属性,指定其被选中后提交的值
2. checked属性,可以指定默认值
3. checked="checked" 自动勾上
按钮:
submit:提交按钮。可以提交表单
method(提交方式)post或get(默认提交方式)
button:普通按钮
image:图片提交按钮
src属性指定图片的路径
label:指定输入项的文字描述信息
注意:
label的for属性一般会和 input 的 id属性值 对应。如果对应了,则点击label区域,会让input输入框获取焦点。
select: 下拉列表
子元素:option,指定列表项
textarea:文本域
cols:指定列数,每一行有多少个字符
rows:默认多少行。
10)插入视频和mp3音乐
插入视频
<video width="320" height="320" controls>
<source src="movie.mp4" type="video/mp4">
</video>
插入MP3
<audio controls>
<source src="go.ogg或者mp3" type="audio/ogg或者mpeg">
</audio>
11)map标签(不常用)
<img src="图片地址" usemap="名字" />
<map id="名字" name="名字">
<area shape="形状" coords="起点,终点" href="跳转地址" target="-blank" />
</map>
形状:
四边形:rect,四个数字依次为:起点X、起点Y、终点X、终点Y
三角形:circle,三个数字依次为:中心点X、中心点Y、半径
多边形:poligon,多个路径点依次为:起点X、起点Y、路径1X、路径1Y、路径2X、路径2Y......
三、CSS
1、概念:Cascading Style Sheets 层叠样式表
层叠:多个样式可以作用在同一个html的元素上,同时生效
2、好处
1. 功能强大
2. 将内容展示和样式控制分离
降低耦合度。解耦
让分工协作更容易
提高开发效率
3、CSS的使用
1、内敛样式:在标签内使用style属性指定css代码
格式:<p style="color:red"> 内容</p>
2、内部样式:在head标签内,定义style标签,style标签的标签体内容是css代码
格式:<style type=”text/css”> </style>
3、外部样式:定义css资源文件,在head标签内定义link标签,引入外部资源文件
格式:<link rel=”stylesheet” type=”text/css” href=”css 文件” />
注意:
1,2,3种方式 css作用范围越来越大
1方式不常用,后期常用2,3
4、css语法
格式:
选择器 {
属性名1:属性值1;
属性名2:属性值2;
...
}
选择器:筛选具有相似特征的元素
注意:每一对属性需要使用;隔开,最后一对属性可以不加;
5、选择器:筛选具有相似特征的元素
分类:
1. 基础选择器
1. id选择器:选择具体的id属性值的元素.建议在一个html页面中id值唯一
语法:#id属性值{}
2. 元素选择器:选择具有相同标签名称的元素
语法: 标签名称{}
注意:id选择器优先级高于元素选择器
3. 类选择器:选择具有相同的class属性值的元素。
语法:.class属性值{}
注意:类选择器选择器优先级高于元素选择器
2. 扩展选择器:
1. 选择所有元素:
语法: *{}
2. 并集选择器:
选择器1,选择器2{}
3. 子选择器:筛选选择器1元素下的选择器2元素
语法: 选择器1 选择器2{}
4. 父选择器:筛选选择器2的父元素选择器1
语法: 选择器1 > 选择器2{}
5. 属性选择器:选择元素名称,属性名=属性值的元素
语法: 元素名称[属性名="属性值"]{}
6. 伪类选择器:选择一些元素具有的状态
语法: 元素:状态{}
如: <a>
状态:
link:初始化的状态
visited:被访问过的状态
active:正在访问状态
hover:鼠标悬浮状态
3.1 属性
1)字体、文本
字体大小:font-size
字体:font-family
文本颜色:color
对其方式:text-align:
行高 :line-height
文本对齐:text-align: left/center/right
文本缩进:text-indent:值;
文本行高:line-height:值;
字间隔(单词):word-spacing:10px;
字母间隔:letter-spacing:5px;
文字下划线text-decoration:none/underline
2.)长度值:
CSS 长度值得单位:
%——百分比in——寸cm——厘米mm——毫米
pt——point,大约 1/72 寸; pc——pica,大约 6pt,1/6 寸;
px——屏幕的一个像素点;
em——元素的 font-size;
3)边框:
border:设置边框,符合属性
border:1pxsolid#ccc;
dashed 表示虚线
border-left:none; border-right:none; border-top:none; border-bottom:none;
后代元素长度大于祖辈元素的大小时候的处理方法:overflow:;
可能的值:
visible:默认,内容不会被修剪,会呈现在元素框之外。
hidden:超出的内容会被修剪掉,直接不现实。
scroll:超出内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto:如果内容被超出,则浏览器会显示滚动条以便查看其余的内容。
inherit:规定应该从父元素继承overflow属性的值。
4)尺寸
width:宽度
height:高度
5)盒子模型:控制布局
margin:外边距
padding:内边距
默认情况下内边距会影响整个盒子的大小
box-sizing: border-box; 设置盒子的属性,让width和height就是最终盒子的大小
float:浮动
left
right
我不想标准流中的元素受到浮动的影响怎么办?
clear:both;
none:默认值。允许两边都可以有浮动对象
left:不允许左边有浮动对象
right:不允许右边有浮动对象
both:不允许有浮动对象
6)块级元素
背景:background:
背景颜色background-color:颜色值;
背景图片:background-image:url(bg.gif)
背景渐变
background:linear-gradient
background:radial-gradient
使用background-repeat 来解决背景图片重复的问题,
值为:
repeat:默认值
repeat-x:水平方向重复
repeat-y:水平方向重复
no-repeat:图像只出现一次
inherit:继承
css3中增加两个值:
round:为图片不被剪切,自动调整图片大小来适应背景区域
space:为图片不被剪切,自动添加图片间空白来适应背景区域。
背景图片的位置:使用 background-position 来设置
1>可以使用一些关键字:top、bottom、left、right和center通常会成对出现。
top left
top center
top right
center left
center center
center right
bottom left
bottom center
bottom right
关键字如果只设定一个,那另外一个也会取相同的值
也可以用百分比background:50%(水平)50%;(垂直)
如果只设定一个值,则只用来设定水平位置,而垂直位置会默认设为center。
背景关联background-attachment:fixed
7)相对定位
position:relative;
left:;
right:;
top:;
bottom:;
为元素设置相对定位之后,元素依然会占据原来的空间,依然在标准流中!
relative:定位是相对于自身位置定位
8)绝对定位
position:absolute;
left:;
right:;
absolute:定位是相对于离元素最近的设置了绝对或相对定位的父元素决定的,如果没有父元素设置绝对或相对定位,则元素
相对于根元素即html元素定位
9)构造列表
将 ul 或 ol 设置为
list-style: none;
剩余的我们自己构造
边框颜色:#BBBBBB
下边框颜色:#dedede
列表每行高度:31px
文字缩进:35px
字体:微软雅黑
文字颜色:#3c3c3c
背景颜色:#F8F8F8
四、JavaScript
概念: 一门客户端脚本语言
JavaScript = ECMAScript + JavaScript自己特有的东西(BOM+DOM)
一、ECMAScript:客户端脚本语言的标准
1、基本语法:
1)与html结合方式
1.内部JS:
<script>
js代码
</script>
2.外部JS:
<script src="js文件"></script>
注意:<script>可以定义在HTML中的任何地方,但是定义位置会影响执行顺序,并且可以定义多个
语句打印输出: document.write();
2)注释
1.单行注释://注释内容
2.多行注释:/*多行注释内容*/
3)数据类型
1.原始数据类型(基本数据类型):
1.number:数字。整数/小数/NaN(not a number 一个不是数字的数字类型)
2.string:字符串。字符串 "abc" ”a“ ”abc“
3.boolean:true和false
4.null:一个对象为空的占位符
5.undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined
2.扩展数据类型(引用数据类型):对象
4)变量
变量:一小块存储数据的内存空间
Java语言是强类型语言,而JavaScript是弱类型语言
强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定类型的数据
弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据
语法:
var 变量名 = 初始化值;
typeof运算符:获取变量的类型
注:null运算后得到的是object
5)运算符
1.一元运算符:只有一个运算数的运算符
++ --: 自增(自减)
++(--) 在前,先自增(自减),再运算
++(--) 在后,先运算,再自增(自减)
+(-):正负号
注意:在JS中,如果运算数不是运算符所要求的类型,那么js引擎会自动的将运算数进行类型转换
其他类型转number:
string转number:按照字面值转换。如果字面值不是数字,则转为NaN(不是数字的数字)
boolean转number:true转为1,false转为0
2.算数运算符:+ 、-、 * 、/、 %、
3.赋值运算符:=、 +=、 -+、
4.比较运算符:
< >= <= == ===(全等于) >
比较方式
1. 类型相同:直接比较
字符串:按照字典顺序比较。按位逐一比较,直到得出大小为止。
2. 类型不同:先进行类型转换,再比较
===:全等于。在比较之前,先判断类型,如果类型不一样,则直接返回false
5.逻辑运算符:
&& || !
其他类型转boolean:
1. number:0或NaN为假,其他为真
2. string:除了空字符串(""),其他都是true
3. null & undefined:都是false
4. 对象:所有对象都为true
6.三元运算符:
? : 表达式
var a = 3;
var b = 4;
var c = a > b ? 1:0;
语法:
表达式? 值1:值2;
判断表达式的值,如果是true则取值1,如果是false则取值2;
6)流程控制语句
1. if...else...
2. switch:
在java中,switch语句可以接受的数据类型: byte int shor char,枚举(1.5) ,String(1.7)
switch(变量):
case 值:
在JS中,switch语句可以接受任意的原始数据类型
3. while
4. do...while
5. for
7)JS特殊语法
1. 语句以;结尾,如果一行只有一条语句则;可以省略 (不建议)
2. 变量的定义使用var关键字,也可以不使用
用: 定义的变量是局部变量
不用:定义的变量是全局变量(不建议)
2、基本对象
1)Function:函数(方法)对象
1、创建:
1.var fun'= new function(形式参数列表,方法体);//忘掉
2.function 方法名称(形式参数列表){方法体};
3.var 方法名=function(形式参数列表){方法体};
2、方法
3、属性:length:代表参数的个数
4、特点:
1.方法定义是,形参的类型不用写,返回值也不用写
2.方法是一个对象,如果定义名称相同的方法,会覆盖
3.在JS中,方法的调用只与方法的名称有关,和参数列表无关
4. 在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数
5. 调用:
方法名称(实际参数列表);
2)Array:数组对象
1. 创建:
1. var arr = new Array(元素列表);
2. var arr = new Array(默认长度);
3. var arr = [元素列表];
2. 方法
join(参数):将数组中的元素按照指定的分隔符拼接为字符串
添加元素:
arr[索引] = 值;
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
获取元素:
var 变量名=arr[索引];
3. 属性
length:数组的长度
4. 特点:
1. JS中,数组元素的类型可变的。
2. JS中,数组长度可变的。
3)Boolean
4)Date:日期对象
1. 创建:
var date = new Date();
2. 方法:
toLocaleString():返回当前date对象对应的时间本地字符串格式
getTime():获取毫秒值。返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差
5)Math:数学对象
1. 创建:
特点:Math对象不用创建,直接使用。 Math.方法名();
2. 方法:
random():返回 0 ~ 1 之间的随机数。 含0不含1
ceil(x):对数进行上舍入。
floor(x):对数进行下舍入。
round(x):把数四舍五入为最接近的整数。
3. 属性: PI
6)Number
7)String
8)RegExp:正则表达式对象
1. 正则表达式:定义字符串的组成规则。
1. 单个字符:[]
如: [a] [ab] [a-zA-Z0-9_]
特殊符号代表特殊含义的单个字符:
\d:单个数字字符 [0-9]
\w:单个单词字符[a-zA-Z0-9_]
2. 量词符号:
?:表示出现0次或1次
*:表示出现0次或多次
+:出现1次或多次
{m,n}:表示 m<= 数量 <= n
m如果缺省: {,n}:最多n次
n如果缺省:{m,} 最少m次
3. 开始结束符号
^:开始
$:结束
2. 正则对象:
1. 创建
1. var reg = new RegExp("正则表达式");
2. var reg = /正则表达式/;
2. 方法
1. test(参数):验证指定的字符串是否符合正则定义的规范
9)正则表达式常用
验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^\+?[1-9][0-9]*$
验证非零的负整数:^\-[1-9][0-9]*$
验证非负整数(正整数 + 0) ^\d+$
验证非正整数(负整数 + 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:^\w+$
验证用户名或昵称经常用到: ^[\u4e00-\u9fa5A-Za-z0-9-_]*$ 只能中英文,数字,下划线,减号
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;
^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,
XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
整数:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?$
10)Global
1. 特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。 方法名();
2. 方法:
encodeURI():url编码
decodeURI():url解码
encodeURIComponent():url编码,编码的字符更多
decodeURIComponent():url解码
parseInt():将字符串转为数字
逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
isNaN():判断一个值是否是NaN
NaN六亲不认,连自己都不认。NaN参与的==比较全部问false
eval():讲 JavaScript 字符串,并把它作为脚本代码来执行。
3. URL编码
传智播客 = %E4%BC%A0%E6%99%BA%E6%92% AD%E5%AE%A2
二、BOM
1. 概念:Browser Object Model 浏览器对象模型
* 将浏览器的各个组成部分封装成对象。
2. 组成:
* Window:窗口对象
* Navigator:浏览器对象
* Screen:显示器屏幕对象
* History:历史记录对象
* Location:地址栏对象
3. Window:窗口对象
1)创建
2)方法
1. 与弹出框有关的方法:
alert() 显示带有一段消息和一个确认按钮的警告框。
confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
如果用户点击确定按钮,则方法返回true
如果用户点击取消按钮,则方法返回false
prompt() 显示可提示用户输入的对话框。
返回值:获取用户输入的值
2. 与打开关闭有关的方法:
close() 关闭浏览器窗口。
谁调用我 ,我关谁
open() 打开一个新的浏览器窗口
返回新的Window对象
3. 与定时器有关的方式
setTimeout() 在指定的毫秒数后调用函数或计算表达式。
参数:
1. js代码或者方法对象
2. 毫秒值
返回值:唯一标识,用于取消定时器
clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
clearInterval() 取消由 setInterval() 设置的 timeout。
3)属性:
1. 获取其他BOM对象:
history
location
Navigator
Screen:
2. 获取DOM对象
document
4)特点
Window对象不需要创建可以直接使用 window使用。 window.方法名();
window引用可以省略。 方法名();
4. Location:地址栏对象
1. 创建(获取):
1. window.location
2. location
2. 方法:
reload() 重新加载当前文档。刷新
3. 属性
href 设置或返回完整的 URL。
5. History:历史记录对象
1)创建(获取):
1.window.history
2.history
2)方法:
back();加载 history 列表中的前一个 URL。
forward();加载 history 列表中的下一个 URL。
go(参数);加载 history 列表中的某个具体页面。
参数:
正数:前进几个历史记录
负数:后退几个历史记录
3)属性:
length;返回当前窗口历史列表中的 URL 数量
三、DOM
概念:Document Object Model 文档对象模型
将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作 w3C DOM 标准被分为3个不
同的部分
核心 DOM - 针对任何结构化文档的标准模型
Document:文档对象
Element:元素对象
Attribute:属性对象
Text:文本对象
Comment:注释对象
Node:节点对象,其他5个的父对象
XML DOM - 针对 XML文档的标准模型
HTML DOM - 针对HTML文档的标准模型
核心DOM模型:
1、Document:文档对象
1.创建:在html dom 模型中可以使用window对象来获取
1.window.document
2.document
2.方法
1.获取Element对象:
1.getElementById():根据id属性值获取元素对象。id属性值一般唯一
2.getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组
3.getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组
4.getElementByName():根据name属性值获取元素对象们。返回值是一个数组
2.创建其他DOM对象:
createAttribute(name)
createComment()
createElement
createTextNode()
3.属性
2、Element:元素对象
1.获取:通过document来获取和创建
decument.getElementById("id值");
2.方法:
1.removeAttribute():删除属性
2.setAttribute():设置属性
操作Element对象:
1.修改属性值:
1.明确获取的对象
2.查看API文档,找出有哪些属性可以设置
2.修改标签体内容:
属性:innerHTML
1.获取元素对象
2.使用innerHTML属性修改标签体内容
3.控制元素样式:
1.使用元素的style属性设置
2.提前定义好类选择器的样式,通过元素的className属性设置其class属性值
3、Node:节点对象,其他5个的父对象
特点:所有dom对象都可以被认为是一个节点
方法:
CRUD dom 树:
appendChild():向节点的子节点列表的结尾添加新的子节点
removeChild():删除(并返回)当前节点的指定子节点
replaceChild():用新节点替换子节点
属性:
parentNode:返回节点的父节点
四、事件
概念:某些组件被执行了某些操作后,触发某些代码的执行
事件:某些操作
事件源:组件
监听器:代码
注册监听:将事件、事件源、监听器结合在一起。
常见的事件
1.点击事件:
1.onclick:单击事件
2.ondblclick:双击事件
2.焦点事件
1.onblur:失去焦点
2.onfocus:元素获得焦点
3.加载事件
1.onload:一张页面或者一幅图像完成加载
4.鼠标事件
1.onmousedown 鼠标按钮被按下
定义方法时,定义一个形参接受event对象
2.onmouseup 鼠标按键被松开
3.onmousemove 鼠标被移动
4.onmouseout 鼠标从某元素移开
5.onmouseover 鼠标移到某元素之上
5.键盘事件
1.onkeydown 某个键盘按键被按下
2.onkeyup 某个键盘按键被松开
3.onkeypress 某个键盘按键被按下并松开
6.选择和改变
1.onchange 域的内容被改变
2.onselect 文本被选中
7.表单事件
1.onsubmit 确认按钮被点击
2.onreset 重置按钮被点击
如何绑定事件:
1.直接在html标签上,制定事件的属性(操作),属性值就是js代码
1.事件:onclick--- 单击事件
2.通过js获取元素对象,指定事件属性,设置一个函数
五、Bootstrap框架
1、概念:一个前端开发的框架
框架:一个半成品软件
好处:
1.定义js和css样式。
2.响应式布局:同一套页面可以兼容不同分辨率的设备
2、入门
1.下载Bootstrap
2.在项目中将这三个文件夹复制
3.创建html页面,引入必要的资源文件
4.模板:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap HelloWorld</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="js/jquery-3.2.1.min.js"></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<h1>你好,世界!</h1>
</body>
</html>
3、响应式布局
1)同一套页面可以兼容不同分辨率的设备。
2)实现:依赖于栅格系统:将一行平均分成12个格子,可以指定元素占几个格子
3)步骤:
1. 定义容器。相当于之前的table、
容器分类:
1. container:两边留白
2. container-fluid:每一种设备都是100%宽度
2. 定义行。相当于之前的tr 样式:row
3. 定义元素。指定该元素在不同的设备上,所占的格子数目。样式:col-设备代号-格子数目
设备代号:
1. xs:超小屏幕 手机 (<768px):col-xs-12
2. sm:小屏幕 平板 (≥768px)
3. md:中等屏幕 桌面显示器 (≥992px)
4. lg:大屏幕 大桌面显示器 (≥1200px)
注意:
1. 一行中如果格子数目超过12,则超出部分自动换行。
2. 栅格类属性可以向上兼容。栅格类适用于与屏幕宽度大于或等于分界点大小的设备。
3. 如果真实设备宽度小于了设置栅格类属性的设备代码的最小值,会一个元素沾满一整行。
4、CSS样式和JS插件
1)全局CSS样式:
按钮:class=“btn btn-default”
图片:
class="img-responsive":图片在任意尺寸都占100%
图片形状:
<img src="..." alt="..." class="img-rouded">:方形
<img src="..." alt="..." class="img-circle"> : 圆形
<img src="..." alt="..." class="img-thumbnail"> :相框
表格:
table
table-bordered
table-hover
表单:
给表单项添加:class="form-control"
2)组件:
导航条
分页条
3)插件:
轮播图
六、XML
一、概念:Extensible Markup Language 可扩展标记语言
可扩展:标签都是自定义。<user> <student>
功能:
存储数据
1.配置文件
2.在网络中传输
xml与html的区别
1.xml标签都是自定义的,html标签是预定义的
2.xml的语法严格,html语法松散
3.xml是存储数据,html是展示数据
w3c:万维网联盟
二、语法:
1、基本语法:
1. xml文档的后缀名 .xml
2. xml第一行必须定义为文档声明
3. xml文档中有且仅有一个根标签
4. 属性值必须使用引号(单双均可)引起来
5. 标签必须正确关闭
2、组成部分:
1)文档声明
1.格式: <?xml 属性列表 ?>
2.属性列表
version:版本号,必须属性
encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
standalone:是否独立
取值:
yes:不依赖其他文件
no:依赖其他文件
2)指令(了解):结合CSS的<?xml-stylesheet type="text/css" href="a.css" ?>
3)标签:标签名称自定义的
规则:
名称可以包含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字母 xml(或者 XML、Xml 等等)开始
名称不能包含空格
4)属性:id属性值唯一
5)文本:
CDATA区:在该区域中的数据会被原样展示
格式: <![CDATA[ 数据 ]]>
3、约束:规定xml文档的书写规则
为框架的使用者(程序员):
1. 能够在xml中引入约束文档
2. 能够简单的读懂约束文档
分类:
1. DTD:一种简单的约束技术
2. Schema:一种复杂的约束技术
1.DTD:
引入dtd文档到xml文档中
内部dtd:将约束规则定义在xml文档中
外部dtd:将约束的规则定义在外部的dtd文件中
本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
2.Schema:
引入:
1.填写xml文档的根元素
2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml"
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.itcast.cn/xml"
xsi:schemaLocation="http://www.itcast.cn/xml student.xsd">
三、解析:操作xml文档,将文档中的数据读取到内存中
1.操作xml文档
1)解析(读取):将文档中的数据读取到内存中
2)写入:将内存中的数据保存到xml文档中。持久化存储
2.解析xml的方式
1)DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
优点:操作方便,可以对文档进行增删改查的所有操作
缺点:占内存
2)SAX:逐行读取,基于事件驱动的。
优点:不占内存
缺点:只能读取,不能增删改
3.xml常见的解析器
1)JAXP:sun公司提供的解析器,支持dom和sax两种思想
2)DOM4J:一款非常优秀的解析器
3)Jsoup: jsoup是一款Java的HTML解析器,可以直接解析某个URL地址、HTML文本内容。
4)PULL:Andriod操作系统内置的解析器,sax方式的
入门:
步骤:
1. 导入jar包
2. 获取Document对象
3. 获取对应的标签Element对象
4. 获取数据
代码:
java
//2.1获取student.xml的path
String path = JsoupDemo1.class.getClassLoader().getResource("xml文件").getPath();
//2.2解析xml文档,加载文档进内存,获取dom树--->Document
Document document = Jsoup.parse(new File(path), "utf-8");
//3.获取元素对象 Element
Elements elements = document.getElementsByTag("name");
//3.1获取第一个name的Element对象
Element element = elements.get(0);
//3.2获取数据
String name = element.text();
System.out.println(name);
4.对象的使用:
1) Jsoup:工具类,可以解析html或xml文档,返回Document
parse:解析html或xml文档,返回Document
parse(File in, String charsetName):解析xml或html文件的。
parse(String html):解析xml或html字符串
parse(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
2)Document:文档对象。代表内存中的dom树
获取Element对象
getElementById(String id):根据id属性值获取唯一的element对象
getElementsByTag(String tagName):根据标签名称获取元素对象集合
getElementsByAttribute(String key):根据属性名称获取元素对象集合
getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
3)Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
4)Element:元素对象
1. 获取子元素对象
getElementById(String id):根据id属性值获取唯一的element对象
getElementsByTag(String tagName):根据标签名称获取元素对象集合
getElementsByAttribute(String key):根据属性名称获取元素对象集合
getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
2. 获取属性值
String attr(String key):根据属性名称获取属性值
3. 获取文本内容
String text():获取文本内容
String html():获取标签体的所有内容(包括字标签的字符串内容)
5)Node:节点对象是Document和Element的父类
5.快捷查询方式:
1. selector:选择器
使用的方法:Elements select(String cssQuery)
语法:参考Selector类中定义的语法
2. XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
使用Jsoup的Xpath需要额外导入jar包。
查询w3cshool参考手册,使用xpath的语法完成查询