HTML5设计原则(3)
作者:赵振宇 发布时间:2012-04-26 16:46:45
同样,这样写也是有效的。它不仅适用于最新版本的浏览器,只要是今天还有人在用的浏览器都同样有效。为什么?因为在我们把这些meta元素输入浏览器时,浏览器会这样解释它:“元数据(meta)点点点点点,字符集(charset)utf-8。”这就是浏览器在解释那行字符串时真正看到的内容。它必须看到这些内容,根据就是伯斯塔尔法则,对不对?
我多次提到鲁棒性原则,但总有人不理解。我们换一种说法,浏览器会想“好,我觉得作者是想要指定一个字符集……看,没错,utf-8。”这些都是规范里明文规定的。如今,不仅那个斜杠可以省了,而且总共只要写meta charset=”utf-8″就行了。
关于省略不必要的复杂性,或者说避免不必要的复杂性的例子还有不少。但关键是既能避免不必要的复杂性,还不会妨碍在现有浏览器中使用。比如说,在HTML5中,如果我使用link元素链接到一个样式表,我说了rel=”stylesheet”,然后再说type=”text/css”,那就是重复自己了。对浏览器而言,我就是在重复自己。浏览器用不着同时看到这两个属性。浏览器只要看到rel=”stylesheet”就够了,因为它可以猜出来你要链接的是一个CSS样式表。所以就不用再指定type属性了。你不是已经说了这是一个样式表了嘛;不用再说第二次了。当然,愿意的话,你可以再说;如果你想包含type属性,请便。
同样地,如果你使用了script元素,你说type=”text/javascript”,浏览器差不多就知道是怎么回事了。对Web开发而言,你还使用其他的脚本语言吗?如果你真想用其他脚本语言,没人会阻拦你。但我要奉劝你一句,任何浏览器都不会支持你。
愿意的话,你可以添加一个type属性。不过,也可以什么都不写,浏览器自然会假设你在使用JavaScript。避免-不必要的-复杂性。
b. Support existing content
支持已有的内容
显然,我们都会考虑让Web的未来发展得更好,但他们则必须考虑过去。别忘了W3C这个工作组中有很多人代表的是浏览器厂商,他们肯定是要考虑支持已有内容的。
再来看几段代码:
< img src = "foo" alt = "bar" /> < p class = "foo" >Hello World</ p > < img src = "foo" alt = "bar" > < p class = "foo" >Hello World < IMG SRC = "foo" ALT = "bar" > < P CLASS = "foo" >Hello World</ P > < img src = foo alt = bar > < p class = foo >Hello World</ p > |
这几段代码有问题吗? 没有, 是的, 完全没有问题!
因为我们讨论的只是编码风格或者写作风格,跟哪种语法正确无关.
在JavaScript,你可以在每条语句末尾加上分号,但不是必需的,因为JavaScript会自动插入分号.
当然这并不阻碍我们用XHTML的语法规范来规约大家书写辨识度高的文档, 当然也可以借由lint工具来为我们验证整个文档的正确性.
我个人认为,不仅对团队来说,就算是你自己写代码,也要坚持一种语法风格。从浏览器解析的角度讲,不存在哪种语法比另一种更好的问题,但我认为,作为专业人士,我们必须能够自信地讲“这就是我的编码风格。”然而,我不认为语言里应该内置这种开关。你可以使用lint工具来统一编码风格。现在就来说说lint工具。大家可以登录htmllint.com,在其中运行你的HTML5文档,它会帮你检查属性值是否加了引号,元素是否小写,你还可以通过勾选复选框来设置其他检查项。
c. solve real problems
解决现实的问题
这看起来有点像再说废话, 谁不是为了解决问题在做事情的呢?
而这条设计原理才是真正要解决今天的人们所面临的现实问题、令人头疼的问题。
好吧, 继续看代码:
< h2 >Heading text</ h2 > < p >Paragraph text.</ p > |
现在我们需要给这两个文本都加上一个链接, 那我们的做法会是什么? 给h2和p分别加上一个a标签? 或许,也有聪明的同学会用a标签来整个包住h2和p,就像:
< a href = "somewhere" > < h2 >Heading text</ h2 > < p >Paragraph text.</ p > </ a > |
这样写有错吗?没错吧?只不过是种不太好的习惯, 并且通不过严格的校验.
但是这样的应用场景肯定存在的, 那为什么不能这样写呢?
这种写法其实早就已经存在于浏览器中了,因为早就有人这样写了,当然以前这样写是不合乎规范的。所以,说HTML5解决现实的问题,其本质还是“你都这样写了很多年了吧?现在我们把标准改了,允许你这样写了。”


猜你喜欢
- 在Bootstrap的官网上,提供了一种导航栏的组件:只要在站点文件夹放好JQ与Bootstrap输入如下代码: <!DOCTYPE
- Python脚本编辑使用Python对fasta格式的序列进行基本信息统计预期设计输出文件中包括fasta文件名,序列长度,GC含量以及AT
- 一、Python简介1.python介绍Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计
- 动画精灵和碰撞检测一、动画精灵动画精灵:四处移动的单个图像或图像部分称为动画精灵(sprite),pygame有一个特殊的模块帮助跟踪屏幕上
- 前言现在正是卡塔尔世界杯激战正酣的时候,每天都有各种各样的新闻。而且,不同的球队,随着比赛的进程,关注的热度也会发生翻天覆地的变化。今天我们
- 题记来自Elasticsearch中文社区的问题——MySQL中表无唯一递增字段,也无唯一递增时间字
- MNIST 数据集介绍MNIST 包含 0~9 的手写数字, 共有 60000 个训练集和 10000 个测试集. 数据的格式为单通道 28
- 由于psutil已更新到3.0.1版本,最新的代码如下:#!/usr/bin/env pythonimport osimport timei
- PyQt5不规则窗口实现动画效果实例import sysfrom PyQt5.QtCore import *from PyQt5.QtGui
- for x in ...循环 就是把每个元素代入变量x,然后执行缩进块的语句。range()函数,可以生成一个整数序列,再通过list()函
- 这里介绍一个nii文件保存为png格式的方法。这篇文章是介绍多个nii文件保存为png格式的方法:https://www.jb51.net/
- 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些不推荐:靠猜测去获取本地IP方法#!/usr/bin/env python
- 一、JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON建
- 本文记录了mysql 8.0.12 安装配置方法,供大家参考,具体内容如下1、从官网下载MySQL for Windows:https://
- 常见的数据增强操作有:按比例放大或缩小图片、旋转、平移、水平翻转、改变图像通道等。1.按比例放大和缩小扩展缩放只是改变图像的尺寸大小。Ope
- 如下所示:hist = model.fit(x,y, epochs=epoch_num, batch_size=32,callbacks=e
- python 实现文件查找和某些项输出本文是基于给定一文件(students.txt),查找其中GPA分数最高的 输出,同时输出其对应的姓名
- 计是一个输入-输出的过程,因为首先有用户的需求,客户的项目才有设计的产生,设计是带有目的性和市场行为的,当然也有一部分的创造性设计,仅仅为了
- 效果是这样的 ↓ ↓ ↓ 一、环境要求windows系统,python3.6+ pip21+开发环境搭建地址一起来学pygame吧
- 众所周知,Python中常常按照key、value的形式来遍历字典的items。若value是基本数据类型(int,float等),则是传的