什么是Semantics?
作者:Jorux 来源:Jorux博客 发布时间:2008-04-16 13:45:00
Semantics可翻译为语义的(学),它是Html/Xhtml是否真正符合标准的重要一环。Jorux在这和大家讨论一些自己的观点,如有不妥之处,还请各位网友指正。在西方,为什么这么多人如此重视网页的Semantics,也许你会说,西方比较守规矩,重视标准,但我想说的是,在这些表象的背后有着“一只无形的手”控制着。
在此,举个导航条的例子来说明我的观点。大家应该看见过很多诸如下类的导航结构:
首页 | 关于 | 博客 | 留言 | 相册
它们有着共同的特点,都有分割条“|”将各个条目分开。要实现以上效果的导航栏,其Html/Xhtml有很多种写法,在此仅具几个比较典型的例子:
例1:
<p><a href=”home.html”>首页</a> | <a href=”about.html”>关于</a> | <a href=”blog.html”>博客</a> | <a href=”message.html”>留言</a> | <a href=”album.html”>相册</a></p>
例2:
<ul>
<li><a href=”home.html”>首页</a></li>
<li>|</li>
<li><a href=”about.html”>关于</a></li>
<li>|</li>
<li><a href=”blog.html”>博客</a></li>
<li>|</li>
<li><a href=”message.html”>留言</a></li>
<li>|</li>
<li><a href=”album.html”>相册</a></li>
</ul>
例3:
<ul>
<li><a href=”home.html”>首页</a> | </li>
<li><a href=”about.html”>关于</a> | </li>
<li><a href=”blog.html”>博客</a> | </li>
<li><a href=”message.html”>留言</a> | </li>
<li><a href=”album.html”>相册</a></li>
</ul>
例4:
<ul>
<li><a href=”home.html”>首页</a></li>
<li><a href=”about.html”>关于</a></li>
<li><a href=”blog.html”>博客</a></li>
<li><a href=”message.html”>留言</a></li>
<li><a href=”album.html”>相册</a></li>
</ul>
以上为说明Semantics而举的四个导航条Html/Xhtml例子.
例1使用了段落p作为导航条的语义元素标识(相对于结构元素,诸如div等)。很显然它犯了很典型的错误,错误的把原本是条目(list)的导航栏看成了段落。
例2,3,4都使用了ul/li作为导航栏的语义元素标识,它们的区别进在于分割条“|”的位置,以及是否在Html/Xhtml中出现。
由于CSS的存在,利用其控制表象的能力,可以将以上四个例子的外表变得一模一样,而不被肉眼察觉。但是这只是表象,随着搜索引擎的互联网地位提升,以及XML的使用频率和重要性增加,它们作为Robot,只读Html/Xhml/XML源代码,而不读CSS,也就是说它们更在乎你的网页的实际含义,而不是你的网页好看与否。也就是说让你的网页符合语义规范,就是让这些Robot更好的读懂你的网页,提高你的网站在搜索结果中的排名,获得更大的利益,这只无形的手决定了西方对Semantics的重视,甚至超过网页是否通过W3C的检测的重要性。
我个人认为的Semantics的含义就是:
将CSS去除,你的网页表现依然规范,易懂。
这条法则,能让你的肉眼和Robot的逻辑达到某种程度的统一。利用以上理论,在例1中犯的错误,就比较容易理解,条目中的关键词比段落中的关键词,更具价值。一个原本是条目的内容为什么还要使用段落?!
那么例2,3,4中,分隔条怎么会如此重要。
在例2,3之中只是位置的区别,现在不用任何CSS来控制表象,那么其Html/Xhtml表现的区别是显而易见的,读者可以试试。在例2中,分割条会单独占据四个li,原本五个li变为了九个。打个比方,一个五个人的公司现在变为了九个人的,大家的股份被稀释了一半,每个股东的重要性当然会被削弱。更要命的是有四个股东居然是一模一样的。Robot可能会认为那四个股东(|)更为重要,而降低了其他股东(关键词)的重要性。在例3中,使分隔条成为原来股东的秘书,自然不会影响关键词的重要性。
从表象考虑,也是例3优于例2的表现,例2中分隔条单独占据一行,让人费解。
那么例4中,没有使用分隔条,其在语义学上更优。分隔条的表现,可以在CSS中用图片背景轻松实现,而且像这种类型的单色分隔条,用gif格式的话,只有几个字节,不影响下载速度。
以上是Jorux在跟西方人交流中,结合用户反馈,得到的一些心得体会。大家如有不同观点或是问题,尽管拍砖。
希望以此引起各位大陆朋友的重视,重视使用h1/h2/p/ul/li/blockquote/table等语义元素的使用和规范,不要滥用div等结构元素,Robot是不太亲近此类元素的。比方说,严格意义上说单个网页,只允许出现一次h1,就是你的网页title,h1在Robot中的地位仅次于<title></title>。
注:已经忘了上次更新是什么时候了,如此更新速度,已经让我几乎想放弃。原以为,这种半死状态的网站,会逐渐被遗忘,但是Feed的订阅量却在攀升,这让我怀疑Feedburner的计数器是不是出了故障。
能让我聊以慰藉的就是这篇Write Articles, Not Blog Postings,Jakob Nielsen这位研究交互界面的权威显然找到了其蜗牛式速度的合理性。大家可以订阅一下此人的Alertbox。
毕竟我下星期就开始正式工作了,其内容绝不会和网页搭上边,使我更加怀疑自己的更新能力。但,如果那天真的停止更新了,一定会和大家说声再见。


猜你喜欢
- 前言网上很多例子都说cv2.minAreaRect函数的输出的角度范围在[-90,0],但是实测输出范围在[0,90]。再进行调研,确定为o
- 确定数据库内有多少记录,或者确定有多少记录达到了某些标准,这些用ASP完成并非难事。如果你采用了正确的游标类型,你可以用RecordCoun
- 前言栈、队列和优先级队列都是非常基础的数据结构。Python作为一种“编码高效”的语言,对这些基础的数据结构都有比较好的实现。在业务需求开发
- AS 用法:AS在mysql用来给列/表起别名.有时,列的名称是一些表达式,使查询的输出很难理解。要给列一个描述性名称,可以使用列别名。要给
- 将数据存储在不同的数据结构中时,搜索是非常基本的必需条件。最简单的方法是遍历数据结构中的每个元素,并将其与您正在搜索的值进行匹配。这就是所谓
- 下拉菜单平常见到的都是用js来实现的,本文介绍的方法是使用纯CSS实现导航下拉菜单功能,代码符合标准,兼容性好且环保,制作下拉菜单的不错选择
- 详细代码见仓库github地址:github.com/nerkeler/account重要提示程序默认密码:password密钥位置:./r
- 微信小程序image组件binderror使用例子(对应html、js中的onerror)官方文档 binderrorHandle
- 安装 Tesseract OCRTesseract OCR 是一款由 Google 团队开发的开源 OCR(Optical Characte
- 一、判断类型的函数is_bool() //判断是否为布尔型is_float() //判断是否为浮点型
- 本节我们来介绍一下新浪微博宫格验证码的识别,此验证码是一种新型交互式验证码,每个宫格之间会有一条指示连线,指示了我们应该的滑动轨迹,我们需要
- 位运算,赋值状态时异或对应位数1的整形,判断状态则与运算对应位数1的整形。最大用处就是同时判断32位状态,节省存储空间,便于扩展, 
- 严正声明:本文仅限于技术讨论,严禁用于其他用途。基础知识socket通信模块:针对TCP/IP协议簇进行的程序封装,在Windows/Lin
- 例子一def filter(self, record): """Our custom
- 我们都知道ACCESS是ASP的亲密伙伴。因为两种最简单的东西碰在一起总能迸发出火花。然而,当我们过滤不严格的时候经常出现日文字符,这个时候
- 一、背景希望根据企业名称查询其经纬度,所在的省份、城市等信息。直接将企业名称传给百度地图提供的API,得到的经纬度是非常不准确的,因此希望获
- 在处理数据和进行机器学习的时候,遇到了大量需要处理的时间序列。比如说:数据库读取的str和time的转化,还有time的差值计算。总结一下p
- 引言 今天和测试沟通一个百分比计算方式时遇到一个问题, 我在存储过程里用到了强转
- 1.什么是Pillow首先我们需要了解一下PIL(Python Imaging Library),它是Python2中非常强大的图像处理标准
- 这篇文章主要介绍了python StringIO如何在内存中读写str,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学