HTML常用标签

316 阅读16分钟

最近看文章的时候,渐渐的意识到了基础的重要性。虽然html和css在前端开发中属于难度较低的,当然也有很多人觉得布局难,我想的话往往是基础不够牢固所造成的,自己最近抽时间看了看之前的一些知识,做了一些总结。

网页开发的基础就是基于一些html标签,最新的HTML5中新增了一些标签,比如音视频标签,下面总结一些常用的标签,更多用法请参考w3school官网

1. HTML简介

HTML中文名叫超文本标记语言(Hyper Text Markup Language)是一种用于创建网页的标准标记语言,注意这里HTML并不是编程语言,顺便说一下CSS也不是编程语言,JavaScript才是编程语言。

1.1 HTMl元素

HTML网页由HTML元素组成,HTML元素又叫HTML标签,常有单标签和双标签(开始标签和结束标签)两种类型。使用 HTML 可以用来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器的渲染引擎(浏览器内核)来解析。(标签不区分大小写,但是建议使用小写)

1.1.1. 基本组成

 示例1:<br>
 示例2:<strong>测试加粗文字</strong>
  • 标签由< > / 英文单词或者字母组成,并且<>包裹的内容称为标签名
  • 单标签自成一体,无法包裹内容,如<br>、<hr>、<img>、<input>、<audio>、<video>
  • 双标签由开始标签<xx>和结束标签</xx>组成,中间包裹内容 <h></h>、<p></p>、<strong></strong>、<em></em>、<a></a>、<ul></ul>、<ol></ol>、<dl></dl>、<table></table>、<select></select>、<label></label>、<div></div>、<span></span>

区别单标签和双标签主要是看该标签是否还要嵌套东西,是否还要嵌套别的标签

1.1.2. HTML标签的属性

 示例:<img src="" name="">
  • 标签的属性在开始标签内部
  • 标签上可以存在多个属性
  • 属性之间要以空格隔开
  • 标签名和属性名之间必须以空格隔开
  • 属性之间没有顺序之分
  • 需要遵循属性名="属性值"属性值为true时可以省略属性值或者属性名="属性名",为false直接省略不写属性名即可

1.1.3. HTML标签的关系

  • 父子(嵌套)关系
 <table>
     <caption></caption>
 </table>
  • 兄弟(并列)关系
 <h></h>
 <p></p>

补充说明一下什么是web标准:就是让不同的浏览器按照相同的标准去显示结果,让展示的效果统一,分为以下三个构成:

  • HTML是网页内容的载体,内容就是网页制作者放在页面上想让用户浏览的信息,比如文字,图片,视屏等等,就是定义网页内容。(结构)
  • CSS是网页样式的表现,可以想象成网页的衣服,比如标题的变化,背景图片以及边框等等,就是定义我这个网页的布局是什么样的。(表现)
  • JavaScript是用来实现网页上的动态效果,控制网页行为,比如有什么样的动作,弹出消息之类的。(行为)

web标准要求网页中的结构、表现和行为实现三层分离

2. HTML骨架

html文件后缀为.html或者htm,通常有一个自己的骨架,vscode中输入英文感叹号加tab/enter即可出现

 <!DOCTYPE html>
 <html lang="en">
 <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>
 </head>
 <body>
     ......
 </body>
 </html>

html5骨架.jpg

  • !DOCTYPE html 声明为 HTML5 文档
  • html元素是 HTML 页面的根元素
  • head元素包含了文档的元(meta)数据,如 定义网页编码格式为 utf-8
  • title元素描述了文档的标题
  • body元素包含了可见的页面内容
  • h1 元素定义一个大标题
  • p 元素定义一个段落

3. 排版标签

3.1. h标签

标题标签 从h1-h6

  • 文字加粗
  • 文字逐渐变小
  • 独占一行
     <h1>一级标题</h1>
     <h2>二级标题</h2>
     <h3>三级标题</h3>
     <h4>四级标题</h4>
     <h5>五级标题</h5>
     <h6>六级标题</h6>

3.2. p标签

段落标签

  • 段落之间存在间隙 上下都有空行
  • 独占一行
     <p>1111111</p>
     <p>2222222</p>
     <p>33333<br>333</p>

3.3. hr标签

水平分割线标签

     12
 <hr>
     34

3.4. br标签

换行标签,仅仅是另起一行,两个br可以空一行

     12<br>34

使用空的段落标记

去插入一个空行是个坏习惯。用 <br> 标签代替它!

4. 文本格式化标签

     <!-- 加粗 -->
     <b>加粗的文字</b><br>
     <strong>加粗的文字</strong><br>
     <!-- 下划线 -->
     <u>下划线文字</u><br>
     <ins>下划线文字</ins><br>
     <!-- 倾斜 -->
     <i>倾斜的文字</i><br>
     <em>倾斜的文字</em><br>
     <!-- 删除线 -->
     <s>删除线文字</s><br>
     <del>删除线文字</del><br>

常用的有strong加粗、em倾斜、i倾斜,表示强调语义的标签,用后面的完整单词 ,单词表达的语义更加得强烈

标签语义化:让标签有自己的含义,区别于后面提到的无语义化标签div与span

5. 媒体标签

5.1. img标签

图片标签

 <img src="图片标签示例.jpg" alt="图片无法加载200" title="显示的图片" width=“500” height="200" border="10">
  • src:必写属性,图片的路径来源
  • alt:为图片无法加载的提示文字
  • title:鼠标悬停时的提示文字,可以用于任意标签
  • width:宽度,常在css中书写
  • height:高度(width和height只设置一个会实现图片等比例缩放,若同时设置图片可能会发生变形),常在css中书写
  • border:边框宽度 ,常在css中书写

5.2. 绝对路径和相对路径

网页需要找到资源,必须要有一个路径

5.2.1. 绝对路径(了解)

  1. 指目录下的绝对位置,可直接到达目标位置,通常从盘符开始的路径
 <img src="D:\Desktop\图片标签示例.jpg" alt="">
  1. 路径为网页url,特别依赖网络,可能会出现图片失效的情况
 <img src="http://www.baidu.com/2018czgw/images/logo2.png" alt="">

网络地址必须联网以http:或者https:开头才可以 ,需要联网

5.2.2. 相对路径(重要)

从当前文件出发找到目标文件的过程

  1. 同级目录:当前文件和目标文件在同一目录中

    直接写同级目录下的文件名称即可,或者vscode按./会自动查找当前目录下的文件(建议使用) 方法一:目标文件名<img src="cat.gif" 方法二:./目标文件名<img src="./cat.gif"

  2. 下级目录:目标文件在下级目录中

    目标文件夹/目标文件,或者vscode中输入./自动显示同级目录下的文件,然后一层层的选择即可 方法一:目标文件夹/目标文件名<img src="media/dog.gif" alt=""> 方法二:./目标文件夹/目标文件名<img src="./media/dog.gif" alt="图片加载失败">

  3. 上级目录:目标文件在上级目录中

    vscode中输入../自动显示上级目录下的所有文件,在一层层选择即可,上两级:../../自动选择即可。实际开发过程中 一般很少出现上两级以上的 最多出现上一级 上一级目录:../目标文件夹<img src="../mypic/media/dog.gif" alt=""> 上两级目录:../../目标文件夹<img src="../../css.jpg">

  4. 根目录:直接斜杠就是从本文件的根目录开始导航,一层层选择到目标文件 根目录:/目标文件夹/目标文件名img src="/web前端/html常用标签/01.jpg">

5.3. audio标签

音频标签,属于html5新增的标签

     <audio src="./素材/media/1.mp3" controls autoplay loop>音乐音乐</audio>
  • src:播放音频的路径
  • controls:显示播放音频的控件播放暂停按钮(属性值可以省略)因为audio无法自动播放所以没有这一属性无法播放
  • autoplay:音频加载完毕后会自动播放 谷歌考虑用户的体验问题禁用了这一属性
  • loop:音频结束后重新开始播放

音视频开始结束标签中间内容可加可不加,加了也不显示

5.4. video标签

视频标签,属于html5新增的标签

  <video src="./素材/media/2.mp4" controls autoplay muted loop></video>
  • src:播放音频的路径
  • controls:显示播放视频的控件就是那些播放暂停按钮(属性值可以省略)
  • autoplay:视频加载完毕后会自动播放 配合谷歌的muted会自动静音播放。只加autoplay无法自动播放加上muted才行(谷歌考虑用户体验禁用的单独的autoplay)
  • loop:音频结束后重新开始播放

这里的音视频控件是谷歌提供的控件,不同的浏览器控件样式不同

6. a标签

链接标签,点击之后从一个页面跳转到另一个页面

 <a href="https://www.mi.com/">小米商城</a>

href:Hypertext Reference 超文本引用链接跳转的路径,必写属性

  • a标签从未点击过,显示的颜色为蓝色
  • a标签点击过,显示的颜色为紫色,删除浏览器的查看记录后会恢复蓝色
  • a标签默认为有下划线,可以用css修饰

6.1. 链接分类

  1. 外部链接
 <a href="https://www.mi.com/">小米商城</a>

外部链接必须是以http、https开头的网页链接

  1. 内部链接
     <a href="./03-视频标签.html">跳转到当前html或者某个文件</a>

内部链接可以跳转到文件资源内的某个html文件或者某个媒体资源

  1. 网页元素链接
     <a href="https://www.jd.com/"><img src="./cat.gif" alt="图片无法加载"></a>

点击图片进行跳转,非常依赖网络

  1. 下载链接
     <a href="../day00/VSCodeUserSetup-x64-1.47.0.exe">download</a>
  • 下载链接文件名称必须以.exe .zip .rar结尾的文件名
  • 这里只做演示,只能在自己的电脑上打开,实际开发中部署在服务器上可以供用户下载
  1. 空连接使用
 <a href="#">空连接</a>

不跳转到任何页面,或者实际开发中回到网页顶部,或者开发中不确定链接最终的位置,先用空连接占个位置

空连接不会跳转,屏幕不会闪动一下,跳转到本页面屏幕会跳动一下

6.2.target属性

网页的打开方式

 <a href="https://www.jd.com/" target="_self">京东商城</a>
 <a href="https://www.jd.com/" target="_blank">京东商城</a>

target="_self":在当前窗口打开,覆盖原始网页/窗口 target="_blank":打开一个新的页面/窗口

注意不加target属性,默认是覆盖当前页面

7. 列表标签

在网页中按照行展示关联性的内容,如:新闻列表、排行榜、账单等

7.1. 无序列表

无序列表:表示网页中无顺序之分的列表项,如新闻列表,重新排列顺序不影响用户的体验 (用的比较多一些)

 <h2>水果列表</h2>
     <ul>
         <li>榴莲</li>
         <li>苹果</li>
         <li><a href="#">百度</a></li>
     </ul>
  • ul标签:无序列表的整体,只能包含li标签
  • li标签:无序列表的每一项,可以包含任意内容,比如a标签img标签等 无序列表默认前面有小圆点,可以用css处理

注意li标签只能在ul标签内

7.2. 有序列表

有序列表:用来表示带顺序的一组列表 如:排行榜

 <h2>人物列表</h2>   
     <ol>
         <li>小哥哥</li>
         <li>小姐姐</li>
         <li>小可爱</li>
         <li><img src="./cat.gif" alt=""></li>
     </ol>
  • ol标签:有序列表的整体,只能包含li标签
  • li标签:有序列表的每一项,可以包含任意内容,比如a标签img标签等 有序列表默认前面有数字标识,可以用css处理样式

同时注意li标签只能在ol标签内部

7.3. 自定义列表

在网页的底部导航中通常会使用自定义列表实现

     <dl>
         <dt>帮助中心</dt>
         <dd>账户管理</dd>
         <dd>购物指南</dd>
     </dl>
  • dl:自定义列表整体,用于包裹dt/dd标签
  • dt:自定义列表的主题(第一行)
  • dd:自定义列表针对主题的每一项内容
  • dl和dt、dd和父子关系,dt和dd是兄弟关系
  • dd前面会默认缩进显示,可以用css处理(dd有默认外边距)
  • dl标签只能包含dt和dd标签.dt/dd可以包含任意内容

8. 表格标签

在网页中以行+列的单元格的方式整齐展示和数据,如学生成绩表

 <table border="3" width="600" height="200" align="center" rules="all">
         <!-- width已经在table中全局定义了,在tr中设置width属性无效 -->
         <caption>
             <h1>学生成绩单</h1>
         </caption>
         <!-- 若发现标题和表格有一定空行需要caption中用到h标签 -->
         <thead>
             <tr align="center" height="50">
                 <!-- 设置了一个tr的height属性,另外两个tr的height在table的基础上均分 -->
                 <th>1</th>
                 <th>20</th>
                 <th></th>
                 <th>100分</th>
             </tr>
         </thead>
         <tbody>
             <tr>
                 <td>2</td>
                 <td>30</td>
                 <td></td>
                 <td>80分</td>
             </tr>
         </tbody>
         <tfoot>
             <tr>
                 <td>3</td>
                 <td>60</td>
                 <td></td>
                 <td>90分</td>
             </tr>
         </tfoot>
         </table>>

table:表格整体 table>tr>td

  • caption:表格大标题,默认在表格整体顶部居中位置显示,书写在table标签内部,caption与table和父子关系,与tr是兄弟关系
  • th:表头单元格,表示一列小标题,通常用于表格第一行,默认内部文字加粗并居中显示 th标签写在tr标签内部(用于替换td标签)
  • tr:表格的每一行
  • td:每一个单元格

width已经在table中全局定义了,在tr中设置width属性无效

8.1. table属性

在table开始标签中设置

  • border:设置表格边框
  • width:设置宽度
  • height:设置高度
  • align:设置表格的对齐方式(对齐方式left|center|right)
  • rules:all(细线表格)了解,可以通过css设置

8.2. tr属性

  • align:设置表格的对齐方式(left|center|right)
  • height:设置高度
  • width已经在table中全局定义了,在tr中设置width属性无效
  • 设置了一个tr的height属性,另外两个tr的height在table的基础上均分

8.3. 表格的结构化标签

让表格的内容结构分组,突出表格的不同部分头部、主体、底部,使语义更加的清晰(了解即可)用来包裹tr标签,可以省略

  • thead 头部
  • tbody 主体
  • tfoot 底部

8.4. 合并单元格

将水平或者垂直多个单元格合并成一个单元格

<table border="3" rules="all" height="200" width="400" align="center"> 
            <!-- 关于table属性都会在css中设置 -->
            <caption>测试合并单元格</caption>
            <tr>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <td rowspan="3"></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <!-- <td></td> -->
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <!-- <td></td> -->
                <td></td>
                <td colspan="2"></td>
                <!-- <td></td> -->
            </tr>
        </table>
  • rowspan="n" 跨行合并,将多行的单元格垂直合并
  • colspan="n" 跨列合并,将多列的单元格垂直合并 合并单元格的步骤:
  1. 明确合并哪几个单元格

  2. 通过左上原则,确定保留谁删除谁

    • 上下合并:只保留最上面的,删除其他的
    • 左右合并:只保留最左边的,删除其他的
  3. 给保留的单元格设置属性:跨行(rowspan)跨列(colspan)属性值为合并的单元格的个数

合并单元格不能跨结构标签thead、tbody、tfoot进行合并

9. 表单标签

网页中表单标签用来收集用户信息,如注册页登记个人注册信息,input标签属于表单标签,名字是输入标签 如果需要实现按钮相关功能,必须在表单外面嵌套form表单域标签

 <form action="xx.php" method="get">
 <input type="text"  placeholder="请输入用户名" name="username">
 <input type="submit" value="免费注册">
 ......
 </form>

form 表单域标签 所有的表单控件必须包含在form标签里面,按钮才会有他的功能 即form在最外层 包裹所有的表单控件-->

  • action是提交的地址
  • method是提交的方式 有get、post 属于服务端编程的知识,这里只做模拟提交

9.1. input标签

网页中显示收集用户信息的表单效果。如登录页、注册页等 input标签通过type属性值的不同,展示不同效果

9.1.1. input输入系列标签

标签名type属性值用途备注
inputtext文本框,用于输入单行文本输入input默认就是text
inputpassword密码框,用于输入密码
inputradio单选框,圆形,用于多选一要实现多选一的效果,必须设置相同的name属性值,checked:默认选中
inputcheckbox多选框,方形,用于多选多要实现多选多的效果,也必须加上相同的name值(传后台数据时需要),checked:默认选中
inputfile文件选择,用于点击后上传文件multiple 属性为支持多文件上传
inputsearch搜索框,用于搜索
inputnumber数值输入框,只用于输入数字
 昵称:<input type="text" name="" id="" placeholder="请输入用户名">
 密码:<input type="password" name="" id="" placeholder="请输入密码">
 性别:男<input type="radio" name="sex"><input type="radio" name="sex">
 
 <!-- 要实现多选一的效果,必须设置相同的name属性值 -->
 爱好:<input type="checkbox" name="hobby" id="">敲代码
      <input type="checkbox" name="hobby" id="">熬夜
      <input type="checkbox" name="hobby" id="">掉头发
      
 <!-- 要实现多选多的效果,也必须加上相同的name值,同单选框一样,checked为默认选中 -->
 <!-- 虽然多选不设置name值 也可以每个都可以选中,但是涉及到后台服务器之后,一定要设置name-->
 请上传文件:<input type="file" multiple>
 搜索:<input type="search" name="" id="" placeholder="请开始搜索">
 电话号码:<input type="number" name="" id="">
 补充:
 颜色:<input type="color" name="" id="">
 时间:<input type="time" name="" id="">
 日期:<input type="date" name="" id="">
  • name属性最好不要用中文或者数字,就用属性的英文名称
  • 直接检查中把password修改成text可以显示文本
  • placeholder属性是占位符,提示用户将要输入的信息
  • input的type还有很多,需要可以去w3c手册查找

9.1.2. input按钮系列标签

标签名type属性值备注
inputsubmit提交按钮,用于提交
inputreset重置按钮,用于重置表单到初始状态
inputbutton普通按钮,默认无功能,之后配合js添加功能
 <!-- 提交按钮 提交数据到后台 配合form设置属性action 和 method使用type="submit" 默认名字是提交-->
 <input type="submit" value="免费注册">
 
 <!-- 重置按钮 把表单恢复到初始状态 type="reset" 默认名字是重置-->
 <input type="reset" value="重新填写">
 
 <!-- 普通按钮 后续配合js一起使用 type="button" 没有默认名字 为一个空白的按钮-->
 <input type="button" value="发送短信">

9.2. button标签

网页中显示用户点击的按钮,type属性值同input按钮组系列,input的value属性是按钮上显示的,button双开始结束标签包裹的内容是按钮上所显示的

     <button type="submit">提交按钮</button>
     <button type="reset">重置按钮</button>
     <button type="button">普通按钮</button>
  • submit:提交到后端服务器
  • reset:点击后恢复到表单默认值
  • button:普通按钮无功能,配合js添加功能
  • 注意button按钮是双标签 便于包裹其他内容文字图片等
  • 实际开发中不用写type值,配合js实现逻辑功能,谷歌默认为提交按钮,直接<button>搜索</button>
  • button 的value属性必须设置但是要传给后端,需要绑定事件,在js中讲到

9.3. select标签

下拉菜单标签

 所在城市:<select >
         <option value="">上海</option>
         <option value="" selected>武汉</option>
         
         <!-- 这里的value值先不管 -->
         <option value="">北京</option>
         </select>
  • select:下拉菜单标签,为一个整体,用来包裹option标签
  • option:下拉菜单的每一项
  • option标签属性 selected 默认选中

9.4. textarea标签

textarea标签在网页中提供可输入多行文本的表单控件

 留言:<textarea name="" id="" cols="30" rows="10" placeholder="请您留言"></textarea>
  • rows 规定了可见行数
  • cols 规定了可见宽度
  • 实际开发都用css设置 直接忘掉这两个属性 右下角可以拖拽也可用css修饰

input系列、button系列、select\textarea需要放在form表单域标签里面才可供提交等操作

9.5. label标签

label标签常用于绑定内容与表单标签的关系,比如点击性别文字选中前面的单选框

使用方法一:

         <label for="1"></label>
         <input type="radio" name="sex" id="1">
         
         <!-- 文本内容放在input前后都可以 -->
         <label for="2"></label>
         <input type="radio" name="sex" id="2">
  1. 使用label标签把内容(如文本)包裹起来
  2. 在表单标签上添加id属性
  3. 在label标签的for属性设置对应相同的id属性值

使用方法二(更简单常用):

 <label>
            爱好 <input type="checkbox">敲代码
            <!-- label里前后的文本都识别,把爱好放在lable外层,习惯是内容放在checkbox或者radio的后面 -->
         </label>
  1. 直接使用label把内容和表单标签一起包裹起来
  2. 需要把label标签的for属性删除

10. 语义化标签

10.1. 无语义化标签

实际开发中会大量频繁的使用没有语义化的div和span标签,div本身无任何语义,用作布局以及样式化标签

  • div 一行只显示一个 一般是用到div加css布局 合理的语义化 p是段落标签
  • span 一行显示多个,如果装不下自动换行,span只用数字的话换不了行 块级元素在浏览器显示时,通常会以新行来开始(和结束),内联元素在显示时通常不会以新行开始
  • 块级/区块元素:h p ul table div
  • 内联元素:b/strong td a img

10.2. 有语义化标签

     <header>网页头部</header>
     <nav>网页导航</nav> 
     <footer>网页底部</footer>
     <aside>网页侧边栏</aside>
     <section>网页区块</section>
     <article>网页文章</article>

以上标签特点和div一致,只是必div多了不同的语义,供计算机更好的识别 在移动端布局会大量使用,因为PC端有很多浏览器,存在兼容性的问题,而移动端不需要考虑兼容性的问题

10.3. div与语义化标签的区别

html5提供的语义化标签可以让让开发人员更加理解你的html结构及代码易读 语义化标签有利于搜索引擎收录,有利益浏览器渲染,可读性可维护性增强

11. 字符实体

11.1. html中空格的合并现象

html中输入多个空格、换行、tab缩进时浏览器指挥解析成一个空格,需要多个需要用到字符实体,如代码中多个a标签换行后,浏览器渲染后只会出现一个空格

11.2. 字符实体用法

&英文; (结尾加上英文分号)

 我很想&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你
     <p>p标签长这个样子&lt;p&gt;</p>
意义符号
空格&nbsp;
大于号>
小于号<

以上三个为常用字符实体