陈斌彬的技术博客

Stay foolish,stay hungry

HTML 和 CSS 编码规范

一、省略ur地址中的 http:https: 的部分

在引用样式表文件、脚本文件、图片以及其它媒体文件时,都可以这样做,除非使用这两种协议都无法获取到资源,也就是说必须使用其它协议才能获取到资源的,就不能省略啦,只有 http:https: 是可以省略的。这样做的好处是能减少文件的体积,而且还能避免一些相对 url 中混乱问题的产生。

<!-- 不推荐 -->
<script src="http://www.google.com/js/gweb/analytics/autotrack.js"></script>
<!-- 推荐 -->
<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
/* 不推荐 */
.example {
  background: url(http://www.google.com/images/example);
}
/* 推荐 */
.example {
  background: url(//www.google.com/images/example);
}

二、通用代码风格

1、每次缩进两个空格,不要使用 tab 键进行缩进,也不要把 tab 键以及空格混合起来进行缩进。单纯的使用空格进行缩进就好了。

<ul>
  <li>Fantastic
  <li>Great
</ul>

.example {
  color: blue;
}

2、只使用小写,包括标签名、属性名、属性值(一些可以自定义的字符串属性值除外)

<!-- 不推荐 -->
<A HREF="/">Home</A>

<!-- 推荐 -->
<img src="google.png" alt="Google">

三、通用 Meta 规则

1.确保你的 IDE 使用的是 UTF-8 编码来保存文件的,且不要带上 BOM。在定义页面的编码时使用 就好了。在样式表文件里不用去声明 UTF-8 编码什么的。

2.在需要地地方进行注释。

3.用 TODO 来标志代码中需要完善的地方

<!-- TODO: remove optional tags -->
<ul>
  <li>Apples</li>
  <li>Oranges</li>
</ul>

四、HTML书写规则

1.文档类型。HTML5 的文档类型对所有的 html 文档都适用:<!doctype html>。另外,最好使用 html,而不是 xhtml.

2.使用规范化的 html,并使用 W3C HTML validator 之类的工具来进行检测。

<!-- 不规范 -->
<title>Test</title>
<article>This is only a test.

<!-- 规范 -->
<!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<article>This is only a test.</article>

3.使用语义化的 html 标签,根据用途来选择标签。

<!-- 不推荐 -->
<div onclick="goToRecommendations();">All recommendations</div>

<!-- 推荐 -->
<a href="recommendations/">All recommendations</a>

4.把多媒体元素可知化。像图片、视频、动画等多媒体元素,要有相关的文字来体现其内容,比如 <img> 可以使用 alt 属性来说明图片内容。

<!-- 不推荐 -->
<img src="spreadsheet.png">

<!-- 推荐 -->
<img src="spreadsheet.png" alt="Spreadsheet screenshot.">

5.确保页面的 结构、样式、行为三者相分离。确保文档或模板中只包含html,把用到的样式都写到样式表文件中,把脚本都写到 js 文件中。这在多人协作时非常重要。

<!-- Not recommended -->
<!DOCTYPE html>
<title>HTML sucks</title>
<link rel="stylesheet" href="base.css" media="screen">
<link rel="stylesheet" href="grid.css" media="screen">
<link rel="stylesheet" href="print.css" media="print">
<h1 style="font-size: 1em;">HTML sucks</h1>
<p>I’ve read about this on a few sites but now I’m sure:
  <u>HTML is stupid!!1</u>
<center>I can’t believe there’s no way to control the styling of
  my website without doing everything all over again!</center>

<!-- Recommended -->
<!DOCTYPE html>
<title>My first CSS-only redesign</title>
<link rel="stylesheet" href="default.css">
<h1>My first CSS-only redesign</h1>
<p>I’ve read about this on a few sites but today I’m actually
  doing it: separating concerns and avoiding anything in the HTML of
  my website that is presentational.
<p>It’s awesome!

6、优化标签。有些标签是不需要用到的,能少就少。可以参考 HTML5 specification来知道哪些标签是必须的,哪些又是多余的。

<!-- Not recommended -->
<!DOCTYPE html>
<html>
  <head>
    <title>Spending money, spending bytes</title>
  </head>
  <body>
    <p>Sic.</p>
  </body>
</html>

<!-- Recommended -->
<!DOCTYPE html>
<title>Saving money, saving bytes</title>
<p>Qed.

7.省略 <style><script>type 属性

五、HTML代码的格式化

1.为每个块级元素或表格元素标签新起一行,并且对每个子元素进行缩进

<blockquote>
  <p><em>Space</em>, the final frontier.</p>
</blockquote>
<ul>
  <li>Moe
  <li>Larry
  <li>Curly
</ul>
<table>
  <thead>
    <tr>
      <th scope="col">Income
      <th scope="col">Taxes
  <tbody>
    <tr>
      <td>$ 5.00
      <td>$ 4.50
</table>

六、css书写规则

1.使用合法、规范的 css,可以通过 W3C CSS validator来进行验证。

2.ID 和 class 的命名尽可能短,并符合语义。

/* Not recommended */
#navigation {}
.atr {}
/* Recommended */
#nav {}
.author {}

3.尽量少用多重选择器或后代选择器,因为这会影响性能。

/* Not recommended */
ul#example {}
div.error {}
/* Recommended */
#example {}
.error {}

4.使用组合属性。css 中提供了不少的能进行组合属性连写的地方。比如font,margin,padding 等。

/* Not recommended */
border-top-style: none;
font-family: palatino, georgia, serif;
font-size: 100%;
line-height: 1.6;
padding-bottom: 2em;
padding-left: 1em;
padding-right: 1em;
padding-top: 0;

/* Recommended */
border-top: 0;
font: 100%/1.6 palatino, georgia, serif;
padding: 0 1em 2em;

5.如果 css 属性的值为 0 ,则后面不要带上单位。除非真的是需要。

margin: 0;
padding: 0;

6.省略小数前面的 0。比如 0.8 可以写成 .8

7.在 URI 类型的值里不要加上引号。比如 @import url(//www.google.com/css/go.css);

8.如果有可能,尽量使用3个字符的十六进制数。

/* Not recommended */
color: #eebbcc;
/* Recommended */
color: #ebc;

9.使用特定的前缀

.adw-help {} /* AdWords */
#maia-note {} /* Maia */

10.在 ID 和 class 中使用 - 来作为连字符。

/* Not recommended: does not separate the words “demo” and “image” */
.demoimage {}

/* Not recommended: uses underscore instead of hyphen */
.error_status {}
/* Recommended */
#video-id {}
.ads-sample {}

11.避免使用 css hack,首先考虑使用另一种写法来解决。

七、css格式化规则

1.按字母的先后顺序来进行 css 属性的声明,但某些浏览器的私有前缀可以不算进来。

    background: fuchsia;
    border: 1px solid;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    border-radius: 4px;
    color: black;
    text-align: center;
    text-indent: 2em;

2.对处在 {} 中的语句进行缩进。

@media screen, projection {

  html {
    background: #fff;
    color: #444;
  }

}

3.每个 css 属性声明后都要使用一个分号,即使是最后的那个。

/* Not recommended */
.test {
  display: block;
  height: 100px
}

/* Recommended */
.test {
  display: block;
  height: 100px;
}

4.在紧跟属性名的冒号后使用一个空格

/* Not recommended */
h3 {
  font-weight:bold;
}

/* Recommended */
h3 {
  font-weight: bold;
}

5.每一个 css 选择器或是属性声明都要新起一行。

/* Not recommended */
a:focus, a:active {
  position: relative; top: 1px;
}

/* Recommended */
h1,
h2,
h3 {
  font-weight: normal;
  line-height: 1.2;
}

6.在每一个 css 规则之间应该空一行

html {
  background: #fff;
}

body {
  margin: auto;
  width: 50%;
}

参考