语义化的HTML结构到底有何好处?
作者:feiwen8772 来源:WEB前端开发 发布时间:2009-07-13 12:38:00
相信大家都知道html和css,知道html结构和css表现分离,知道html语义化,这些都是这几年的热门关键字。语义化的html在国内也是一两年前才开始被追捧的,看看现在群里谈论的html结构,关于html结构的面试题,语义化的html占据了很大一部分。那么为什么要使用语义化的HTML?语义化的HTML到底有什么好处呢?
HTML是提供网页文档内容的上下文结构和含义;html本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗;<strong>是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以首先我们要知道html和页面的表现是没有关系的,这些是css的事情。HTML在页面中的作用就是结构和含义,通俗点说就是划分内容,这里放什么,我们放的是什么。
语义化的HTML结构首先要强调HTML结构
HTML结构是页面的骨架,一个页面就好像一幢房子,HTML结构就是钢精钢筋混泥土的墙,一幢房子如果没有钢精钢筋混泥土的墙那就是一堆费砖头,不能住人,不能办公。css是装饰材料,是原木地板,是大理石,是油漆,是用来装饰房子的,CSS的强大就不用多说了,css如果没有html结构那就是一堆木板,一同油漆,没有了实际使用价值。CSS完全依靠引用它的(X)HTML文档。如果你想使CSS的能力充分发挥到极致,提供一个用既干净又有结构的内容的html是非常必要的,“HTML是在互联网上发布超文本的通用语……HTML使用标签来对文本结构化”(http://www.w3.org/MarkUp/)。
语义化的HTML结构怎么写?
HTML是一种对文本内容进行结构和意义(或者说“语义”)进行补充的方法。它会告诉我们说:“这行是一个标题,这几行组成了一个段落。这些文字是项目列表,这些文字是链接到互联网上另一个文件的超链接。”值得注意的是,不应该让HTML来告诉我们:“这些文字是蓝色的,这些文字又是红色的。这部分内容是最最靠右的一栏,这行内容是斜体字。”这些和表现相关的信息是CSS的工作。在做前端开发的时候要记住:HTML告诉我们一块内容是什么(或其意义),而不是它长的什么样子。当我们提到“语义标记”的时候,我们所说的HTML应该是完全脱离表现信息的,其中的标签应该都是语义化地定义了文档的结构。
语义化的HTML结构其实很简单,首先掌握html中各个标签的语义,<div>是一个容器;<strong>是表示强调;<ul><li>是一个无序列表等等…在看到内容的时候想想用什么标签能更好的描述它,是什么就用什么标签。
语义化的HTML结构到底有什么好处?
我们知道HTML5新增的标签,比如<header>和<footer>,html正在朝着更加健壮的语义化的HTML结构发展,xhtml2在这点上没html5先进,这也是xhtml2死亡的一个原因,这一点也说明了语义化的HTML结构是html的发展趋势。
1.去掉或样式丢失的时候能让页面呈现清晰的结构:
html本身是没有表现的,我们看到例如<h1>是粗体,字体大小2em,加粗;<strong>是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优点,但是浏览器都有有默认样式,默认样式的目的也是为了更好的表达html的语义,可以说浏览器的默认样式和语义化的HTML结构是不可分割的。
2.屏幕阅读器(如果访客有视障)会完全根据你的标记来“读”你的网页.
例如,如果你使用的含语义的标记,屏幕阅读器就会“逐个拼出”你的单词,而不是试着去对它完整发音.
3.PDA、手机等设备可能无法像普通电脑的浏览器一样来渲染网页(通常是因为这些设备对CSS的支持较弱).
使用语义标记可以确保这些设备以一种有意义的方式来渲染网页.理想情况下,观看设备的任务是符合设备本身的条件来渲染网页.
语义标记为设备提供了所需的相关信息,就省去了你自己去考虑所有可能的显示情况(包括现有的或者将来新的设备).例如,一部手机可以选择使一段标记了标题的文字以粗体显示.而掌上电脑可能会以比较大的字体来显示.无论哪种方式一旦你对文本标记为标题,您就可以确信读取设备将根据其自身的条件来合适地显示页面.
4.搜索引擎的爬虫也依赖于标记来确定上下文和各个关键字的权重.
过去你可能还没有考虑搜索引擎的爬虫也是网站的“访客”,但现在它们他们实际上是极其宝贵的用户.没有他们的话,搜索引擎将无法索引你的网站,然后一般用户将很难过来访问.
5.你的页面是否对爬虫容易理解非常重要,因为爬虫很大程度上会忽略用于表现的标记,而只注重语义标记.
因此,如果页面文件的标题被标记,而不是,那么这个页面在搜索结果的位置可能会比较靠后.除了提升易用性外,语义标记有利于正确使用CSS和JavaScript,因为其本身提供了许多“钩钩”来应用页面的样式与行为.
SEO主要还是靠你网站的内容和外部链接的。
6.便于团队开发和维护
W3C给我们定了一个很好的标准,在团队中大家都遵循这个标准,可以减少很多差异化的东西,方便开发和维护,提高开发效率,甚至 实现模块化开发。
如有不同观点,补充,欢迎留言讨论。
感谢鬼哥,奶茶,小志,偷米饭,Caspar还有css森林群的讨论


猜你喜欢
- 一、前言如果你自己打印过东西,应该有过这种经历。如果用自己拍的图片,在手机上看感觉还是清晰可见,但是一打印出来就是漆黑一片。比如下面这两张图
- 上篇文章介绍了ROS TF坐标变换基本概念及使用案例,今天给大家介绍ROS机器人底盘坐标像素变换,一起看看吧对于ROS
- 原图矫正后我新建了个jz的文件夹放相机矫正所需要拍摄的图片,如下:共12张 # coding:utf-8import cv2imp
- 本文实例为大家分享了python webp图片格式转化的具体代码,供大家参考,具体内容如下1、将本地的webp图片转换为jpg2、将下载的w
- 以 s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}为例0. 建议:做slice截取时建议用两个参数,尤其是
- pandas函数中pandas.DataFrame.from_dict 直接从字典构建DataFrame 。参数解析DataFrame fr
- 本文实例讲述了mysql事务管理操作。分享给大家供大家参考,具体如下:本文内容:什么是事务管理事务管理操作回滚点默认的事务管理首发日期:20
- mysql_result定义和用法mysql_result() 函数返回结果集中一个字段的值。mysql_result() 返回 MySQL
- 接上篇python smtplib模块自动收发邮件功能(一) ,用python smtplib模块实现了发送邮件程序了,那么接下来我们需要现
- 1.SGD随机梯度下降随机梯度下降和其他的梯度下降主要区别,在于SGD每次只使用一个数据样本,去计算损失函数,求梯度,更新参数。这种方法的计
- 还有种片面的观点认为,做网站设计与平面差不多,比如老罗发布的这则招聘中提到:年薪十万招擅长做下列网站设计风格的平面设计师一名。在专业角度,网
- 演示源码展示创建画布<canvas width="300" height="300" styl
- 我就废话不多说了,大家还是直接看代码吧~#coding=utf-8import cv2import numpy as npimg=cv2.i
- 我就废话不多说了,大家还是直接看代码吧~//isSymbol表示有无符号func BytesToInt(b []byte, isSymbol
- 一.图像采样处理原理图像采样(Image Sampling)处理是将一幅连续图像在空间上分割成M×N个网格,每个网格用一
- Python的线程操作在旧版本中使用的是thread模块,在Python27和Python3中引入了threading模块,同时thread
- 前言 基于mybatis的AbstractRoutingDataSource和I
- m3u8原理当我们在网页播放视频时,网页向服务器发起一个以.m3u8结尾的连接请求,服务器会将具体的.ts文件链接路径发送给网页,网页接收这
- 本文实例讲述了Python贪心算法。分享给大家供大家参考,具体如下:1. 找零钱问题:假设只有 1 分、 2 分、五分、 1 角、二角、 五
- 特么的,上次写了一堆,发现,原来下载网易云的歌曲根本不用这么费劲,直接用!http://music.163.com/song/media/o