HTML语法
简介
由来
HTML的英文全称是 Hyper Text Markup Language,即超文本标记语言。HTML是由Web的发明者 Tim Berners-Lee和同事 Daniel W. Connolly于1990年创立的一种标记语言,它是标准通用化标记语言SGML的应用。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX, Windows等)。使用HTML,将所需要表达的信息按某种规则写成HTML文件,通过专用的浏览器来识别,并将这些HTML文件“翻译”成可以识别的信息,即现在所见到的网页。
自1990年以来,HTML就一直被用作万维网的信息表示语言,使用HTML描述的文件需要通过web浏览器显示出效果。HTML是一种建立网页文件的语言,通过标记式的指令(Tag),将影像、声音、图片、文字动画、影视等内容显示出来。事实上,每一个HTML文档都是一种静态的网页文件,这个文件里面包含了HTML指令代码,这些指令代码并不是一种程序语言,只是一种排版网页中资料显示位置的标记结构语言,易学易懂,非常简单。HTML的普遍应用就是带来了超文本的技术―通过单击鼠标从一个主题跳转到另一个主题,从一个页面跳转到另一个页面,与世界各地主机的文件链接超文本传输协议规定了浏览器在运行HTML文档时所遵循的规则和进行的操作。HTTP的制定使浏览器在运行超文本时有了统一的规则和标准。
万维网(world wide web,简称www)上的一个超媒体文档称之为一个页面(外语:page)。作为一个组织或者个人在万维网上放置开始点的页面称为主页(外语:Homepage)或首页,主页中通常包括有指向其他相关页面或其他节点的指针(超级链接),所谓超级链接,就是一种统一资源定位器(Uniform Resource Locator,外语缩写:URL)指针,通过激活(点击)它,可使浏览器方便地获取新的网页。这也是HTML获得广泛应用的最重要的原因之一。在逻辑上将视为一个整体的一系列页面的有机集合称为网站(Website或Site)。超文本标记语言(英文缩写:HTML)是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种标记语言。
网页的本质就是超文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
定义
超文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。
开发工具
我使用的开发工具是Visual Studio Code
下载链接:Visual Studio Code官网
常用浏览器及其内核
浏览器 | 内核 |
---|---|
谷歌(Chrome) | Blink |
火狐(Firefox) | Gecko |
Safair | Wenkit |
Opera | Blink |
IE | Trident |
这里推荐使用谷歌浏览器(Chrome)(Blink)
Visual Studio Code 简介
Visual Studio Code(简称“VS Code” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器, 可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统。
插件安装
VS Code可以安装许多插件,为了更方便地书写和调试代码,这里推荐几个插件。
简体中文插件
VS Code默认是英文界面,使用该插件可以将软件内的所有语言改成中文。
插件名:Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code
默认浏览器打开插件
由于我们调试的时候需要使用浏览器进行运行,但是每次打开浏览器又会非常麻烦,因此安装该插件可以直接使用快捷键进行打开,节省了大量的时间。
快捷键:Alt + B
插件名:Open In Default Browser
准备工作
首先将谷歌浏览器设置为默认浏览器,然后创建一个后缀名为html
的文件,使用VS Code打开文件所在的文件夹。
HTML基本骨架
输入一个叹号(!
)然后摁回车键可以得到一段初始化好的代码 ,这段代码被称为HTML基本骨架
注意一定要是英文的叹号。
基本骨架含义
1 | <!-- 一种通用标记语言的文档类型声明,告诉标准通用标记语言解析器,应当使用什么文档类型来进行解析 --> |
可以使用快捷键Alt + B
在浏览器中打开,切记在运行之前需要使用快捷键Ctrl + S
进行保存。
结果展示:
双标签与单标签
标签一共分为两种,一种叫做双标签,另一种叫单标签。
双标签:前部分叫开始标签,后部分叫结束标签,两部分之间包裹内容。
例:
1 | <strong>双标签演示</strong> |
单标签:自成一体,无法包裹内容
例:
1 | <br> |
路径
绝对路径
指目录下的绝对位置,可直接到达目标位置,通常从盘符开始的路径。
例:E:/Workspaces/hexo/themes/butterfly/source/img/posts/HTML语法/HTML语法/img/壁纸.jpg
相对路径
同级目录:./
下级目录:文件夹名/
上级目录:../
例:img/壁纸.jpg
属性
属性指的是标签的属性,需要借助标签进行设置。
属性的注意点:
标签的属性写在开始标签内部
标签上可以同时存在多个属性
属性之间以空格隔开
标签名与属性之间必须以空格隔开
属性之间没有顺序之分
例:
1 | <img src="img/壁纸.jpg" alt="图片加载失败"> |
其中img
是标签,src
和alt
均为属性,而引号里面的东西为属性的值,即属性值。
注释
注释内容一般是给开发者看的,并不会显示在实际的网页中,基本写法是用<!-- -->
将注释内容包裹起来。
例:
1 | <!-- 注释内容 --> |
标题标签
标题分为1~6级别标题,重要程度依次递减,基本写法是用<h1> </h1>
将标题内容包裹起来,其中h后面的数字表示标题的级别,最多可以写到6。
特点:
文字默认加粗
依次减小
独占一行
例:书写1~6级标题
1 | <body> |
结果展示:
段落标签
一个段落,分段显示,基本写法是用<p> </p>
将段落内容包裹起来。
特点:
段落之间存在间隙
独占一行
例:使用段落标签书写I have a dream前三段
1 | <body> |
结果展示:
换行标签
强制换行,基本写法是直接写一个<br>
。
特点:
单标签
让文字强制换行
例:书写I have a dream前三段,并且每段间隔三行
1 | <body> |
结果展示:
水平线标签
主题的分割转换,基本写法是直接写一个<hr>
。
特点:
单标签
在页面中显示一条水平线
例:书写I have a dream前三段,并且每段使用一个水平线隔开
1 | <body> |
结果展示:
文本格式化标签
主要功能:
文字加粗
<b> </b>
<strong> </strong>
下划线
<u> </u>
<ins> </ins>
倾斜
<i> </i>
<em> </em>
删除线
<s> </s>
<del> </del>
长的标签是为了突出重要性,用来强调语境,视觉效果上是完全相同的。
例:
1 | <body> |
结果展示:
图片标签
在网页中显示图片,基本写法是<img src="" alt="">
。
特点:
单标签
img
标签如果要展示对应的效果,需要借助标签的属性进行设置。
属性:
src
:添加图片的路径,从而显示图片alt
:图片加载失败时进行文本替换title
:鼠标悬停时显示文字width
和height
:表示图片的宽度和高度,如果只设置一个,将会自动比例缩放(图片不会变形),默认单位为像素(px)
例:添加一张相对路径为img/壁纸.jpg
的图片,加载失败显示文字为“图片加载失败”,鼠标悬停文字为“壁纸”,宽度和高度分别是800和500
1 | <body> |
结果展示:
音频标签
在页面中插入音频,基本写法是<audio src=""></audio>
。
属性:
src
:添加音频的路径controls
:显示播放的控件autoplay
:自动播放(部分浏览器不支持)loop
:循环播放
例:添加一个相对路径为audio/Aimer - LAST STARDUST.mp3
的音频,添加显示播放的控件,设置为自动播放,循环播放
1 | <body> |
结果展示:
视频标签
在页面中插入视频,基本写法是<video src=""></video>
。
属性:
src
:添加视频的路径controls
:显示播放的控件autoplay
:自动播放(谷歌浏览器中需要配合muted
实现静音播放)loop
:循环播放width
和height
:控制宽度和高度
例:添加一个相对路径为video/CG.mp4
的音频,添加显示播放的控件,设置为自动静音播放,循环播放,宽度和高度设置为800和500
1 | <body> |
结果展示:
链接标签
点击之后,从一个页面跳转至另外一个页面,基本写法是<a href=""></a>
其中href
后面写跳转到的链接,两个标签之间写显示的文字。
在实际开发过程中,可能遇到链接还没有制作的过程,因此可以在href
后面写#
作为空链接进行占位。
属性:
target
:有两个属性值_self
:默认值,在当前窗口中跳转(覆盖原网页)·_blank`:在新窗口中跳转(保留原网页)
例:制作两个链接,分别在当前窗口跳转和在新窗口中跳转,跳转地址均为该博客
1 | <body> |
结果展示:
列表标签
无序列表
在网页中表示一组无顺序之分的列表。
标签名:
ul
:表示无序列表的整体,用于包裹li
标签li
:表示无序列表的每一项,用于包含每一行的内容
显示特点:列表的每一项前默认显示圆点标识。
注意点:ul
标签中只允许包含li
标签,li
标签可以包含任意内容。
例:制作一个无序列表,内容是从星期一至星期日
1 | <body> |
结果显示:
有序列表
在网页中表示一组有顺序之分的列表。
标签名:
ol
:表示有序列表的整体,用于包裹li
标签li
:表示有序列表的每一项,用于包含每一行的内容
显示特点:列表的每一项前默认显示序号标识。
注意点:ol
标签中只允许包含li
标签,li
标签可以包含任意内容。
例:制作一个有序列表,内容是从星期一至星期日
1 | <body> |
结果显示:
自定义列表
在网页的导航中通常会使用自定义列表实现。
标签名:
dl
:表示自定义列表的整体,用于包裹dt
和dd
标签dt
:表示自定义列表的主题dd
:表示自定义列表的针对主题的每一项内容
显示特点:dd
前会默认显示缩进效果。
注意点:dl
标签中只允许包含dt
和dd
标签,dt
和dd
标签可以包含任意内容。
例:制作一个自定义列表,分为工作日和休息日,工作日中包括星期一到星期五,休息日中包括星期六到星期日
1 | <body> |
结果展示:
表格
标签名与属性
在网页中以列的单元格的方式整齐展示的数据。
标签名:
table
:表格整体,可以用于包裹多个tr
tr
:表示每行,可用于包裹td
td
:表格单元格,可用于包裹内容
注意点:标签的嵌套关系为table
>tr
>td
。
属性:
border
:属性值为数字,表示边框的宽度width
:属性值为数字,表示表格的宽度height
:属性值为数字,表示表格的高度
注意点:在实际开发中一般使用CSS设置表格的样式。
标题与表头单元格
在表格中表示整体大标题和一行小标题。
标签名:
caption
:表格大标题,表示表格整体的大标题,默认在表格整体顶部居中位置显示th
:表头单元格,表示一行小标题,通常用于表格第一行,默认内部文字加粗并居中显示
注意点:caption
标签写在table
标签内部,th
标签写在th
标签内部(用于替换td
标签)
表格的结构标签
让表格的内容结构分组,突出表格的不同成分(头部、主题、底部),使语义更加清晰。
标签名:
thead
: 表格头部tbody
:表格主体foot
:表格底部
合并单元格
跨行合并(垂直合并成一个)
跨列合并(水平合并成一个)
合并单元格的步骤:
明确合并哪几个单元格
通过左上原则,确定保留谁:
上下合并:只保留最上的,删除其他
左右合并:只保留最左的,删除其他
给保留的单元格设置:跨行合并(
rowspan
)或者跨列合并(colspan
)
属性:
rowspan
:属性值表示合并单元格的个数,跨行合并,将多行的单元格垂直合并colspan
:属性值表示合并单元格的个数,跨列合并,将多列的单元格水平合并
注意点:只有一个结构标签中的单元格才能合并,不能跨结构合并标签(不能跨thead
tbody
tfoot
)
例:使用结构标签制作一个乘法表,表头为“九九乘法表”并加粗,并将剩下的没有数据的格子进行合并,边框宽度为1,最后一行用字母表示
1 | <body> |
结果展示:
input系列标签
input标签
在网页中显示收集用户信息的表单,标签名为input
,基本写法是<input type="text">
。
属性值:
text
:文本框,用于输入单行文本password
:密码框,用于输入密码radio
:单选框,用于多选一的情况checkbox
:多选框,用于多选多的情况file
:文件选择,用于之后上传文件submit
:提交按钮,用于提交reset
:重置按钮,用于重置button
:普通按钮,默认无功能,之后配合js
添加功能
文本框(text password)系列标签
在网页中显示输入单行文本的表单控件。
属性:
placeholder
:占位符。提示用户输入内容的文本value
:初始值。会在文本框初始时显示
例:制作一个文本框,提示信息为“账号”,制作一个密码框,提示信息为“密码”
1 | <body> |
结果展示:
单选框(radio)系列标签
在网页中显示多选一的单选表单控件。
属性:
name
:分组。有相同属性的单选框为一组,一组中同时只能有一个被选中checked
:默认选中
注意点:name
属性对于单选框有分组功能,有相同name
属性值的单选框为一组,一组中只能同时有一个被选中。
例:制作一个单选框,内容是性别,一共三个选项,分别是男,女,保密,默认选择保密
1 | <body> |
结果展示:
多选框(checkbox)系列标签
在网页中显示多选多的多选表单控件。
属性:
name
:分组。有相同属性的单选框为一组,一组可以有多个被选中checked
:默认选中
注意点:name
属性对于单选框有分组功能,有相同name
属性值的单选框为一组,一组中可以同时有多个被选中。
例:制作一个多选框,内容是爱好,设置五个爱好,分别是运动,唱歌,画画,睡觉,其他,其中其他后面需要跟一个文本框,提示信息为其他爱好,默认选择为运动
1 | <body> |
结果展示:
文件选择(file)
在网页中显示文件选择的表单控件。
属性:
multiple
:多文件选择
例:制作一个文件上传控件,设置为多文件选择
1 | <body> |
结果展示:
按钮(button)
在网页中显示不用功能的按钮表单控件。
属性值:
submit
:提交按钮。点击之后提交数据给后端服务器reset
:重置按钮。点击之后恢复表单默认值button
:普通按钮。默认无功能,之后配合js
添加功能
属性:
value
:替换按钮上的文字
注意点:如果需要实现以上按钮功能,需要配合form
标签使用
form
标签使用方法:用form
标签把表单标签一起包裹起来即可。
属性:
value
:设置按钮名字
注意点:谷歌浏览器button
按钮默认是提交按钮。
还可以使用button
标签,button
标签是双标签,更便于包裹其他内容:文字、图片等。
例:制作一个个人信息表单,并能够实现上传重置等功能。
1 | <body> |
结果展示:
下拉菜单(select)按钮
在网页中提供多个选择项的下拉菜单表单控件。
标签名:
select
:下拉菜单的整体option
:下拉菜单的每一项
属性:
selected
:下拉菜单的默认选中
例:制作一个时间下拉菜单,内容是星期一到星期五,默认选择星期三
1 | <body> |
结果展示:
文本域标签(textarea)
在网页中提供可输入多行文本的表单控件,基本写法是<textarea name="" id="" cols="30" rows="10"></textarea>
。
属性:
clos
:规定了文本域内可见宽度rows
:规定了文本域内可见行数
注意点:右下角可以拖拽改变大小,实际开发时针对于样式效果推荐CSS
设置。
例:制作一个文本域标签,宽度为20,行数为10
结果展示:
label标签
常用于绑定内容与表单标签的关系,可以实现点击文本也可以选中单选框多选框,基本写法是<label for=""></label>
。
使用方法1
使用
label
标签把内容(如文本)包裹起来在表单标签上添加
id
属性在
label
标签的for
属性中设置对应的id
属性值
使用方法2
直接用
label
标签把内容(如文本)和表单标签一起包裹起来需要把
label
标签的for
属性删除即可
例:制作一个性别选择,分别使用两种方法为男和女两个选项添加label
标签
1 | <body> |
结果展示:
无语义标签
实际开发网页时会大量频繁使用div
和span
这两个无语义的布局标签,基本写法是<div></div>
和<span></span>
。
标签:
div
标签:一行只显示一个(独占一行)span
标签:一行可以显示多个
有语义标签(手机端网页)
在HTML5
新版本中,退出了一些有语义的布局标签供开发者使用。
标签名:
header
:网页头部nav
:网页导航footer
:网页底部aside
:网页侧边栏section
:网页区块article
:网页文章
注意点:以上标签显示特点和div
一致,但是比div
多了不同的语义。
实体字符
因为很多符号不能直接表示出来,因此需要使用实体字符进行代替。
显示结果 | 描述 | 实体名称 | 实体编号 |
---|---|---|---|
空格 | |
||
< | 小于号 | < |
< |
> | 大于号 | > |
> |
& | 和号 | & |
& |
“ | 引号 | " |
" |
‘ | 撇号 | ' (IE不支持) |
' |
¢ | 分(cent) | ¢ |
¢ |
£ | 镑(pound) | £ |
£ |
¥ | 元(yen) | ¥ |
¥ |
€ | 欧元(euro) | € |
€ |
§ | 小节 | § |
§ |
© | 版权(copyright) | © |
© |
® | 注册商标 | ® |
® |
™ | 商标 | ™ |
™ |
× | 乘号 | × |
× |
÷ | 除号 | ÷ |
÷ |
使用过程中需要输入实体名称。
例:制作一个版权符号
1 | <body> |
结果展示: