Skip to content
On this page

HTML 语义

html4

  • 基本文档:html、head、body...
  • 基本标签:h1-h6、p、br、hr、
  • 文本格式化:strong、b、em、i、small、strong、del、sub、sup...
  • 链接:a、link
  • 图片:img、map、area
  • 区块:div、span
  • 三大列表:ul li、ol li、dl dt dd
  • 表格:table、caption、th、tr、td、thead、tbody、tfoot
  • 框架:iframe
  • 表格:form、input、select、option、textarea、button、label
  • 实体:&It、&gt、&copy、&nbsp...

什么叫语义化

指对文本内容的结构化(内容语义化),选择合乎语义的标签(代码语义化),便于开发者阅读,维护和写出更优雅的代码和同时,让浏览器和爬虫和辅助技术更好解析。 通俗理解:用正确的标签做正确的事

语义化的好处

  • 利于 seo 优化(也就是搜索引擎和抓取,搜索引擎的爬虫也依赖于标记来确定 上下文和各大关键字的权重)
  • 在样式丢失的时候,还是可以比较好的呈现结构
  • 更好的支持各种终端,例如无障碍阅读和有声小说等;
  • 利于团队开发和维护,W3C 给我们定了一个标准,那么团队中遵循这个标准,那么代码的差异就会搜小,在开发和维护的时候就可以提高效率

学会如何写出更优的 html

  • 结构搭建上
  • 代码校验
  • 良好的代码排版
  • 语义化设计
  • 布局规范
  • 标签嵌套规范
  • 网站代码优化

结构搭建上

  • 采用 HTML5 标准时开头应该加上
  • 应在 head 标签中引入 css 文件,这样浏览器就可以在输出 HTML 之前获取 CSS 信息
  • 在 body 标签的末尾引入 js 文件,这样可以在页面显示之后再编译 js 文件,以加快页面读取速度,同时有助于 hs 对页面中的元素进行操作
  • 对元素的操作应添加在 js 代码中,而不是在 html 添加,后期难以维护

代码校验

  • 在项目中加入校验过程:可以在代码编辑器中使用 HTMLHint,SublimeLinter 这类代码校验插件,也可以在 build 的时候使用 HTMLHint with Grunt 这类校验工具,还可以通过 W3C HTML validato 等网站在线检测代码
  • 尽量采用 HTML5 标准
  • 确保正确的 HTML 层级:嵌套元素时确保元素首尾完整,在一个有大量内容的元素的结束标签后应添加注释,这样有助于后期 debug,特别是在使用模板的时候;
  • 在所有不能自动化结束的元素末尾添加结束标签
  • li 结束标签不是必须的,所以有些人认为可以不写 li,这可以接受,但是 ul 和 ol 标签一定要加
  • video 和 audio 元素必须要有结束标签

良好的代码排版

  • 在项目中保持统一的 HTML 代码风格
  • 使用代码编辑器来帮助你自动排版,比如 Sublime Text 中使用自带 Reindent,也可以找一些排版工具来帮助你。同样的可以使用一些在线工具;比如 Beautifier 和 JS Beautifier
  • 在 HTML 中缩进来分层更易于阅读,如果代码编辑器没有自动缩进功能可以自行修改相应设置。当你发现 HTML 层级更深的时候,那就表示你需要重构一下你的 HTML 了
  • 用更直接易读的方式写 HTML 代码,注意标签的相互嵌套关系
  • 元素要按照常规放置,比如 footer 元素最好是放在 html 页面底部,虽然理论上它放在任何位置都可以正常运行

语义化设计

  • 标签使用 h1-h6,列表使用 ul 或者 ol
  • 在适当的地方使用 html5 的新元素,比如 header、footer、nav、aside
  • 正文中的文本内容要用 p 标签,内容的结构化可以使用 html 的新元素(或 div)
  • 修改文本样式时,em 和 strong 要比 i 和 b 更好些,因为前者语义化明显
  • form 中包含 label 元素,input 要有 type,placeholder 以及其他必要的属性,即使值为空都可以
  • 尽量减少无意义标签,例如 span 和 div
  • 尽量减少使用标签本身的 css 属性,例如 b、font、s 等标签,如果需要这些样式、那么使用 css 样式进行添加。
  • 在需要强调的部门,使用 strong、em,但是样式尽量使用 css 样式来描述
  • 使用表格时,标题用 caption,表头用 th,单元格用 td。
  • 列表搭建时,使用<ul>无序列表<ul>``<ol>有序列表<ol>``<dl>自定义列表
  • 每个 input 标签对应的说明文本都需要使用 label 标签,并且通过 input 设置 id 属性,在 lable 标签中设置 for = id 来说明文本和相对应的 input 关联起来,或者直接在 label 中内嵌控件。

布局规范

  • p 元素来放大文字,而不是用来布局。在浏览器自身样式中默认 p 有 margin 和其它样式
  • 想实现换行可以使用 block 元素或者 css 的 display 属性,尽量避免使用 br 来换行。文字内容中的换行可以用 br,但是通常很少这样用。
  • 不要滥用 div,w3c 对 div 的描述是这样的:当没有其他元素可用时才能使用 div,如果想让 link 和 img 这类元素能够在结尾换行,可以在样式中添加 display:block, 这样要比把他们放进 div 或者使用 br 换行要好很多
  • 必须知道哪些是块级元素,这样就可以避免把块级元素放在 div 里面,比如列表就不需要放在 div 里面

布局规范

  • table 是用来放在表格数据中,不是用来布局的
  • flex box 现在越来越流行,学一学没有坏处
  • 盒模型一定要掌握,必须知道什么时候用 padding,什么时候该用 margin;是 top 和 left
  • 使用 margin 的规则:通常情况下,margin 都是添加元素的 bottom 和 right,有时,也可以是 top 或者 left。无论如何,尽量避免同时在 bottom 和 top 或者 right 和 left 添加 margin,可以用 last-of-type 选择器来去掉最后一个子元素的 margin

标签嵌套规范

  • 块元素可以包含内联元素或某些块元素,但是内联元素却不能包含元素,它只能包含其它的内联元素
    • <div><h1></h1><p></p><div>
    • <a herf='#'><span></span></a>
    • <span><div></div></span>
  • 块级元素不能放在 p 里面
    • <p><ol><li></li></ol></p>
    • <p><div></div></p>
  • 有几个特殊的块级元素只能包含内嵌元素,不能包含块级元素
  • 这几个特殊的标签是:h1-h6 p dt
  • ul,li/ol,li/dl,dt,dd 拥有父子级关系的标签;ul、ol 一下只能更 li,dl 下只能跟 dt,dd
  • a 里面不能嵌套 a 标签

网站代码优化

要多为用户考虑,不同的设备条件、使用环境以及输入法等都会给你的 HTML 带来不同的体验

  • 网页的 title,keyword,descrption 一定要写,要精简全面
  • 网页使用语义化代码
  • a 标签设置 title 属性;外部链接还要设置 rel 属性 --rel='nofollow',nofollow 值会使得网络爬虫不顺着链接爬出
  • 所有的标题使用 h1 标签,样式可以使用 css 设置
  • br 标签只能用于文本换行
  • table 一定要使用 caption 设置表格题目
  • strong 用来设置重标,em 设置斜体
  • img 标签一定要设置其 alt 属性

html 及拓展

DOCTYPE

  • 文档声明
  • 声明帮助浏览器正确地显示网页
  • 定义这个文档的类型,浏览器会先识别这句话,会按照这个类型去解析这个文档
  • HTML 也要多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全地显示 HTML 页面
  • 一般高版本兼容低版本,所以工作中默认写高版本就可以了 (HTML5 文档声明)
  • 文档声明不区分大小写
  • 文档声明必须放在第一行(因为浏览器是从上到下解析的)
  • 必须写文档声明,如果不写就会发生怪异事件
  • 文档声明不是一个标签,它只是一个申明

meta meta: 元信息,该标签提供关于 HTML 文档的元数据。元数不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。

html
<meta charset='UTF-8'/> 申明编码
<meta name="keword" content=""/> 页面关键词
<meta name="decrption" content=""/> 页面描述
<meta charset='viewport' content="width=devie-width,intial-scale==1"/> 视口-移动设备
<meta name="author" content="author name"/> 定义作者
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> 使用ie最新版本
1
2
3
4
5
6

HTML Entity 在编写 HTML 页面时,需要用到"<"、">"、"空格"等符号,直接输入这些符号时,会错误的把它们与标记混在一起,非常不利于编码。那么需要把这些字符进行转义,以另一种方式书写,以及相同的形式展现。

  • 在 HTML 中,这些字符可称为 HTML Entity, 即 HTML 字符实体。
  • 一个 HTML Entity 都含有 2 种转义格式:Entity Name 和 Entity Number

作用:

  • 显示 HTML 保留字符,如<、>、&、"等(联想到防御 XSS 攻击)
  • 表示难以用常规输入设备输入的字符,如©、®、±等
  • 表示给定的字符编号可能无法表示文档集的其他字符,如 ASCII 编码想显示中文,使用 水 表示“水”

Entity Name 格式:&entityName

  • 说明:"&"开头,";"结尾以语义的形式描述字符。如字符"<", 英文名称为"less than",Entity Name 为"&It", 取自"less than"2 个字母的首字母

Entity Number 格式化:&#entityNumber;

  • 说明:"&#开头",";"结尾,以编号的形式描述字符。此编号可以为十进制或者十六进制,以 (&#x) 开头数字格式

SVG 矢量图形

  • SVG 指可伸缩矢量图
  • SVG 用来定义网格的基于矢量的图形
  • SVG 使用 XML 格式定义图形
  • SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失
  • SVG 是万维网联盟的标准
  • SVG 与诸如 DOM 何 XSL 之类的 W3C 是一整体

SVG 优势 与其他图像格式想必(比如 JPEG 和 GIF),使用 SVG 的优势在于:

  • SVG 图像可通过文本编辑器来创建和修改
  • SVG 图像可被搜索,索引,脚本化或压缩
  • SVG 是可伸缩的
  • SVG 图像可在任何的分辨率下被高质量地打印
  • SVG 可在图像质量不下降 的情况下放大

浏览器支持

  • ie9+ ,firefox,opera,chrome,safari 支持内联 svg

svg 使用 把 svg 直接嵌入 HTML 页面

svg 代码以 svg 元素开发,包括 svg 和关闭</svg>。这是根元素。 width 和 height 属性可设置此 svg 文档的宽度和高度。 version 属性可定义所使用的 svg 版本,xmIns 属性可定义 SVG 命名空间 stroke 和 stroke-width 属性控制如何显示形状的轮廓。我们把圆的轮廓设置为 5px,黑边框 fill 填充的颜色

沪ICP备20006251号-1