前端三大块
1 | 2 |
---|---|
html | 结构 |
css | 表现 |
javascript | 行为 |
- 结构: HTML用于描述页面的结构
- 表现:CSS用于控制页面中元素的样式
- 行为: JavaScript用于响应用户操作
HTML(Hypertext Markup Language)
- 超文本标记语言
- 使用标签的的形式来标识网页中的不同组成部分
- 所谓超文本指的是超链接,使用超链接可以让我们从一个页面跳转到另一个页面
一个最基本的HTML页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>网页标题</title>
</head>
<body>
<h1>网页正文</h1>
</body>
</html>
标签
- HTML中的标记指的就是标签
- HTML使用标记标签来描述网页
- 结构
<标签名>标签内容</标签名>
<标签名 />
元素
- 我们还将一个完整的标签称为元素
- 这里我们可以将元素和标签认为是一个同义词
<h1>一级标题</h1>
上边的h1我们就称为元素
<p>我是一个<em>段落</em></p>
p也是一个元素,em是p的子元素,p是
em的父元素。
<body>
<p><em>内容</em></p>
</body>
1. body也是一个元素
2. body是p和em的祖先元素。
3. p和em是body的后代元素
属性
- 可以为HTML标签设置属性
- 通过属性为HTML元素提供附加信息
- 属性需要设置在开始标签或自结束标签中
- 属性总是以名称/值对的形式出现。
- 比如:name=“value”
- 有些属性可以是任意值,有些则必须是指定值
<h1 title="我是一个标题">标题</h1>
<img src="" alt="" />
常见属性
id --id属性作为标签的唯一标识,在同一个网页中不能出现相同的id属性值
class --class属性用来为标签分组,拥有相同class属性的标签我们认为就是一组,可以出现相同的class属性,可以为一个元素指定多个class
title --title属性用来指定标签的标题,指定title以后,鼠标移入到元素上方时,会出现提示文字。
注释
- HTML注释中的内容不会在网页中显示
- 注释不能嵌套!
- 合理的使用注释可以帮助开发人员理解网页的代码
- 格式:
<!-- 注释内容 -->
<!DOCTYPE html>
<html >
<head>
<!-- 你好我是注释
-->
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1 title="我是一个标题"></h1>
</body>
</html>
doctype
- HTML总共有那么多的版本,而且这其中至少有三个版本在广泛使用,那么浏览器怎么知道我们在使用哪个版本呢?
- 为了让浏览器知道我们使用的HTML版本我们还需要在网页的最上边添加一个doctype声明,来告诉浏览器网页的版本
- 避免怪异模式的最好方式就是在页面中编写正确的doctype
html4
过渡版
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
严格版
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
框架集
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
html5
<!DOCTYPE html>
编码问题
- 如果我们保存文件时使用的是utf-8进行编码,而浏览器读取页面时使用gb2312,这样就会导致页面中的内容不能正常显示,也就是我们所说的乱码。
- 所以我们只需要统一两者使用的字符集就可以解决乱码问题
- 这里为了页面有更好的使用性,我们一般使用utf-8
解决
- 保存文件的编码我们直接通过编辑器即可指定,接下来就是要告诉浏览器使用什么字符集去解析文件。
- 在html5中只需要使用meta标签即可完成这个任务:
<meta charset="utf-8" />
meta
- <meta> 标签可提供有关页面的元信息,比如针对搜索引擎和更新频度的描述和关键词
- <meta> 标签位于文档的头部,不包含任何内容。<meta> 标签的属性定义了与文档相关联的名称/值对。
meta的用法
设置页面的字符集
<meta charset="utf-8">
设置网页的描述
<meta name="description" content="发布h5、js等前端相关的信息">
设置网页的关键字
<meta name="keywords" content="HTML5,JavaScript,前端,Java" />
请求的重定向
<!--
<meta http-equiv="refresh" content="秒数;url=目标路径" />
-->
<meta http-equiv="refresh" content="5;url=http://www.baidu.com" />
常用标签
< html>
- 作用: < html>标签用于告诉浏览器这个文档中包含的信息是用HTML编写的
- 用法: 所有的网页的内容都需要编写到html标签中,一个页面中html标签只能有一个,html标签中有两个子标签head和body
< head>
- 作用: < head>标签用来表示网页的元数据,head中包含了浏览器和搜索引擎使用的其他不可见信息。
- 用法 head标签作为html标签的子元素的出现,一个网页中只能有一个head
< title>
- 作用: --- < title>标签表示网页的标题,一般会在网页的标题栏上显示 --- title标签中的文字,是页面优化的最重要因素。在搜索引擎的搜索时最先看到的、最醒目的内容
- 用法: --- 建议将< title>标签紧贴着head标签编写,这样搜索引擎可以快速检索到标题标签--- 网站中的多个页面的< title>也不应该重复,这样不利于搜索隐藏检索
< body>
- 作用: < body>标签用来设置网页的主体,所有在页面中能看到的内容都应该编写到body标签中
- 用法: < body>标签作为html的子标签使用
h1~h6
- h1h6都是网页中的标题标签,用来表示网页中的一个标题,不同的是,从h1h6重要性越来越低。
- 标题标签相当于正文的标题,通常认为重要性仅次于页面的title
- 一般标题标签我们只会使用到h3,h3以后的标题标签对于搜索引擎就没有什么意义了
- 一个页面中只会使用一个h1标签
< p>
- < p>标签表示网页中的一个段落
- 一般浏览器会在段落的前和后各加上一个换行,也就是段落会在页面中自成一行
< br />
- < br />标签表示一个换行标签,使用br标签可以使br标签后的内容另起一行
- 在HTML中,字符之间写再多的空格,浏览器也会当成一个空格解析,换行也会当成一个空格解析在页面中可以使用br标签来表示一个换行,br标签是一个自结束标签
< hr />
- < hr />标签是水平线标签,使用hr标签可以在页面中打印一条水平线,水平线可以将页面分成上下两个部分
< img />
- 作用:< img />标签是图片标签,可以用来向页面中引入一张外部的图片
- 属性:
- src --指向一个外部的图片的路径
- alt --图片的描述
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>图片标签</title>
</head>
<body>
使用img标签来向网页中引入一个外部图片
img标签也是一个自结束标签
属性:
src:设置一个外部图片的路径
alt:可以用来设置在图片不能显示时,对图片的描述
搜索引擎可以通过alt属性来识别不同的图片
如果不写alt属性,则搜索引擎不会对img中的图片进行收录
width:可以用来修改图片的宽度,一般使用px作为单位
height:可以用来修改图片的高度,一般使用px作为单位
宽度和高度两个属性如果只设置一个,另一个也会同时等比例调整大小
如果两值同时指定,则按照你指定的值来设置
一般开发中除了自适应的页面,不建议设置width和height
src:可以绝对路径,也可相对路径,../(上级目录)
-->
<img src="2.gif" alt="这是一个大松鼠" width="100px" height="500px" />
</body>
</html>
图片的格式
JPEG(JPG)
- JPEG图片支持的颜色比较多,图片可以压缩,但是不支持透明
- 一般使用JPEG来保存照片等颜色丰富的图片
GIF
- GIF支持的颜色少,只支持简单的透明,支持动态图
- 图片颜色单一或者是动态图时可以使用GIF
PNG
- PNG支持的颜色多,并且支持复杂的透明
- 可以用来显示颜色复杂的透明的图片
图片的使用原则:
效果不一致,使用效果好的
效果一致,使用小的
< iframe >内联框架
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>内联框架</title>
</head>
<body>
<h1>我是demo11</h1>
<!--
使用内联框架可以引入一个外部的页面
使用iframe来创建一个内联框架
属性:
src:指向一个外部页面的路径,可以使用相对路径
width:
height:
name:可以为内联框架指定一个name属性
在现实开发中不推荐使用内联框架,因为内联框架中的内容不会被搜索引擎所检索
-->
<iframe src="demo010_XHTML的语法规范.html" name="tom"></iframe>
</body>
</html>
< a >
- 作用:< a>标签是超链接标签,通过a标签,可以快速跳转到其他页面。
- 属性:
- href : 指向一个链接地址
- target : 设置打开目标页面的位置,可选值:_blank新窗口、_self当前窗口。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>超链接</title>
</head>
<body>
<h1>我是demo12</h1>
<!--
使用超链接可以让我们从一个页面跳转到另一个页面
使用a标签来创建一个超链接
属性:
href:指向链接跳转的目标地址,可以写一个相对路径,也可以写一个完整的地址
-->
<a href="http://www.baidu.com">我是一个超链接</a><br /><br />
<a href="http://www.baidu1234567.com">我是一个超链接</a><br /><br />
<!--
a标签中的target属性可以用来指定打开链接的位置
可选值:
_self:表示在当前窗口中打开(默认值)
_blank:在新的窗口中打开链接
可以设置一个内联框架的name属性值,链接将会在指定的内联框架中打开
-->
<a href="demo011_内联框架.html" target="tom">我是一个超链接</a><br /><br />
<iframe src="demo010_XHTML的语法规范.html" name="tom"></iframe>
<!--
center标签中的内容,会默认在页面中居中显示
我们可以将要居中的元素全都放到center中
-->
<center>
<p>我是一个p标签</p>
</center>
</body>
</html>
实体(转义字符)
- 在HTML中预留了一些字符。
- 这些预留字符是不能在网页中直接使用的
- 比如<和>,我们不能直接在页面中使用<和>号,因为浏览器会将它解析为html标签。
- 为了可以使用这些预留字符,我们必须在html中使用字符实体
- 语法: &实体名
字符实体
小于号< | < |
---|---|
大于号> | > |
空格 |   |
和符号& | & |
版权© | © |
引号” | " |
注册商标® | ® |
商标™ | &trade |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>XHTML的语法规范</title>
</head>
<body>
<!--
1、HTML中不区分大小写,但是我们一般都使用小写
-->
<!--
2、HTML中的注释不能嵌套
-->
<!--
这是一个注释
<!--
这是注释中的注释
-->
-->
<!--
3、HTML标签必须结构完整,要么成对出现,要么自结束标签
-->
<!-- 正确 -->
<p>我是一个p标签</p>
<!-- 错误 -->
<p>我是一个p标签
<!--
浏览器尽最大的努力正确地解析页面,你所有的不符合语法规范的内容
浏览器都会为你自动修正,但是有些情况会修正错误
-->
<!-- 自结束标签 -->
abc
<br />
bcd
<br>
efg
<!--
4、HTML标签可以嵌套,但是不能交叉嵌套
-->
<p>今天天气<font color="red">真不错</font></p>
<p>今天天气<font color="red">真不错</p></font>
<!--
5、HTML标签中的属性必须有值,且值必须加引号(单引号双引号都可以)
-->
<p>今天天气<font color=>真不错</font></p>
<p>今天天气<font color=red>真不错</font></p>
</body>
</html>
<h1>谁敢管我</h1>
CSS
- 层叠样式表 (Cascading Style Sheets)
- css可以用来为网页创建样式表,通过样式表可以对网页进行装饰
- 所谓层叠,可以将整个网页想象成是一层一层的结构,层次高的将会覆盖层次低的
- 而css就可以分别为网页的各个层次设置样式
基本语法
- CSS的样式表由一个一个的样式构成,一个样式又由选择器和声明块构成。
- 语法:
选择器 {样式名:样式值;样式名:样式值 ; }
– p {color:red ; font-size:12px;}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CSS语法</title>
<style type="text/css">
/*
CSS的注释,作用和HTML注释类似,只不过它必须编写在style标签中,或者是CSS文件中
CSS的语法:
选择器 声明块
选择器:
- 通过选择器可以选中页面中指定的元素,并且将声明块中的样式应用到选择器对应的元素上
声明块:
- 声明块紧跟在选择器的后边,使用一对{}括起来
- 声明块中实际上就是一组一组的名值对结构
- 这一组一组的名值对我们称为声明
- 在一个声明块中可以写多个声明,多个声明之间使用;隔开
- 声明的样式名和样式值之间使用:来连接
*/
p{
color:red;
font-size:40px;
}
</style>
</head>
<body>
<p>今天天气真不错,PM2.5也就500</p>
</body>
</html>
行内样式
- 可以直接将样式写到标签内部的style属性中,这种样式不用填写选择器,直接编写声明即可
<p style="color: red;font-size: 30px"></p>
- 这种方式编写简单,定位准确。但是由于直接将css代码写到了html标签的内部,导致结构与表现耦合,同时导致样式不能够复用,所以这种方式我们不使用
内部样式表
- 可以直接将样式写到<style>标签中
<style>
p{color:red; font-size: 30px;}
</style>
<body>
<p>jiandan</p>
</body>
- 这样使css独立于html代码,而且可以同时为多个元素设置样式,这是我们使用的比较多的一种方式
- 但是这种方式,样式只能在一个页面中使用,不能在多个页面中重复使用
外部样式表
- 可以将所有的样式保存到一个外部的css文件中,然后通过<link>标签将样式表引入到文件中。
<link rel="stylesheet" type="text/css"href="style.css">
- 这种方式将样式表放入到了页面的外部,可以在多个页面中引入,同时浏览器加载文件时可以使用缓存,这是我们开发中使用的最多的方式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CSS</title>
<!--
也可以将CSS样式编写到head中的style标签里,称为内部样式表
将样式表编写的style标签中,然后通过CSS选择器选中指定元素
然后可以同时为这些元素一起设置样式,这样可以使样式进一步的复用
将样式表编写到style标签中,也可以使表现和结构进一步分离,它也是我们推荐的使用方式
<style type="text/css">
p{
color:red;
font-size:40px;
}
</style>
-->
<!--
还可以将样式表编写到外部的CSS文件中,然后通过link标签来将外部的CSS文件引入到当前页面中
这样外部文件中的CSS样式表将会应用到当前页面中
将CSS样式统一编写到外部的样式表中,完全使结构和表现分离,可以使样式表在不同的页面中使用
最大限度地使样式可以进行复用,将样式统一写在样式表中,然后通过link标签引入
可以利用浏览器的缓存,加快用户访问的速度,提高了用户体验
所以在开发中我们最推荐使用的方式就是外部的CSS文件
-->
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<!--
可以将CSS样式编写到元素的style属性当中,这种样式称为内联样式
内联样式只对当前的元素中的内容起作用,内联样式不方便复用
内联样式属于结构与表现耦合,不方便后期的维护,不推荐使用的
<p style="color:red;font-size:40px;">床前明月光,疑是地上霜</p>
<p style="color:red;font-size:40px;">举头望明月,低头思故乡</p>
-->
<p>举头望明月,低头思故乡</p>
<p>举头望明月,低头思故乡</p>
<p>举头望明月,低头思故乡</p>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<title>块和内联</title>
</head>
<body>
<!--
块元素和内联元素
块元素
所谓的块元素就是会独占一行的元素
无论它的内容有多少,它都会独占一整行
常见的块元素:div p h1 h2 h3……
div这个标签没有任何语义,就是一个纯粹的块元素
并且不会为它里边的元素设置任何的默认样式
div元素主要用来对页面进行布局的
内联元素(行内元素)
所谓的行内元素指的是只占自身大小的元素,不会占用一行
常见的内联元素:span a img iframe
span没有任何语义,span标签专门用来选中文字,然后为文字来设置样式
块元素主要用来做页面中的布局,内联元素主要用来选中文本设置样式
一般情况下只使用块元素去包含内联元素,而不会使用内联元素去包含一个块元素
a元素可以包含任意元素,除了他本身
p元素不可以包含任何其它的块元素
-->
<p><div>我是一个span</div></p>
<a href="#"><a href="#">我是一个超链接</a></a>
<a href="#">
<div style="background-color: red; width: 200px;">
我是一个div
</div>
</a>
<div style="background-color: yellow; width: 200px;">
我是一个div
</div>
<p>我是一个p标签</p>
<p>我是一个p标签</p>
<hr />
<span>我是一个span</span>
<span>我是一个span</span>
<span style="color: red;">我是一段文字</span>
</body>
</html>