一. HTML
1. 名词解释
HTML 是用来描述网页的一种语言。
- HTML 指的是超文本标记语言 (Hyper Text Markup Language),超文本是指用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。标记语言是指由标签构成的语言。标记语言不是编程语言。
- 标记语言是一套标记标签 (markup tag)
- HTML 使用标记标签来描述网页
HTML 标记标签 通常被称为 HTML 标签 (HTML tag)。
HTML 标签是由尖括号包围的关键词,比如 <html>
HTML 标签通常是成对出现的
标签对中的第一个标签是开始标签,第二个标签是结束标签
开始和结束标签也被称为开放标签 和 闭合标签
标签的相互关系分为两种:
嵌套关系
1
<head> <title> </title> </head>
并列关系
1
2<head></head>
<body></body>
HTML 文档 = 网页
- HTML 文档描述网页
- HTML 文档包含 HTML 标签 和 纯文本
- HTML 文档也被称为网页
Web 浏览器的作用是读取 HTML 文档,并以网页的形式显示出它们。浏览器不会显示 HTML 标签,而是使用标签来解释页面的内容,下面是一个简单的 HTML 文件
1 |
|
2. 常用标签
(1)换行
1 | <!-- |
(2)标题
1 | <!-- |
(3)段落
1 | <!-- |
(4)水平线
1 | <!-- |
(5)文本格式化
在网页中,有时需要为文字设置粗体、斜体或下划线效果,这时就需要用到HTML中的文本格式化标签,使文字以特殊的方式显示。
| 标签 | 描述 | 标签 | 描述 |
|---|---|---|---|
<b> |
粗体 | <sub> |
下标 |
<i> |
斜体 | <sup> |
上标 |
<strong> |
粗体 | <ins>/<u> |
下划线 |
<em> |
斜体 | <del> |
删除线 |
<small> |
小号字 | <big> |
大号字 |
(6)超链接
1 | <!-- |
外部链接(互联网上的 url 网址):
1
<a href="https://www.baidu.com">百度</a>
内部链接(内部之间的相互链接)
1
<a href="index.html">首页</a>
空链接
1
<a href="#">空链接</a>
下载链接(href中地址是一个文件或压缩包,点击会下载,图片点击后会在页面显示)
1
<a href="test.rar">点击下载</a>
网页元素链接(href中地址是文本、图像、音视频等)
1
<a href="https://www.baidu.com"><img src="test.png">点击图片去往百度</a>
锚点链接(点击链接后会快速定位到页面中某个位置)
- 第一步:在链接文本中的 href 属性值为”#名字”的形式,比如 <a href=”#info”> 个人信息 </a>
- 第二步:找到目标位置标签,添加一个id属性=刚才的名字,比如 <h3 id=”info”> 个人信息介绍 </h3>
1
2<a href="#info">个人信息</a>
<h3 id="info">个人信息介绍</h3>
(7)图像
1 | <!-- |
(8)列表
1 | <!-- |
(9)表格
1 | <!-- |
(10)表单
| 标签 | 描述 |
|---|---|
<form> |
供用户输入的表单 |
<input> |
输入域 |
<select> |
下拉选项列表 |
<option> |
下拉列表中的选项 |
<textarea> |
文本域(一个多行的输入控件) |
1 | <!-- |

(11)div span 标签
1 | <!-- |
(12)iframe 框架
| 属性 | 值 | 描述 |
|---|---|---|
| src | URL | 规定在 iframe 中显示的文档的 URL。 |
| name | frame_name | 规定 iframe 的名称。 |
| height | pixels/% | 规定 iframe 的高度。 |
| width | pixels/% | 定义 iframe 的宽度。 |
| align | left/right/top/middle/bottom | 不赞成使用。请使用样式代替。规定如何根据周围的元素来对齐此框架。 |
| frameborder | 10 | 规定是否显示框架周围的边框。不赞成使用,请使用 CSS 属性 border代替。 |
| longdesc | URL | 规定一个页面,该页面包含了有关 iframe 的较长描述。 |
| marginheight | pixels | 定义 iframe 的顶部和底部的边距。 |
| marginwidth | pixels | 定义 iframe 的左侧和右侧的边距。 |
| sandbox | “”allow-formsallow-same-originallow-scriptsallow-top-navigation | 启用一系列对 |
| scrolling | yes/no/auto | 规定是否在 iframe 中显示滚动条。 |
| seamless | seamless | 规定 |
| srcdoc | HTML_code | 规定在 |
1 | <!-- |
3. HTML5常用新增标签
新特性一般都存在兼容性问题,基本是IE9+以上版本的浏览器才支持,如果不考虑兼容性问题,才可以大量使用这些新特性。
(1)语义化标签
<header> :头部标签
<nav> :导航标签
<article> :内容标签
<section> :定义文档某个区域
<aside>:侧边栏标签
<footer> :尾部标签
(2)视频
使用 video 标签可以很方便的在页面中嵌入视频,而不再去使用 flash 和其他浏览器插件。
当前 video 元素仅支持三种视频格式:MP4、WebM、Ogg(尽量使用 MP4 格式,其他两个格式在某些浏览器中不兼容)
1 | <video src="文件地址"></video> |
| 属性 | 值 | 描述 |
|---|---|---|
| src | url | 要播放的视频的 URL。 |
| autoplay | autoplay | 如果出现该属性,则视频在就绪后马上播放【谷歌浏览器需要添加muted来解决自动播放问题(静音播放)】。 |
| controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
| height | pixels | 设置视频播放器的高度。 |
| width | pixels | 设置视频播放器的宽度。 |
| loop | loop | 如果出现该属性,则当媒介文件完成播放后再次开始播放。 |
| muted | muted | 规定视频的音频输出应该被静音。 |
| poster | URL | 规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。 |
| preload | preload | 如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。 |
(3)音频
当前 audio 元素仅支持三种音频格式:MP3、Wav、Ogg(尽量使用MP3格式,其他两个格式在某些浏览器中不兼容)
1 | <audio src="文件地址"></audio> |
| 属性 | 值 | 描述 |
|---|---|---|
| autoplay | autoplay | 如果出现该属性,则音频在就绪后马上播放【谷歌浏览器不能自动播放问题,使用muted不能解决此问题,以后使用JS解决 】。 |
| controls | controls | 如果出现该属性,则向用户显示控件,比如播放按钮。 |
| loop | loop | 如果出现该属性,则每当音频结束时重新开始播放。 |
| muted | muted | 规定视频输出应该被静音。 |
| preload | preload | 如果出现该属性,则音频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。 |
| src | url | 要播放的音频的 URL。 |
(4)新增 input 类型
| 属性值 | 描述 |
|---|---|
| type=”email” | 限制用户输入必须为Email类型 |
| type=”url” | 限制用户输入必须为URL类型 |
| type=”date” | 限制用户输入必须为日期类型 |
| type=”time” | 限制用户输入必须为时间类型 |
| type=”month” | 限制用户输入必须为月类型 |
| type=”week” | 限制用户输入必须为周类型 |
| type=”number” | 限制用户输入必须为数字类型 |
| type=”tel” | 手机号码 |
| type=”search” | 搜索框 |
| type=”color” | 生成一个颜色选择表单 |
注意:必须添加form表单域,当点击提交按钮时,就可以验证表单。
(5)新增表单属性
二. CSS
1. 名词解释
CSS 是用于设置网页的样式及布局的一种 样式表 语言
- CSS 指层叠样式表 (Cascading Style Sheets)
- 样式定义如何显示 HTML 元素
- 样式通常存储在样式表 中
- 把样式添加到 HTML 中,是为了解决内容与表现分离的问题
- 外部样式表通常存储在 CSS 文件 中
- 多个样式定义可层叠为一个,即多个样式可以作用在同一个html的元素上,同时生效。
好处:
- 功能更为强大
- 将内容展示和样式控制分离
- 降低耦合度。解耦,使得让分工协作更容易
- 提高开发效率,多个样式可以应用一个内容,多个内容也可以应用一个样式。
2. CSS 样式规则
CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明:
选择器 {
属性名1:属性值1;
属性名2:属性值2;
…
}
- 选择器:用于指定CSS样式作用的HTML对象,花括号内是对该对象设置的具体样式。
- 声明:一个单独的规则,用来指定添加样式元素的属性,属性和属性值以“键值对”的形式出现,之间用英文“:”连接。多个“键值对”之间用英文“;”进行区分。
- 属性:对指定的对象设置的样式属性,例如字体大小、文本颜色等。
- 属性的值:对某个属性赋予特定的值,比如颜色设为红色。
3. HTML 引入 CSS 样式表
(1)方式一:内联样式表
1 | <!-- |
(2)方式二:内部样式表
1 | <!-- |
(3)方式三:外部样式表
1 | <!-- |
| 优点 | 缺点 | 使用情况 | 控制范围 | |
|---|---|---|---|---|
| 内联样式表 | 书写简单 | 当标签和样式较多时,代码量庞大。 | 较少 | 控制一个标签(小) |
| 内部样式表 | 部分实现结构与样式相分离 | 不能在多个页面中复用 css 代码。 | 较多 | 控制一个页面(中) |
| 外部样式表 | 完全实现结构与样式相分离 | 需要引入 | 最多 | 控制整个站点(大) |
4. 元素显示模式
HTML 元素一般分为块元素和行内元素两种类型
(1)块元素
常见的块元素
特点:
- 比较霸道,自己独占一行
- 高度、宽度、外边距以及内边距都可以控制
- 宽度默认是容器(父级宽度)的100%
- 是一个容器及盒子,里面可以放行内或者块级元素
注意:文字类的元素内不能使用块级元素,比如
,
–
(2)行内元素
常见的行内元素有 ,有的地方也将行内元素称为内联元素。
特点:
- 相邻行内元素在一行上,一行可以显示多个
- 宽、高直接设置是无效的
- 默认宽度就是它本身内容的宽度
- 行内元素只能容纳文本或其它行内元素
注意:链接里面不能再放链接。特殊情况链接里面可以放块级元素,但是给转换一下块级模式最安全
(3)行内块元素
在行内元素中有几个特殊的标签,
,它们同时具有块元素和行内元素的特点。有些资料称它们为行内块元素。 特点
- 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)
- 默认宽度是它本身内容的宽度(行内元素特定)
- 高度、行高、外边距以及内边距都可以控制(块级元素特点)
(4)元素显示模式转换
一个模式的元素需要另外一种模式的特点
转换为块级元素
display:block转换为行内元素
display:inline转换为行内块元素
display:inline-block5. 属性
CSS属性书写顺序:
(1)文本
font-size:字体大小,一般使用像素px为单位(谷歌浏览器默认的文字大小为16px)
font-family:字体类型。常用的字体有宋体、微软雅黑(Microsoft YaHei)等,尽量使用系统默认字体,保证在任何用户的浏览器中都能正确显示。
font-weight:字体粗细(normal/bold/bolder/lighter/100/200/…/900),normal相当于400,bold相当于700
text-align:对齐方式(left(默认),right,center)
text-decoration : 文本修饰(none(默认) || underline(下划线) || blink(闪烁) || overline(上划线) || line-through(删除线)),此属性可用于去掉超链接中的下划线。
text-indent:用来指定文本的首行缩进,常用于段落的首行缩进,比如text-indent: 10px;可以使用单位em,表示一个字的距离,text-index: 2em;
line-height:行高,用于设置行间距,就是行与行之间的距离,即字符的垂直间距,一般称为行高。一般使用像素px为单位。
text-shadow:文字阴影(CSS3新加),语法:text-shadow: h-shadow v-shadow blur color;
![]()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<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.0">
<title>文本属性</title>
<style>
#div01 {
font-size: 100px;
}
#div02 {
font-family: "楷体";
}
#div03 {
font-weight: 700;
}
#div04 {
text-align: center;
}
#div05 {
text-decoration: underline;
}
/* 取消a连接的下划线和颜色 */
a {
text-decoration: none;
color: green;
}
</style>
</head>
<body>
<div id="div01">设置文字大小</div>
<div id="div02">设置文字类型</div>
<div id="div03">设置文字粗细</div>
<div id="div04">设置文字对齐方式</div>
<div id="div05">设置文字装饰(比如下划线)</div>
<a href="#">取消a连接下划线和颜色</a>
</body>
</html>(2)边框
- border:设置边框,复合属性【下面三个属性复合而成,简便写法】
- border-width:边框的宽度
- border-color:边框颜色
- border-style:边框类型
- none:没有边框即忽略所有边框的宽度(默认值)
- solid:边框为单实线(最为常用的)
- dashed:边框为虚线
- dotted:边框为点线
- double:边框为双实线
- border-radius: length:圆角边框(CSS3新加)
1
2
3
4
5
6
7
8 <!--边框的简写(一条红色的、宽度为1px的实线框)-->
border-width:1px;
border-color:red;
border-style:solid;
<!--等价于-->
border:1px red solid;
<!--表格的细线边框:以前学过的html表格边框很粗,这里只需要CSS一句话就可以美观起来。 table{ border-collapse:collapse; } collapse 单词是合并的意思,表示相邻的边框会合并到一起。-->注意:也可以单独修改边框某一特定边的属性,只需要将border改写border-top | border-bottom | border-left | border-right即可。
(3)背景
- background-image :背景图片( none | url (url))给某元素设置背景图像时,元素要有一定的宽度和高度,图片才会显示出来。举例
background-image: url(images/text.png),若背景图片小于所设置的高度和宽度,默认 会进行背景平铺,如果想要修改背景平铺,可以使用background-repeat属性(repeat | no-repeat | repeat-x | repeat-y)- background-color :背景颜色(默认为transparent透明)
- background-position:背景位置属性用于设置背景图像的位置,这个属性只能应用于块级元素和替换元素。其中替换元素包括
img、input、textarea、select和object。position 后面是x坐标和y坐标。可以使用方位名词(top|center|bottom|left|right)或者精确单位(百分比(比如5%) | 数字+单位(比如20px))。最常用的为background-position:center center;- background-attachment:背景固定(附着),默认是scroll,背景图片随对象内容滚动,另外一个取值是fixed,表示背景图像固定。
- 背景色透明:background: rgba(0,0,0,0.3),前三个是RGB值,最后一个是不透明度。
(4)盒子模型:控制布局
所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都由元素的内容(content)、边框(border)、内边距(padding)、和外边距(margin)组成。
![]()
content:内容,盒子的内容,显示文本和图像。使用宽度属性width和高度属性height可以对盒子的大小进行控制。
- width:宽度
- height:高度
- 注意:当您指定一个 CSS 元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道完整大小的元素,你还必须添加内边距,边框和边距。
border:边框,围绕在内边距和内容外的边框。
padding:内边距 , 是指边框与内容之间的距离。四个边距也可以单独设置,padding-top | padding-bottom | padding-left | padding-right。如果盒子设置了width和height,使用padding会时盒子变大,但如果未指定width/height,盒子便不会撑大。
- 使用padding: 5px, 表示所有边距都为5px
- 使用padding: 2px 4px,表示上下边距2px,左右边距4px
- 使用padding: 1px 2px 3px 4px,表示上边距1px,右边距2px,下边距3px,左边距4px(顺时针)
margin:外边距, 设置外边距会在元素之间创建“空白”, 这段空白通常不能放置其他内容。盒子与盒子之间距离通常用这个设置。外边距设置块级盒子水平居中,需要以下两步:
- 盒子必须指定宽度(width)
- 盒子左右外边距设置为auto,以下三种方式均可以:
- margin-left: auto; margin-right: auto;
- margin: auto;
- margin: 0 auto; / margin: 0px auto;
以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加text-align: center即可。
使用margin定义块元素的垂直外边距时,可能会出现外边距的合并,主要有两种情况:
相邻块元素垂直外边距的合并
当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和。而是取两个值中的较大者,这种现象被称为相邻块元素垂直外边距的合并。
![]()
嵌套块元素垂直外边距的塌陷
对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。
![]()
解决方案:
- 可以为父元素定义上边框
- 可以为父元素定义上内边距
- 可以为父元素添加overflow: hidden
网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距。
1
2
3
4 * {
padding: 0; /* 清除内边距 */
margin: 0; /* 清除外边距 */
}box-shadow:盒子阴影(CSS3新加)
1 box-shadow: h-shadow v-shadow blur spread color inset
值 描述 h-shadow 必需。水平阴影的位置。允许负值。 v-shadow 必需。垂直阴影的位置。允许负值。 blur 可选。模糊距离。 spread 可选。阴影的尺寸。 color 可选。阴影的颜色。 inset 可选。可将外部阴影(ourset)改为内部阴影。 注意:
- 默认的是外阴影(outset),但是不可以写这个单词,否则导致阴影无效。
- 盒子阴影不占用空间,不会影响其他盒子排列。
(5)浮动
网页布局的本质——用CSS来摆放盒子。把盒子摆放到相应位置;CSS提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序)∶
- 普通流(标准流)
- 浮动
- 定位
有很多的布局效果,标准流(标签按照默认方式排列)没有办法完成,此时就可以利用浮动完成布局。因为浮动可以改变元素标签默认的排列方式。
浮动最典型的应用:可以让多个块级元素一行内排列显示。
网页布局第一准则︰多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。
网页布局第二准则:先设置盒子大小,之后设置盒子的位置.
语法:float : none | left | right
- none : 默认值。元素不浮动
- left :元素向左浮动。
- right :元素向右浮动。
浮动特性:
浮动元素会脱离标准流(脱标)
- 脱离标准普通流的控制(浮)移动到指定位置(动),(俗称脱标)
- 浮动的盒子不再保留原先的位置
- 貌似似乎好像是置于顶层,加了个图层的感觉…
![]()
浮动的元素会一行内显示并且元素顶部对齐
- 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且页端对齐排列。
浮动的元素会具有行内块元素的特性
- 任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后具有行内块元素相似的特性。
注意:为了约束浮动元素位置,我们网页布局一般采取的策略是:先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置.符合网页布局第一准侧.
清除浮动:
清除浮动原因:由于父级盒子很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为0时,就会影响下面的标准流盒子(由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响)。
![]()
清除浮动本质:清除浮动元素脱离标准流造成的影响。如果父盒子本身有高度,则不需要清除浮动。清除浮动之后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了。
语法:
1
2
3
4
5 选择器{clear: 属性值;}
属性值可取为:
left,即不允许左侧有浮动元素(清除左侧浮动的影响)
right,即不允许右侧有浮动元素(清除右侧浮动的影响)
both,即不允许左右两侧有浮动元素(同时清除左右两侧浮动的影响)清除浮动的方法:
![]()
额外标签法(隔墙法)
- 额外标签法会在最后一个浮动元素末尾添加一个空的标签。例如
<div style="clear:both”></div>,或者其他标签(如<br/>等),不过要求空标签必须是块级元素。父级添加overflow
- 可以给父级添加overflow属性,将其属性值设置为hidden、auto或scroll 。
:after 伪元素法
- :after方式是额外标签法的升级版。也是给父元素添加
1
2
3
4
5
6
7
8
9
10
11
12 .clearfix:after {
content : "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix { /*IE6、7专有*/
*zoom: 1;
}
/*父元素的类名为.clearfix */双伪元素清除浮动,也是给父元素添加
1
2
3
4
5
6
7
8
9
10
11
12 .clearfix:before,.clearfix: after {
content : "";
display:table;
}
.clearfix:after {
clear:both;
}
.clearfix {
*zoom: 1;
}
/*父元素的类名为.clearfix */(6)定位
1.标准流通常用于竖列摆放盒子。
2.浮动可以让多个块级盒子一行没有缝隙排列显示,经常用于横向排列盒子。
3.定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子。
定位 = 定位模式 + 边偏移,定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。
定位模式:
定位模式决定元素的定位方式,它通过 CSS 的 position 属性来设置,其值可以分为以下几个:
![]()
static:静态定位 (了解),静态定位是元素的默认定位方式,无定位的意思。
1 选择器{ position: static; }
relative:相对定位(重要),相对定位是元素在移动位置的时候,是相对于它原来的位置来说的。
1 选择器{ position: relative; }特点:
- 它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)。
- 原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它。(不脱标,继续保留原来位置)
absolute:绝对定位(重要),绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的。
1 选择器{ position: absolute; }特点:
- 如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位(Document文档)。
- 如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置。
- 绝对定位不再占有原先的位置。(脱标)
fixed:固定定位(重要),固定定位是元素固定于浏览器可视区的位置。主要使用场景∶可以在浏览器页面滚动时元素的位置不会改变。
1 选择器{ position: fixed; }特点:
- 以浏览器的可视窗口为参照点移动元素。和父元素无关,不会随着滚动条滚动。
- 固定定位不在占有原先的位置。即固定定位也是脱标的,其实固定定位也可以看做是一种特殊的绝对定位。
小技巧:使用固定定位,将盒子固定在版心右侧位置。
- 让固定定位的盒子left: 50%.走到浏览器可视区(也可以看做版心)的一半位置。
- 让固定定位的盒子margin-left:版心宽度的一半距离。多走版心宽度的一半位置
sticky:粘性定位(了解) ,粘性定位可以被认为是相对定位和固定定位的混合。
1 选择器{ position : sticky; top: 10px; }特点:
- 以浏览器的可视窗口为参照点移动元素(固定定位特点)
- 粘性定位占有原先的位置(相对定位特点)
- 必须添加top . left、right、bottom其中一个才有效
边偏移:
边偏移就是定位的盒子移动到最终位置。一共有4个属性。
top:顶端偏移量,定义元素相对于其父元素上边线的距离。比如top: 80pxbottom:底部偏移量,定义元素相对于其父元素下边线的距离。比如bottom: 80pxleft:左侧偏移量,定义元素相对于其父元素左边线的距离。比如left: 80pxright:右侧偏移量,定义元素相对于其父元素右边线的距离。比如left: 80px定位叠放次序:z-index
在使用定位布局时,可能会出现盒子重叠的情况。此时,可以使用z-index来控制盒子的前后次序(z轴)。
1 选择器{ z-index: 1; }
- 数值可以是正整数、负整数或0,默认是auto,数值越大,盒子越靠上。
- 如果属性值相同,则按照书写顺序,后来居上。
- 数字后面不能加单位。
- 只有定位的盒子才有z-index属性。
小技巧:子绝父相:子级使用绝对定位,父级则需要相对定位
- 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。
- 父盒子需要加定位限制子盒子在父盒子内显示。
- 父盒子布局时,需要占有位置,因此父亲只能是相对定位。
小技巧:绝对定位的盒子水平居中(垂直居中类似),相对定位可以直接用(margin: 0 auto;),因为其不脱标。
- 先设置 left: 50%
- 再设置 margin-left: -盒子宽度的一半
定位特殊特性
绝对定位和固定定位也和浮动类似。
- 行内元素添加绝对或者固定定位后,可以直接设置高度和宽度。不需要再转换元素显示模式。
- 块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
脱标的盒子不会触发外边距塌陷。浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。
绝对定位(固定定位)会完全压住盒子。
- 浮动元素,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)
- 但是绝对定位(固定定位)会压住下面标准流所有的内容。
(7)元素显示与隐藏
display属性
- display: none; 隐藏对象,而且原来位置不再保留。
- display : block; 除了转换为块级元素之外,同时还有显示元素的意思
visibility属性
- visibility : visible; 元素可视
- visibility : hidden; 元素隐藏,但原来位置会保留。
overflow溢出overflow属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度)时,会发生什么。
- overflow: visible; 默认,溢出的内容默认会显示。
- overflow: hidden; 溢出的内容会隐藏,未溢出的内容照常显示。
- overflow: scroll; 溢出的部分显示滚动条(无论溢不溢出,都会有一个滚动条)。
- overflow: auto; 只有在有溢出时,才会显示滚动条,不溢出就不会显示滚动条 。
一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局。但是如果有定位的盒子,请慎用 overflow:hidden,因为它会隐藏多余的部分。
6. 选择器
选择器:筛选具有相似特征的元素。如果多个选择器作用于同一标签,优先级别为:id选择器 > 类选择器 > 标签选择器(范围越小,优先级越高)
(1)标签选择器
标签选择器是指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的 CSS 样式。其基本语法格式如下:
1
2
3
4
5 标签名 {
属性1: 属性值1;
属性2: 属性值2;
属性3: 属性值3;
}标签选择器最大的优点是能快速为页面中同类型的标签统一样式,同时这也是他的缺点,不能设计差异化样式。
标签选择器可以把某一类标签全部选择出来比如,div span
1
2
3
4
5
6
7
8 <!--设置所有div标签边框为红色、实线、宽1px,字体颜色为蓝色,字体大小为30px-->
<style type="text/css">
div{
border: 1px solid red;
color: blue;
font-size: 30px;
}
</style>(2)id 选择器【重要】
id 选择器使用『#』进行标识,后面紧跟id名,其基本语法格式如下:
1
2
3
4
5 #id名 {
属性1: 属性值1;
属性2: 属性值2;
属性3: 属性值3;
}该语法中,id 名即为 HTML 元素的 id 属性值,大多数 HTML 元素都可以定义 id 属性,元素的 id 值是唯一的,只能对应于文档中某一个具体的元素。
1
2
3
4
5
6
7
8 <!--修改id属性值为id01的div标签:红色、实线、宽1px,字体颜色为蓝色,字体大小为30px-->
<style type="text/css">
#id01{
border: 1px solid red;
color: blue;
font-size: 30px;
}
</style>(3)类选择器【重要】
类选择器使用『.』(英文点号)进行标识,后面紧跟类名,其基本语法格式如下:
1
2
3
4
5 .类名 {
属性1: 属性值1;
属性2: 属性值2;
属性3: 属性值3;
}标签调用的时候用 class=“类名” 即可。
类选择器最大的优势是可以为元素对象定义单独或相同的样式。 可以选择一个或者多个标签。
我们可以给标签指定多个类名,从而达到更多的选择目的。
- 样式显示效果跟HTML元素中的类名先后顺序没有关系,受CSS样式书写的上下顺序有关。
- 各个类名中间用空格隔开。
1
2
3
4
5
6
7
8 <!--修改class属性值为class01的div标签:红色、实线、宽1px,字体颜色为蓝色,字体大小为30px-->
<style type="text/css">
.class01{
border: 1px solid red;
color: blue;
font-size: 30px;
}
</style>id 选择器和类选择器区别
- W3C 标准规定,在同一个页面内,不允许有相同名字的id对象出现,但是允许相同名字的class。
- 类选择器(class) 好比人的名字, 是可以多次重复使用的, 比如 张伟 王伟 李伟 李娜
- id 选择器 好比人的身份证号码 ,全中国是唯一的, 不得重复。 只能使用一次。
- id 选择器和类选择器最大的不同在于使用次数上。
(4)组合选择器(并集选择器)【重要】
组合选择器的格式是:
1
2
3 选择器 1,选择器 2,选择器 n {
属性:值;
}组合选择器可以让多个选择器共用同一个 css 样式代码。
(5)通配符选择器
通配符选择器的格式是:
1
2
3 {
属性:值;
}通配符选择器表示选取页面中所有元素(标签)。
(6)子元素选择器【重要】
1
2
3 父元素>子元素 {
属性:值;
}子元素选择器是选择所有包含在父元素之中的子元素。比如选择所有被div标签包裹的span 标签。
(7)后代选择器(包含选择器)【重要】
1
2
3 祖先元素 子元素 {
属性:值;
}在给定的祖先元素下匹配所有后代元素。(不受层级限制),与子元素选择器的不同之处在于,后代选择器中,两个元素之间只要存在包含关系即可,不一定非要是父子关系(比如也可能跨两层,是爷孙关系)
(8)伪类选择器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<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.0">
<title>伪类选择器</title>
<style>
/* 链接伪类选择器 */
/* a:link是选择所有未被访问的链接 */
a:link {
color: gray;
text-decoration: none;
}
ho
/* a:hover是选择所有鼠标指针位于其上的链接 */
a:hover {
color: red;
}
/* a:active是选择所有活动链接(鼠标按下未弹起的链接) */
a:active {
color: green;
}
/* focus伪类选择器 */
/* input:focus是选取获得焦点的表单元素 */
input:focus {
background-color:green;
}
</style>
</head>
<body>
<a href="https://www.example1.com" target="_blank">学习使用伪类选择器-1</a> <br>
<a href="https://www.example2.com" target="_blank">学习使用伪类选择器-2</a> <br>
<a href="https://www.example.com" target="_blank">学习使用伪类选择器-3</a> <br>
<a href="https://www.example.com" target="_blank">学习使用伪类选择器-4</a>
<hr>
输入1:<input type="text"></input> <br>
输入2:<input type="text"></input> <br>
输入3:<input type="text"></input>
</body>
</html>![]()
7. CSS高级技巧
(1)精灵图
精灵图的出现是为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,其核心原理是将网页中的一些小背景图像整合到一张大图中,这样服务器只需要一次请求就可以了。
- 精灵技术主要针对于小背景图片使用。就是把多个小背景图片整合到一张大图片中,这个大图片也称为sprites精灵图或者雪碧图
- 移动背景图片位置,此时可以使用
background-position。移动的距离就是这个目标图片的x和y坐标。注意网页中的坐标有所不同。因为一般情况下都是往上往左移动,所以数值是负值。(大背景是有多个小背景组成的,我们实际需要的是小背景,那么也就是需要从大背景中找到小背景的位置,然后给相应盒子添加此背景,大背景肯定比盒子大,但实际上只显示小背景那一部分)- 使用精灵图的时候需要精确测量,每个小背景图片的大小和位置。
- 实际上就是多个小背景图片合成一张大背景图片,向后端请求时,只需要请求一次,得到大背景图片,所有需要小背景的地方都使用此大背景,但是通过background-position可以显示大背景图片中指定的区域。
(2)字体图标(iconfont)
字体图标使用场景∶主要用于显示网页中通用、常用、简单的一些小图标。字体图标可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体。
精灵图也可以显示小图标,但其缺点很明显。1.图片文件还是比较大的。2.图片本身放大和缩小会失真。3.一旦图片制作完毕想要更换非常复杂。4.只有固定的颜色。
字体图标的优点:
- 轻量级∶一个图标字体要比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来,减少了服务器请求
- 灵活性∶本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等
- 兼容性:几乎支持所有的浏览器,请放心使用
注意:字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。
总结:
- 如果遇到一些结构和样式比较简单的小图标,用字体图标。
- 如果遇到一些结构和样式复杂一点的小图片,用精灵图。
字体图标是一些网页常见的小图标,我们直接网上下载即可。使用步骤如下︰
字体图标的下载
- icomoon字库 http://icomoon.io
- 点击右上角IcoMoon App
- 选择自己想要的图标(如果不够,可以点击Add Icons From Library…寻找更多,还可以点击Import Icons将自己的svg图片生成为字体图标)
- 点击Generate Font生成图标
- 点击Download下载,得到zip文件,解压即可
- 阿里iconfont字库 https://www.iconfont.cn
- 选择自己想要的图标,将其添加到购物车
- 点击购物车,选择下载代码,得到zip文件,解压即可
字体图标的引入(引入到我们html页面中)
icomoon字库 http://icomoon.io
将下载包里面的fonts文件夹放入页面根目录下
在CSS样式中声明字体
1
2
3
4
5
6
7
8
9
10 @font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?7kkyc2');
src: url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?7kkyc2') format('truetype'),
url('fonts/icomoon.woff?7kkyc2') format('woff'),
url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}打开下载包中的demo.html,复制所需图标下面的
在页面中使用span标签(或者其他标签),内容为刚才复制的,然后将其样式中添加
font-family: 'icomoon'就会出现图标了,可以使用font-size设置图标大小,color设置图标颜色。
1 <span></span>字体图标的追加
如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。
点击Import Icons,把压缩包里面的selection.json 重新上传,然后选中自己想要新的图标,重新download 下载压缩包,并替换原来的文件即可。
(3)CSS三角形
网页中常见一些三角形,使用CSS直接画出来就可以,不必做成图片或者字体图标。
等腰直角三角形
![]()
比如制作上述三角形,只需要准备一个div盒子,然后将div的样式设置为如下内容即可,其中边框的像素越大,三角形就越大 :
1
2
3
4
5
6 width: 0;
height: 0;
border-top: 10px solid black;
border-bottom: 10px solid transparent;
border-left: 10px solid transparent;
border-right: 10px solid transparent;下面是上面代码的简化版:
1
2
3
4
5 width: 0;
height: 0;
border: 10px solid transparent;
/* border-top: 10px solid black; */
border-top-color: blue;非等腰直角三角形【进一步就可以做梯形】
![]()
1
2
3
4
5
6
7 width: 0;
height: 0;
/* 两个边框为0,两个不为0,且不一样大 */
border-top: 20px solid black;
border-bottom: 0px solid transparent;
border-left: 0px solid transparent;
border-right: 10px solid transparent;(4)CSS用户界面样式(鼠标样式等)
更改用户鼠标样式
cursor
1 cursor: 属性值;设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。
可选属性值:
- default:默认,箭头
- pointer:小手
- move:移动,十字箭头
- text:文本
- not-allowed:禁止
表单轮廓线
outline当鼠标点击边框后,会默认出现蓝色边框,如果想要去掉此蓝色边框,只需要给表单添加以下样式即可。
1
2
3
4 /* 方式1 */
outline:0;
/* 方式2 */
outline: none;防止拖拽文本域
resize真正开发中,不能允许用户拖拽文本域,否则会影响页面布局。防止拖拽的方法是给文本域加入以下样式。
1
2 resize: none; /* 防止拖拽 */
outline:0; /* 去除表单轮廓线 */(5)vertical-aline 元素对齐
CSS的vertical-align属性使用场景∶经常用于设置图片或者表单(行内块元素)和文字垂直对齐。
用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。
1 vertical-align: baseline | top | middle | bottom
baseline默认。元素放置在父元素的基线上。top把元素的顶端与行中最高元素的顶端对齐。middle把此元素放置在父元素的中部。bottom把元素的顶端与行中最低的元素的顶端对齐。解决图片底部默认空白缝隙问题
bug:图片底侧会有一个空白,原因是行内块元素会和文字的基线对齐。主要解决方法有两种
- 给图片添加vertical-align:middle | top| bottom等。(提倡使用的)
- 把图片转换为块级元素display: block;
(6)溢出文字省略号显示
单行文字溢出省略号显示
1
2
3
4
5
6 /*1.强制一行内显示文本*/
white-space: nowrap;(默认normal自动换行)
/*2.超出的部分隐藏*/
overflow: hidden;
/*3.文字用省略号替代超出的部分 ellipsis就是省略号的意思*/
text-overflow: ellipsis;多行文字溢出省略号显示
多行文本溢出显示省略号,有较大兼容性问题,适合于webKit浏览器或移动端(移动端大部分是webkit内核)
1
2
3
4
5
6
7
8 overflow : hidden;
text-derflow: ellipsis;
/*弹性伸缩盒子模型显示*/
display: -webkit-box ;
/*限制在一个块元素显示的文本的行数*/
-webkit-line-clamp: 2;
/* 设置或检索伸缩盒对象的子元素的排列方式*/
-webkit-box-orient: vertical;(7)两个浮动元素重叠边框如何变细
使用margin-left:-边框值,可以使得两个重叠的边框不重叠,变细。
8. CSS3 新特性
(1)新增属性选择器
属性选择器可以根据元素特定属性的来选择元素。这样就可以不用借助于类或者id选择器。
![]()
(2)新增结构伪类选择器
结构伪类选择器主要根据文档结构来选择器元 素,常用于根据父级选择器里面的子元素。
nth-child(n)选择某个父元素的一个或多个特定的子元素
- n可以是数字,关键字和公式
- n如果是数字,就是选择第n个子元素,里面数字从1开始,比如选择第3个元素:E:nth-child(3)
- n可以是关键字:even偶数,odd奇数
- n可以是公式:常见的公式如下(如果n是公式,则从0开始计算,第0个元素或者超出了元素的个数会被忽略)
- E:nth-child(n) 选择所有子元素
- E:nth-child(2n) 选择所有偶数子元素
- E:nth-child(2n+1) 选择所有奇数子元素
nth-of-type(n)选择某个父元素的一个或多个指定的子元素,用法和nth-child(n)基本一样。只不过nth-of-type(n)只把指定的子元素进行排序,而net-child(n)会把所有子元素进行排序。
- nth-child对父元素里面所有孩子排序选择(序号是固定的)先找到第n个孩子,然后看看是否和E匹配
- nth-of-type对父元素里面指定子元素进行排序选择。先去匹配E,然后再根据E找第n个孩子
(3)伪元素选择器(重点)
伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签,从而简化HTM结构。
::before:在元素内部的前面插入内容:after:在元素内部的后面插入内容- 注意:
- before和after创建一个元素,但是属于行内元素
- 新创建的这个元素在文档树中是找不到的,所以我们称为伪元素
- 语法: element::before {}
- before和after必须有content属性
- before在父元素内容的前面创建元素,after在父元素内容的后面插入元素
- 伪元素选择器和标签选择器一样,权重为1
(4)CSS3 盒子模型
CSS3中可以通过box-sizing来指定盒模型,有2个值∶即可指定为content-box、border-box,这样我们计算盒子大小的方式就发生了改变。可以分成两种情况∶
- box-sizing:content-box盒子大小为width + padding + border(以前默认的)
- box-sizing: border-box盒子大小为width
如果盒子模型我们改为了box-sizing: border-box,那padding和border就不会撑大盒子了(前提padding和border不会超过width宽度)
(5)CSS3 过渡
过渡动画:是从一个状态渐渐的过渡到另外—个状态。可以让我们页面更好看,更动感十足,虽然低版本浏览器不支持( ie9 以下版本)但是不会影响页面布局。
我们现在经常和:hover 一起搭配使用。
1 transition:要过渡的属性 花费时间 运动曲线 何时开始;
属性︰想要变化的css属性,宽度高度背景颜色内外边距都可以。如果想要所有的属性都变化过渡,写一个 all就可以。
花费时间 : 单位是秒(必须写单位)比如 0.5s
运动曲线︰默认是 ease (可以省略)
何时开始︰单位是秒(必须写单位)可以设置延迟触发时间默认是0s(可以省略)
注意:
谁做过渡 给谁加 transition
如果想要多个属性过渡,可以在之间用逗号隔开,所有属性都过渡,用all
1 transition:要过渡的属性1 花费时间1 运动曲线1 何时开始1, 要过渡的属性2 花费时间2 运动曲线2 何时开始2;三. JavaScript
1. 名词解释
JavaScript 是一门客户端脚本语言。
- 运行在客户端浏览器中,每一个浏览器都有 JavaScript 的解析引擎
- 脚本语言:不需要编译,直接就可以被浏览器解析执行
JavaScript 是一种专门为网页交互而设计的脚本语言,可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。由下列三个不同的部分组成:
1、ECMAScript:由 ECMA-262 定义,提供核心语言功能(语法、类型、语句、关键字、保留字、操作符、对象)
2、DOM:文档对象模型,提供访问和操作网页内容的方法和接口
3、BOM:浏览器对象模型,提供与与浏览器交互的方法和接口**2. 基本语法
(1)与 HTML 结合
向 HTML 页面中插入 JavaScript 的主要方法就是使用 <script> 元素。
方式一:定义<script>,标签体内容就是 JavaScript 代码。
方式二:定义<script>,通过 src 属性引入外部的js文件,可以是相对路径,也可以是绝对路径
注意:
① <script> 可以定义在 html 页面的任何地方。但是定义的位置会影响执行顺序。内部的 JavaScript 代码从上到下依次被解释,也就是后面的代码会覆盖掉前面重复的代码。也是因为这个原因,为了避免浏览器显示页面出现明显的延迟,一般把全部的 JavaScript 引用放在 body 元素中页面内容的最后面。
② <script> 可以定义多个。
1
2
3
4
5
6
7
8
9
10 <!--方式一-->
<script type="text/javascript">
alert("方式一代码");
</script>
<!--方式二-->
<script type="text/javascript" src="test.js">
</script>
test.js文件内容为:
alert("方式二代码");(2)注释
1
2 //单行注释
/*多行注释*/(3)数据类型
原始数据类型(基本数据类型):
number:数字。 整数/小数/NaN(not a number 一个不是数字的数字类型)】string:字符串。 字符串 “abc” “a” ‘abc’(string是小写的,其包装类为String,JavaScript单引号和双引号没有区别)boolean: true和falsenull:一个对象为空的占位符、undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined引用数据类型:
Object 类型
(4)变量
变量:一小块存储数据的内存空间,变量可以用来保存任何类型的数据,定义变量的时候要使用var操作符,后面跟变量名(标识符)。
Java 语言是强类型语言,而 JavaScript 是弱类型语言。
强类型:在开辟变量存储空间时,定义了空间将来存储的数据的数据类型。只能存储固定类型的数据弱类型:在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据。语法:
var 变量名 = 初始化值;
typeof(变量名):获取变量的类型。(注意这里有一个bug,就是null返回的类型是object(原始类型中没这个)而不是null)
注意:
ECMAScript 中的一切(变量,函数名,操作符)都严格区分大小写
(5)运算符
特殊:
等于和全等于
- 等于: == 等于是简单的做字面值的比较 12=”12”会判断为true
- 全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型
由于javascript只有number类型,不区分整数和浮点数,所以 整数/整数 如果除不尽,则结果为小数。(2 / 5 = 0.4)
在JS中,如果运算数不是运算符所要求的类型,那么js引擎会自动的将运算数进行类型转换
- string转number:按照字面值转换。如果字面值不是数字,则转为NaN(不是数字的数字)(+”123” 、+”abc”)
- boolean转number:true转为1,false转为0
在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。0 、NAN、null、 undefined、””(空串) 都认为是 false,其他都认为是true。
(6)对象
Function:函数(方法)对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <!--
1.创建:
方式一:
function 方法名称(形式参数列表){
方法体;
}
方式二:
var 方法名 = function(形式参数列表){
方法体;
}
2.属性
length:形参个数:fun.length//这个是属性而不是成员方法,不需要()
3.特点:
①. 方法定义中形参的类型不用写,返回值类型也不写(弱类型)。
②. 方法是一个对象,如果定义名称相同的方法,会覆盖(没有重载)
③. 在JS中,方法的调用只与方法的名称有关,和参数列表无关(调用方法时的实参个数可以与形参个数不一致)
④. 在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数。隐形参数特别像 java 基础的可变长参数一 样,可以通过arguments[i]获取第i个参数值。
4.调用:
方法名称(实际参数列表);
-->
编写一个函数。用于计算所有参数相加的和并返回
<script>
function sum(num1,num2) {
var result = 0;
for (var i = 0; i < arguments.length; i++) {
if (typeof(arguments[i]) == "number") {
result += arguments[i];
}
}
return result;
}
</script>Array:数组对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <!--
1. 创建:
①. var arr = new Array(元素列表);
②. var arr = new Array(默认长度);
③. var arr = [元素列表];
2. 方法
join(参数):将数组中的元素按照指定的分隔符拼接为字符串。
push(): 向数组的末尾添加一个或更多元素,并返回新的长度。
pop(): 从数组中删除最后一个元素。
3. 属性
length:数组的长度
4. 特点:
①. 数组元素的类型可变。
②. 数组长度可变。
-->
数组的遍历
<script>
var array = ["a","b","c","d","e"];
for(var i=0;i<array.length;i++){
console.log(array[i]);
}
</script>Date:日期对象
1
2
3
4
5
6
7 <!--
1. 创建:
var date = new Date();
2. 方法:
toLocaleString():返回当前date对象对应的时间本地字符串格式
getTime():获取毫秒值。返回当前如期对象描述的时间到1970年1月1日零点的毫秒值差
-->Math:数学对象
1
2
3
4
5
6
7
8
9
10
11 <!--
1. 创建:
特点:Math对象不用创建,直接使用Math.方法名();
2. 方法:
random():返回 0 ~ 1 之间的随机数。 含0不含1
ceil(x):对数进行上舍入。
floor(x):对数进行下舍入。
round(x):把数四舍五入为最接近的整数。
3. 属性:
PI
-->Boolean、Number、String(原始数据类型的包装类)
RegExp:正则表达式对象
字符 含义 [xyz] 一个字符集合。匹配方括号中的任意字符,包括转义序列。也可以使用破折号(-)来指定一个字符范围。[abcd] 和[a-d]是一样的。 [^xyz] 一个反向字符集。也就是说, 它匹配任何没有包含在方括号中的字符。也可以使用破折号(-)来指定一个字符范围。任何普通字符在这里都是起作用的。 \d 匹配一个数字。等价于[0-9]。 \D 匹配一个非数字字符。 \w 匹配一个单字字符(字母、数字或者下划线)。等价于[A-Za-z0-9_]。 \W 匹配一个非单字字符。 {n,m} n 和 m 都是整数。匹配前面的字符至少n次,最多m次。如果 n 或者 m 的值是0, 这个值被忽略。 {n} n是一个正整数,匹配了前面一个字符刚好发生了n次。 ? 匹配前面一个表达式0次或者1次。等价于 {0,1}。 * 匹配前一个表达式0次或多次(任意)。等价于 {0,}。例如,/bo*/会匹配 “A ghost boooooed” 中的 ‘booooo’ + 匹配前面一个表达式1次或者多次(至少一次)。等价于 {1,}。例如,/a+/匹配了在 “candy” 中的 ‘a’,和在 “caaaaaaandy” 中所有的 ‘a’。 * 匹配将依照下列规则: 在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释。例如,前面没有’’的’d’通常匹配小写’d’。如果加了’’,这个字符变成了一个特殊意义的字符,意思是匹配一个数字。 反斜杠也可以将其后的特殊字符,转义为字面量。例如,模式 /a*/ 代表会匹配 0 个或者多个 a。相反,模式 /a*/ 将 ‘‘ 的特殊性移除,从而可以匹配像 “a“ 这样的字符串。 使用 new RegExp(“pattern”) 的时候也不要忘记将 \ 进行转义,因为 \ 在字符串里面也是一个转义字符。 ^ 匹配输入的开始,例如,/^A/ 并不会匹配 “an A” 中的 ‘A’,但是会匹配 “An E” 中的 ‘A’。 $ 匹配输入的结束。例如,/t$/ 并不会匹配 “eater” 中的 ‘t’,但是会匹配 “eat” 中的 ‘t’。 . 匹配除换行符之外的任何单个字符。例如,/.n/将会匹配 “nay, an apple is on the tree” 中的 ‘an’ 和 ‘on’,但是不会匹配 ‘nay’。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 <!--
1. 正则表达式:定义字符串的组成规则。
①. 单个字符:[]
如: [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次
③. 开始结束符号
* ^:开始
* $:结束
2. 正则对象:
①. 创建
方式一: var reg = new RegExp("正则表达式");//由于是字符串,可能会有转义的麻烦
方式二: var reg = /正则表达式/;(常用,注意此时的正则表达式不需要要用""包含着)
②. 方法
test(参数):验证指定的字符串是否符合正则定义的规范,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
3.常用正则
验证数字:^[0-9]*$
验证n位的数字:^\d{n}$
验证至少n位数字:^\d{n,}$
验证m-n位的数字:^\d{m,n}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证身份证号(15位或18位数字):^\d{15}|\d{}18$
中国大陆手机号码:1\d{10}
中国大陆固定电话号码:(\d{4}-|\d{3}-)?(\d{8}|\d{7})
中国大陆邮政编码:[1-9]\d{5}
IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
日期(年-月-日):(\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))
日期(月/日/年):((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2})
-->
<script>
//匹配规则为,只能是数字或者字母,且位数在5-12之间
var reg=/^[0-9a-zA-Z]{5,12}$/;
alert(reg.test("6>ssdsd"));//false
alert(reg.test("12345"));//true
alert(reg.test("abc"));//false
alert(reg.test("abcdefghijklmnopqrstuvwxyz"));//false
</script>Global
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <!--
1. 特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。 方法名();
2. 方法:
encodeURI():url编码
decodeURI():url解码
encodeURIComponent():url编码,编码的字符更多
decodeURIComponent():url解码
parseInt():将字符串转为数字
* 逐一判断每一个字符是否是数字,直到不是数字为止,将前边数字部分转为number
isNaN():判断一个值是否是NaN
* NaN六亲不认,连自己都不认。NaN参与的==比较全部问false
eval():将JavaScript字符串作为脚本代码来执行。
* var a = "alert(123)";
* eval(a);
3. URL编码
举例:
var str = "传智播客";
var encode = encodeURI(str);
var decode = decodeURI(encode);
document.write(encode);//%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2
document.write(decode);//传智播客
-->(7)事件
事件是某些组建被执行了某些操作后,触发了某些代码的执行;
常见的事件:
事件 说明 onload 加载完成事件:页面加载完成之后,常用于做页面 js 代码初始化操作 onclick 单击事件: 常用于按钮的点击响应操作。(ondblclick:双击事件) onblur 失去焦点事件: 常用用于输入框失去焦点后验证其输入内容是否合法。 onfocus 获得焦点事件 onchange 内容发生改变事件: 常用于下拉列表和输入框内容发生改变后操作 onmousemove 鼠标被移动 onmouseout 鼠标从某元素移开 onmouseover 鼠标被移到某元素之上 onsubmit 表单提交事件:提交按钮被点击,常用于表单提交前,验证所有表单项是否合法,
当return false时,可以组织表单提交onselect 文本被选定 onreset 重置按钮被点击。 事件的绑定:
事件的注册(绑定)其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫事件注册或事件绑定。
- 静态注册事件 :通过 html 标签的事件属性直接赋于事件响应后的代码。
- 动态注册事件 :先通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象.事件名 = function(){} 这种形式赋于事件
响应后的代码。**
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
window.onload = function () {
var buttonTag = document.getElementById("button02");
buttonTag.onclick = function () {
alert('你点击了按钮2(动态绑定)')
};
}
</script>
</head>
<body>
<!--方式一:静态绑定-->
<button id="button01" onclick="alert('你点击了按钮1(静态绑定)')">点击按钮1</button>
<!--方式二:动态绑定-->
<button id="button02">点击按钮2</button>
</body>
</html>3. DOM模型
(1)概念
Document Object Model 文档对象模型,将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作,DOM将HTML文档表达为树结构:DOM树
(2)DOM标准
W3C DOM 标准被分为 3 个不同的部分:
- 核心 DOM - 针对任何结构化文档的标准模型
Document:文档对象
Element:元素对象
Attribute:属性对象
Text:文本对象
Comment:注释对象
Node:节点对象,其他5个的父对象
- XML DOM - 针对 XML 文档的标准模型
- HTML DOM - 针对 HTML 文档的标准模型
(3)核心DOM模型
Document:文档对象
Document 对象的理解:
① Document 它管理了所有的 HTML 文档内容。
② Document 它是一种树结构的文档。有层级关系。
③ 它让我们把所有的标签都对象化
④ 我们可以通过 document 访问所有的标签对象。创建:在 html dom 模型中可以使用 window 对象来获取
window.document / document(即window可省略)
方法:
获取Element对象:
①
getElementById(): 根据id属性值获取元素对象。id 属性值一般唯一 ②getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组
③getElementsByClassName():根据 Class 属性值获取元素对象们。返回值是一个数组
④getElementsByName(): 根据 name 属性值获取元素对象们。返回值是一个数组
⑤write():将参数内容输出到页面上。
创建其他DOM对象:
createAttribute(name)
createComment()
createElement()
createTextNode()
Element:元素对象
- 获取/创建:通过 document 来获取和创建
- 方法:
- removeAttribute():删除属性(例如 HTML 中某个对象有个 font 的属性,我们可以使用这个方法来去除掉)
- setAttribute():设置属性
Node:节点对象,其他 5 个的父对象
- 特点:所有 dom 对象都可以被认为是一个节点
- 方法:
- appendChild():向节点的子节点列表的结尾添加新的子节点。
- removeChild() :删除(并返回)当前节点的指定子节点。
- replaceChild():用新节点替换一个子节点。
- 属性:
- parentNode 返回节点的父节点
(4)HTML DOM
HTML DOM 允许 JavaScript 改变 HTML 元素的内容。
获取/设置HTML元素的内容
document.getElementById(id).innerHTML=新的HTML内容;(不重新赋值就是获取原来html内容)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
window.onload = function () {
var divTag = document.getElementById("01");
//使用新的内容替换原来内容
divTag.innerHTML = "新的内容";
/* var divTag = document.getElementsByTagName("div");//注意返回的是数组
divTag[0].innerHTML = "新的内容";*/
}
</script>
</head>
<body>
<div id="01">原来内容</div>
</body>
</html>获取/设置HTML元素的属性
document.getElementById(id).属性名=新的属性值;(不重新赋值就是获取原来属性值)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
window.onload = function () {
var aTag = document.getElementById("id01");
aTag.target="_blank";//将在本页面跳转,改变为新建一个页面跳转
}
</script>
</head>
<body>
<a id="id01" href="http://www.baidu.com" target="_self">跳转到百度</a>
</body>
</html>控制元素样式
① 使用元素的style属性来设置
document.getElementById(id).style.属性名=新样式;`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
#id01{
color:red;
}
</style>
<script>
window.onload = function () {
var aTag = document.getElementById("id01");
aTag.style.color="blue";//如果原来CSS样式属性存在,则替换
aTag.style.border="1px solid red";//如果原来CSS样式属性不存在,则会添加
}
</script>
</head>
<body>
<div id="id01">div内容</div>
</body>
</html>② 改变元素的class/id/name属性,使得其应用其他的CSS样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
#id01{
color:red;
}
#id02{
color:blue;
}
</style>
<script>
window.onload = function () {
var aTag = document.getElementById("id01");
aTag.id="id02";//应用id02样式
}
</script>
</head>
<body>
<div id="id01">div内容</div>
</body>
</html>4. BOM
(1)概念
Browser Object Model 浏览器对象模型,将浏览器的各个组成部分封装成对象。其使得 JavaScript 有能力与浏览器”对话”。
(2)组成
- Window:窗口对象
- Navigator:浏览器对象
- Screen:显示器屏幕对象
- History:历史记录对象
- Location:地址栏对象
(3)Window:窗口对象
1)创建
Window 对象不需要创建,可以直接使用它的方法(类方法)。并且,window的引用也可以省略,也就是直接写方法名就行了,甚至不需要写类名:例如我们常用的 alert 方法,其实就是 window.alert()。还有 window.document,我们也简化为document了
2)方法
与弹出框有关的方法:
alert() 显示带有一段消息和一个确认按钮的警告框。
confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
如果用户点击确定按钮,则方法返回true
如果用户点击取消按钮,则方法返回false
prompt() 显示可提示用户输入的对话框。(返回值:获取用户输入的值)与打开关闭有关的方法:
close() 关闭浏览器窗口。(谁调用我 ,我关谁)
open() 打开一个新的浏览器窗口(返回新的Window对象)与定时器有关的方式
setTimeout() 在指定的毫秒数后调用函数或计算表达式,只执行一次。
参数:(js代码或者方法对象 , 毫秒值) 返回值:唯一标识,用于取消定时器
clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
clearInterval() 取消由 setInterval() 设置的 timeout。
3)属性:
获取其他 BOM 对象:history / location / Navigator / Screen
获取 DOM 对象:document
(4)Location:地址栏对象
- 创建(获取):window.location / location
- 方法:reload() 重新加载当前文档。刷新
- 属性:
<u>href</u>设置或返回完整的 URL(HyperText Reference 超文本引用)。使用此属性可以修改当前地址栏的网址,达到跳转网页的效果(5)History:历史记录对象
创建(获取):window.history / history
方法:
back() 加载 history 列表中的前一个 URL。
forward() 加载 history 列表中的下一个 URL。
go(参数) 加载 history 列表中的某个具体页面。(参数如果是正数,则指前进几个历史记录。负数只后退几个历史记录)
属性:length 返回当前窗口历史列表中的 URL 数量。
四. JQuery
1. 名词解释
jQuery,顾名思义,也就是 JavaScript 和查询(Query),它是辅助 JavaScript 开发的 js 类库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
JavaScript框架:本质上就是一些js文件,封装了js的原生代码而已
2. 引入 jQuery 包
(1)下载 jQuery
目前 jQuery有三个大版本:
1.x:兼容 ie678,使用最为广泛的,官方只做 BUG 维护,
功能不再新增。因此一般项目来说,使用 1.x 版本就可以了,
最终版本:1.12.4 (2016年5月20日)
2.x:不兼容 ie678,很少有人使用,官方只做 BUG 维护,
功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,
最终版本:2.2.4 (2016年5月20日)
3.x:不兼容 ie678,只支持最新的浏览器。除非特殊要求,
一般不会使用 3.x 版本的,很多老的 jQuery 插件不支持这个版本。
目前该版本是官方主要更新维护的版本。最新版本:3.2.1(2017年3月20日)jquery-xxx.js 与 jquery-xxx.min.js区别:
jquery-xxx.js:开发版本。给程序员看的,有良好的缩进和注释。体积大一些
jquery-xxx.min.js:生产版本。程序中使用,没有缩进。体积小一些。程序加载更快
(2)导入JQuery的js文件
使用Google提供的API导入:如
<script type="text/javascript" src="jquery-1.7.2.js"></script>3. jQuery 核心函数 $()
1
2 $ 是 jQuery 的核心函数,能完成 jQuery 的很多功能。$()就是调用$这个函数,$是jQuery的别名,$()等价于jQuery()。
jQuery库只提供了一个叫jQuery的函数,该函数中以及该元素的原型中定义了大量的方法。jQuery 函数具有四种参数:
传入参数为 [ 函数 ] 时:
$(function(){}); 当文档加载完毕之后jQuery函数调用匿名函数。表示页面加载完成之后。相当于 window.onload = function(){}
传入参数为 [ HTML 字符串 ] 时:
jQuery 函数根据传入的文本创建好 HTML 元素并封装成 jQuery 对象并返回。 $(“<div class=”one”>one</div>”);
传入参数为 [ 选择器字符串 ] 时:
jQuery 函数通过该选择器获取对应的 DOM,然后将这些 DOM 封装到一个人 jQuery 对象中并返回。
1
2
3 $(“#id属性值”); id 选择器,根据 id 查询标签对象
$(“标签名”); 标签名选择器,根据指定的标签名查询标签对象
$(“.class属性值”); 类型选择器,可以根据 class 属性查询标签对象传入参数为 [ DOM 对象 ] 时:
jQuery 函数将该 DOM 封装成 jQuery 对象并返回,即会把这个 dom 对象转换为 jQuery 对象
window.onload和$(function)区别① $(function(){})不会被覆盖,而window.onload会被覆盖。
window.onload 只能定义一次,如果定义多次,后边的会将前边的覆盖掉。
$(function)可以定义多次的。② $(function(){})在window.onload执行前执行的。
$(function(){})类似于原生js中的DOMContentLoaded事件,在DOM加载完毕后,页面全部内容(如图片等)完全加载完毕前被执行。而window.onload会在页面资源全部加载完毕后才会执行。
DOM文档加载步骤:
- 解析HTML结构
- 加载外部的脚本和样式文件
- 解析并执行脚本代码
- 执行
$(function(){})内对应代码- 加载图片等二进制资源
- 页面加载完毕,执行
window.onload4. jQuery 对象
jQuery 对象是 jQuery 函数的一个实例,是一个类数组对象,数组中存放的是 DOM 对象,而 DOM 对象是 Node 的实例。 对 jQuery 对象的操作实际上是对 JQuery 数组中的 DOM 对象的批量操作。jQuery 对象和 DOM 对象可以相互转化。 但是 jQuery 对象不能使用 DOM 对象的属性和方法,DOM 对象也不能使用 jQuery 对象的属性和方法
JQuery 对象和 JS 对象区别与转换
dom 对象转化为 jQuery 对象
$( DOM 对象 )就可以转换成为 jQuery 对象jQuery 对象转为 dom 对象
jQuery对象[下标]/jQuery对象.get(下标)可以获取相应的DOM 对象。5. jQuery 选择器
(1)基本选择器
标签选择器(根据标签名查找标签对象):
$("html标签名")获得所有匹配标签名称的元素id选择器(根据 id 查找标签对象):
$("#id的属性值")获得与指定 id 属性值匹配的元素类选择器(根据 class 查找标签对象):
$(".class的属性值")获得与指定的 class 属性值匹配的元素组合选择器(取并集):
$("选择器1,选择器2....")获取多个选择器选中的所有元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery使用</title>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script>
$(function () {
var $div = $("div");
alert($div)//[object Object]此时获取的是jQuery对象
alert($div[0].innerHTML);//div标签1
alert($div[1].innerHTML);//div标签2
});
</script>
</head>
<body>
<div>div标签1</div>
<div>div标签2</div>
<span>span标签</span>
</body>
</html>(2)层级选择器
- 后代选择器:
$("a b")在给定的祖先元素下匹配所有后代元素。(不受层级限制)- 子选择器:
$("parent > child")在给定的父元素下匹配所有子元素。- 相邻选择器:
$("prev + next")匹配所有紧接在prev元素后的next元素。- 兄弟选择器:
$("prev ~ siblings")匹配prev元素之后的所有sibling元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery使用</title>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script>
$(function () {
var $div1 = $("div+span");//必须是仅挨着div的span
alert($div1[0].innerHTML);//span标签1
alert($div1[1].innerHTML);//span标签3
var $div2 = $("div~span");//所有div后面的同辈span元素都可
alert($div2[0].innerHTML);//span标签1
alert($div2[1].innerHTML);//span标签2
alert($div2[2].innerHTML);//span标签2
});
</script>
</head>
<body>
<div>div标签1</div>
<span>span标签1</span>
<span>span标签2</span>
<div>div标签2</div>
<span>span标签3</span>
</body>
</html>(3)过滤选择器
jQuery的过滤器必须用在jQuery选择器后,表示对通过前面的jQuery选择器选择到的内容的过滤。是建立在前面选择器已经选择到的元素的基础之上。 语法:selector:过滤器
基本过滤器 说明 返回 :first★匹配找到的第1个元素 单个元素 :last★匹配找到的最后一个元素 单个元素 :eq★匹配一个给定索引值的元素 单个元素 :even匹配所有索引值为偶数的元素 集合元素 : odd匹配所有索引值为奇数的元素 集合元素 :gt(index)匹配所有大于给定索引值的元素 集合元素 :lt(index)匹配所有小于给定索引值的元素 集合元素 :not去除所有与给定选择器匹配的元素 集合元素 :animated选取当前正在执行动画的所有元素 集合元素 :focus选取当前正在获取焦点的元素 集合元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery使用</title>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script>
$(function () {
var $div1 = $("div+span:first");//只取第一个紧挨着div的span
alert($div1[0].innerHTML);//span标签1
//alert($div1[1].innerHTML);//不能取出span标签3
});
</script>
</head>
<body>
<div>div标签1</div>
<span>span标签1</span>
<span>span标签2</span>
<div>div标签2</div>
<span>span标签3</span>
</body>
</html>
内容过滤器 描述 返回 :contains(text)★选取含有文本内容为text的元素 集合元素 :empty选取不包含子元素获取文本的空元素 集合元素 :has(selector)选择含有选择器所匹配的元素的元素 集合元素 :parent选取含有子元素或者文本的元素 集合元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery使用</title>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script>
$(function () {
var $div1 = $("div~span:contains('哈哈') ");//必须是仅挨着div的span
alert($div1[0].innerHTML);//span标签1,哈哈
alert($div1[1].innerHTML);//span标签3,哈哈
});
</script>
</head>
<body>
<div>div标签1</div>
<span>span标签1,哈哈</span>
<span>span标签2,嘿嘿</span>
<span>span标签3,哈哈</span>
</body>
</html>
属性过滤器 说明 返回 [attribute]★选取拥有此属性的元素 集合元素 [attribute=value]★选取属性值为 value值的元素集合元素 [attribue^=value]选取属性的值以 value开始的元素集合元素 [attribue$=value]选取属性的值以 value结束的元素集合元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery使用</title>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script>
$(function () {
var $div1 = $("div~span[name='aa']");//必须是仅挨着div的span
alert($div1[0].innerHTML);//span标签1
alert($div1[1].innerHTML);//span标签3
});
</script>
</head>
<body>
<div>div标签1</div>
<span name="aa">span标签1</span>
<span name="bb">span标签2</span>
<span name="aa">span标签3</span>
</body>
</html>
表单过滤器 说明 :input选取所有 inputtextareaselectbutton元素:text★选取所有单行文本框 :password★选取所有密码框 :radio★选取所有单选框 :checkbox★选取所有多选框 :submit选取所有的提交按钮 :image选取所有的图像按钮 :reset选取所有的重置按钮 :button选取所有的按钮 :file选取所有的上传域 :hidden选取所有的不可见元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery使用</title>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script>
$(function () {
var $radio = $(":radio");
alert($radio[0].name);//gender
alert($radio[1].name);//gender
});
</script>
</head>
<body>
<form action="www.baidu.com" method="get" name="我的表单">
用户姓名:<input type="text":> <br/>
用户密码:<input type="password"> <br/>
国籍:<select>
<option>--请选择国籍</option>
<option >--中国</option>
<option>--美国</option>
<option>--日本</option>
</select> <br>
性别:<input type="radio" name=" gender">男
<input type="radio" name=" gender">女 <br/>
兴趣爱好<input type="checkbox">java
<input type="checkbox">c++
<input type="checkbox">python
<input type="checkbox">其他 <br>
自我介绍<br/><textarea rows="5" cols="30"></textarea> <br>
<input type="file"> <br/>
<input type="submit">
</form>
</body>
</html>
表单对象属性过滤器 说明 返回 :enabled选取所有可用元素 集合元素 :disabled选取所有不可用元素 集合元素 :checked★选取所有被选中的元素(单选框、复选框) 集合元素 :selected★选取所有被选中的元素(下拉列表) 集合元素 6. jQuery 中 DOM 操作
(1)内容操作
html(): 获取/设置元素的标签体内容,跟 dom 属性 innerHTML 一样。 无参数时获取html的值 ,有参数时设置html的值。
text(): 获取/设置元素的标签体纯文本内容 ,跟 dom 属性 innerText 一样。无参数时获取文本值 ,有参数时设置文本值。
val(): 获取/设置表单项的value属性值,跟 dom 属性 value 一样。无参数时获取value的值,有参数时设置value的值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery使用</title>
<script type="text/javascript" src="jquery-1.7.2.js"></script>
<script>
$(function () {
alert($("a").html());//<b>百度</b>
alert($("a").text());//百度
$("a").text("百度一下");//将百度替换成了百度一下
alert($("input").val());//123
$("input").val("abc");//把123改成了abc
});
</script>
</head>
<body>
<a href="http://www.baidu.com"><b>百度</b></a>
<input type="text" value="123">
</body>
</html>(2)属性操作
attr(): 获取/设置元素的属性
返回属性的值:$(selector).attr(property)
设置属性和值:$(selector).attr(property,value)
使用函数设置属性和值:$(selector).attr(*property,*function(index,currentvalue))
设置多个属性和值:$(selector).attr({property:value, property:value,…})
removeAttr():删除属性
- attribute是要移除的属性
prop():获取/设置元素的属性
返回属性的值:$(selector).prop(property)
设置属性和值:$(selector).prop(property,value)
使用函数设置属性和值:$(selector).prop(*property,*function(index,currentvalue))
设置多个属性和值:$(selector).prop({property:value, property:value,…})
removeProp():删除属性
- $(selector).removeProp(attribute);
attr和prop区别?
- prop,只推荐操作 checked、readOnly、selected、disabled 等等(如果属性的值是布尔类型的值,建议使用)
- attr,不推荐操作 checked、readOnly、selected、disabled 等等
(3)CSS 样式操作
addClass():添加class属性值
removeClass():删除class属性值
toggleClass():切换class属性(如果没有,则添加样式。)
offset(): 获取和设置元素的坐标。(4)CRUD 操作
创建:
创建元素节点:var newTd = $(“
“) 创建文本节点:var newTd = $(“
文本内容 “)插入:
① 插入子元素
append(): $A.append(B) 将B追加到A内部,作为它的最后一个子元素
prepend(): $A.prepend(B) 将B追加到A内部,作为它的第一个子元素
appendTo(): $A.appendTo(B) 将A追加到B的内部,作为它的最后一个子元素
prependTo(): $A.prependTo(B) 将A追加到B内部,作为它的第一个子元素② 插入兄弟元素
after(): $A.after(B) 在A之后追加B,作为它的兄弟元素
before(): $A.before(B) 在A之前追加B,作为它的兄弟元素
insertAfter(): $A.insertAfter(B) 在B之后追加A,作为它的兄弟元素
insertBefore(): $A.insertBefore(B) 在B之前追加A,作为它的兄弟元素删除:
remove():对象.remove():将对象删除掉
empty(): 对象.empty():将对象的后代元素全部清空,但是保留当前对象以及其属性节点替换:
replaceWith(): A.replaceWith(B) ,用 B 替换掉A
replaceAll(): A.replaceAll(B) 用 A替换掉所有 B(5)jQuery筛选函数
方法 说明 eq()★获取给定索引的元素,功能跟 :eq 一样 first()★获取第一个元素,功能跟 :first 一样 last()★获取最后一个元素 ,功能跟 :last 一样 is(exp)判断是否匹配给定的选择器,只要有一个匹配就返回,true has(exp)返回包含有匹配选择器的元素的元素,功能跟 :has 一样 not(exp)删除匹配选择器的元素,功能跟 :not 一样 children(exp)返回匹配给定选择器的子元素,功能跟 parent>child 一样 find(exp)返回匹配给定选择器的后代元素,功能跟 ancestor descendant 一样 next()返回当前元素的下一个兄弟元素,功能跟 prev + next 功能一样 nextAll()返回当前元素后面所有的兄弟元素,功能跟 prev ~ siblings 功能一样 filter(exp)留下匹配的元素 nextUntil()返回当前元素到指定匹配的元素为止的后面元素 parent()返回父元素 prev(exp)返回当前元素的上一个兄弟元素 prevAll()返回当前元素前面所有的兄弟元素 prevUnit(exp)返回当前元素到指定匹配的元素为止的前面元素 siblings(exp)返回所有兄弟元素 add()把 add 匹配的选择器的元素添加到当前 jquery 对象中 (6)动画
默认显示和隐藏方式
show([speed,[fn]]),将隐藏的元素显示(通过改变元素的高度宽度和不透明度,直到这三个属性值到0)
hide([speed,[fn]]),将可见的元素隐藏。(从上到下增加元素的高度,从左到右增加元素宽度,从0到1增加透明度,直至内容完全可见)
toggle([speed],[fn]),切换,可见就隐藏,不可见就显示。参数意思:
speed:动画的速度。三个预定义的值(“slow”,”normal”, “fast”)或表示动画时长的毫秒数值(如:1000)
fn:在动画完成时执行的函数,每个元素执行一次。
滑动显示和隐藏方式
- slideDown([speed],[easing],[fn])
- slideUp([speed,[easing],[fn]])
- slideToggle([speed],[easing],[fn])
淡入淡出显示和隐藏方式
- fadeIn([speed],[easing],[fn])
- fadeOut([speed],[easing],[fn])
- fadeToggle([speed,[easing],[fn]])
(7)事件
jquery 标准的绑定方式
jq对象.事件方法(回调函数);(如果调用事件方法,不传递回调函数,则会触发浏览器默认行为,例如:单击超链接后会跳转、单击提交后表单会提交,有时需要阻止元素的默认行为,使用return false)click() 它可以绑定单击事件,以及触发单击事件
dblclick() 双击
mouseover() 鼠标移入事件
mouseout() 鼠标移出事件
bind() 可以给元素一次性绑定一个或多个事件。
one() 使用上跟 bind 一样。但是 one 方法绑定的事件只会响应一次。
unbind() 跟 bind 方法相反的操作,解除事件的绑定
live(type, [data], fn) 也是用来绑定事件。它可以用来绑定选择器匹配的所有元素的事件。哪怕这个元素是后面动态创建出来的也有效。
on绑定事件/off解除绑定
jq对象.on(“事件名称”,回调函数);
jq对象.off(“事件名称”);(如果off方法不传递任何参数,则将组件上的所有事件全部解绑)
事件切换:toggle
jq对象.toggle(fn1,fn2…)(当单击jq对象对应的组件后,会执行fn1.第二次点击会执行fn2…..)
-------本 文 结 束 感 谢 您 的 阅 读-------
- 本文链接: https://snipercoding.github.io/2022/02/21/前端基础知识/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!


