• 返回前端专题 >
  • 首页
  • CMS规范
  • 切割规范
  • 脚本规范
  • SEO规范
  • SVN操作说明
XHTML部分
  • 常规说明
  • 代码书写
  • SEO优化
  • 注释的统一写法
  • 测试
CSS部分
  • CSS初始化
  • CSS命名规则
  • CSS书写顺序
  • CSS组合使用
  • CSS归类
  • CSS注释统一写法
文件命名
  • 通用规则
  • CSS文件命名
  • JS文件命名
  • Flash文件命名
目录结构
  • 目录结构
模块库使用规范
  • 模块库使用规范

1. 常规说明

1.1 文档类型声明

目前非特殊情况下我们采用XHTML 1.0 Transitional DTD (一般为:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">),即DreamWeaver 8和cs3版本默认的DTD

1.2 页面编码格式

根据项目文档选择页面编码格式,一般中文项目采用GBK,英文项目采用UTF-8,而程序页一般情况下也采用UTF-8,特殊项目或有特定需求的按需求确定编码格式;

1.3 静态页面XHTML代码编写

静态页面XHTML代码应采用自动缩进的形式编写,这样代码层次结构清晰。正确使用代码缩进,缩进时使用tab(键盘中的TAB键);

2. 代码书写

2.1 模块化书写
2.1.1 书写整体框架:

按照框架结构分为头部(header)、导航(nav)、主体(main)、底部(footer),建立清晰的整体框架。

2.1.2 拆解栏目模块,并进行注释说明:

应严格按照模块化书写方式进行,模块有完整的外包围结构,模块与模块间有清晰的注释(注释方法参看第4节)

2.2 标签语义化书写
2.2.1 使用恰当的标签,减少冗余标签嵌套:
  • div:主要用于布局,分割页面的结构
  • ul/ol:用于无序/有序列表
  • dl,dt,dd:当页面中出现第一行为类似标题/简述,然后下面为详细描述的内容时应该使用该标签
  • span:没有特殊的意义,可以用作排版的辅助,然后在css中定义span
  • h1-h6:标题, 根据重要性依次递减
  • h1:主标题,权重高,一般一个页面不超过1个h1标签。
  • label:使表单更有亲和力而且能辅助表单排版
举例:


未语义化的标签使用方式


语义化的标签使用方式

2.2.2 不推荐使用的标签:

能通过过渡定义的标签,但通不过严格定义。

<font> 文字的外观,大小和颜色(Defines the font face, size, and color of text)
<u> 文本下划线(Defines underlined text)
<center> 句中对齐(Defines centered text)
<s> 删除线(Defines strikethrough text)
<strike> 删除线(Defines strikethrough text)
<noframes> 无视框时的内容(Defines a noframe section)
<iframe> 定义嵌入视图(Defines an inline sub window (frame))
<isindex> 不建议使用(可搜寻,使用input代替)(Deprecated. Defines a single-line input field. Use <input> instead)
<dir> 目录式列举(Defines a directory list)
<menu> 菜单列表(Defines a menu list)
<basefont> 定义基本字体(Defines a base font)
<applet> 定义java程序(Defines an applet)

能通过框架定义验证,不鼓励使用。

<frame> 定义个别视框(Defines a sub window (a frame))
<frameset> 视框格式总定义(Defines a set of frames)

2.3 Id和class的合理搭配

id是指一个元素在整个文档中的"唯一标志",在一个文档里只出现一次;class则表示它所属的"类别",class名可重复使用。

建议在书写时候有选择地使用id和class,一般在书写框架结构的时候可采用id(如#header、#footer),使得文档更为清晰,但是特别注意的是在程序页中,id经常被用在程序处理中,请慎用,防止id冲突。

2.4 制作合理的循环部分
2.4.1 表格的列表方式

在制作cms(针对旧版本cms系统)输出的页面时,如新闻列表等,采用表格的列表方式。

2.4.2 ul/li结构的循环列表

在制作程序输出的页面时,采用ul/li结构的循环列表,减少程序的断行控制和控制页面的体积。

2.5 表单完善设置

表单要使用<form>标签包裹,在<form>标签上避免定义class,如有需要在外层嵌套一层div进行定义样式。

在页面中碰到有单选框、复选框的时候要给单选框、复选框加上<lable></lable>标签。
如下面的代码格式可以让单选框的点击范围扩大:

2.6 正确使用表格

在输出数据列表时使用表格,注意<th>,<td>的合理使用,体现表格结构

2.7 清除浮动统一标记:

清除浮动统一使用

  • clearfix:after{ content:""; height:0; visibility:hidden; display:block; clear:both;}
    .clearfix{ zoom:1;}
    .clear { clear:both }

3. SEO优化

3.1 保证整个页面在未加载css样式表时仍有较好的页面结构。

3.2 重视h标签的使用。

<h1>权重高,体现当前网页中相对比较重要的信息标题,建议一个页面只存在一个
<h2>可以做副标题
<h3>可以做新闻列表
<h4>-<h6>可做相关新闻的列表

3.3 养成"隐藏标题"的习惯

我们在编写一些设计较重的页面的时候(尤其是专题页面),会出现很多图片类型的标题,此时h2中背景使用该图片,但h2中同样要有相应的文字做标题,在CSS中我们可以使用text-indent来将其"隐藏"。

同理,在页面头部的大图片#head中,我们在把图片设置为背景后,同样有必要加入h1及其文字标题内容,然后通过display:none或者text-indent的方法来隐藏它,以此来保证SEO的优化和文档的语义化。

3.4 养成使用a中的title以及img中alt的书写习惯

在很多情况下,a都要使用title来说明该链接的相关说明或目的意义。
例如:当使用overflow隐藏掉a中的溢出文字时,该a中的title是必不可少的,它可以告诉用户被隐藏掉的文字内容是什么;又或者当一个图片型链接出现时,该a中的title同样是必不可少的,它可以告诉用户这个图片链接是做什么用的。

注:仅在<img />里添加alt标签在火狐提示文字是出不来的,alt是图片加载失败或未加载完全时显示出来的提示文字,要想鼠标移上去显示提示信息应该用title,严谨的写法是<img />里加入alt和title这两个标签。

3.5 避免img标签作为布局结构出现在XHTML文档中

所有的图片(除LOGO或Banner)应尽量在CSS中设置为background,在XHTML文档中以DIV的背景呈现出来。

3.6 <strong>及<b>标签的应用

将需要加粗的文字使用<b></b>标签来显示。
将需要强调的文字(主要指包含关键词的信息)使用<strong>标签来强调主要内容。
注:<b>是粗体标签,属于实体标签,它所包围的字符将被设为bold(粗体)。
<strong>是加重语气标签,属于逻辑标签,它的作用是加强字符语气。

3.7 图片替换文字方法(方法之一)

3.8 压缩和正文无关的代码(无用代码的封装)

网页文件大小越小越好,控制在75K以内,用外部调用方式使用CSS样式和JS,将对SEO产生干扰或者负面影响的内容(如:广告和与正文无关的内容)尽量使用<iframe>或者js封装成文件外部调用

4. 注释的统一写法

4.1 模块间注释:<!--注释内容--> <!--/注释内容-->

4.2 程序循环结构注释:<!--loop:注释内容--> <!--/loop:注释内容-->

4.3 Cms输出注释:<!--cms:注释内容--> <!--/cms:注释内容-->

4.4 Tab选项卡内容注释:<!--tab:注释内容--> <!--/tab:注释内容-->

4.5 单行注释:<!--tip:注释内容-->

5. 测试

5.1 浏览器兼容测试

在需求没有特殊说明的情况下需要测试的浏览器有IE6、IE7、IE8、火狐、360、Google Chrome等市场上常用浏览器 (英文Safari,opera)

5.2 固定内容测试

测试在多浏览器下显示的页面是否一致,是否在多浏览器下和设计稿保持一致;

5.3 不确定内容测试

比如网友留言,网友消息,主页日志等,就是版块内容由网友发布,没有固定的格式,宽高和元素等。这时我们就必须模拟各种网友发布的内容,并测试高度自动撑开,宽度扯开,等等。

5.4 分辨率测试

测试分辨率为1024*768的浏览器是否出现横向滚动条

1. CSS初始化

1.1 页面初始化(css reset)统一代码

body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td ,span, object, iframe{ padding: 0; margin: 0; } table { border-collapse: collapse; border-spacing: 0; }
fieldset, img { border: 0; }
ol, ul { list-style: none; }
h1, h2, h3, h4, h5, h6 { font-weight: normal; font-size: 100%; }
q:before, q:after { content:"; }

1.2 清除浮动统一写法

1.
.clear:after { content:"."; display:block; height:0; clear:both; visibility:hidden; }
.clear {+display:none; clear:both }
2.建议
.clearfix:after{ content:""; height:0; visibility:hidden; display:block; clear:both;}
.clearfix{ zoom:1;}
.clear { clear:both }

2. CSS命名规则

2.1 命名可读性:

class 命名采用小写英文字母、数字、下划线的组合,其中不得包含汉字、空格和特殊字符,命名必需有确切的含义,原则上不建议缩写,除非一看就懂的缩写,连字符使用"_"。

2.2 框架型命名(采用语义化命名)

一般而言,CSS类名的语义化声明方式应当考虑你的页面中某个相对元素的"用意",独立于它的"定位"或确切的特性(结构化方式)。像left-bar, red-text, small-title…这些都属于结构化定义的例子。

让我们看看下面这个例子:

而现在我们想把页面中的元素调换一下位置,如果你使用的是结构化方式(1),那么你就要把所有CSS类名重新进行定义,因为它们的位置变了。在布局(3)中,我们看到元素都倒转了: right-bar 现在成了 "left-bar",而 left-content 成了 "right-content"。如果你使用语义化方式则避免了此类问题。

换句话说,使用语义化方式的话,你在修改网站布局的时候可以仅仅修改相关CSS类的属性即可,而不用修改它们的类名了,如果网站的代码很庞大,这将节省大量的时间。

框架型语义化命名清单(必须采用)
  • 全屏: full_bg(全屏背景)
  • 容器: wrapper(最外面的主框架)
  • 页头:header(子项:h_1、h_2、……)
  • 内容:container
  • 页面主体:main
  • 页尾:footer
  • 导航:nav(子项:n_1、n_2、……)
  • 菜单:menu(子项:m_1、m_2、……)
  • 子菜单:submenu
  • 侧栏:sidebar
  • 栏目:column(扩展:column1、column2、……)
  • 左右中:left right center
  • 搜索:search
  • 登陆:signin
2.3 模块型命名:
  • xxx{…} /* 模块名 */
  • xxx_title{…} /* 模块标题 */
  • xxx_con{…} /* 模块内容 */
  • xxx_btm{…} /* 模块底部 */
  • ...

2.4 常用命名:
  • 按钮:btn (例:btn_cancel)
  • 显示隐藏 _on / _off(例:tab_on)
  • 边距:pd_n
  • 更多:more_n
  • 标志:logo
  • 头部广告:banner
  • 广告部分:gg(多个 .gg_n )
  • flash轮播:flash
  • 功能:func

其他请参考附件1。

2.5 字体颜色与链接命名(可与模块型共用,方便管理,如:class="service color_1")
  • 字体:font_n
  • 颜色:.color_n /* 可同时定义链接颜色 */

3. CSS书写顺序

3.1 显示属性
  • display
  • list-style
  • position
  • float
  • clear
3.2 自身属性
  • width
  • height
  • margin
  • padding
  • border
  • background
3.3 文本属性
  • color
  • font
  • text-decoration
  • text-align
  • vertical-align
  • white-space

4. CSS组合使用

一个div容器同时调用两个(或两个以上)不同样式,那么这个div容器的样式属性等于两个(或两个以上)样式的属性加起来,可充分利用此特性来组合使用css,方便管理并减少代码量(如 结构+ 链接样式)

5. CSS归类

CSS书写时应将同类归类放置,便于查找及阅读,不同类之间使用空格隔开。

6. CSS注释统一写法

6.1 头部注释

注明本CSS的用处,生成时间及作者等信息。

6.2 页面注释

有时候一份CSS会把首页和各种二级页面样式写在一起,这时需要做页面注释。

6.3 分级注释

比如在main 模块下,建立了news、photo等栏目,可使用分级注释,以指明层级结构。

6.4 区块间注释

每个模块必需有注释,指明该模块的作用。

6.5 修改注释

当后期维护中有修改到css,需添加修改的注释。

通用规则

文件命名的通用格式为: 作用域_功能_时间

名词解释:
作用域: 公用 pub
私有(以所在站点命名)如: news、forum、game 等等
功能: 表示此文件的作用,如layout、column、font、tab等等
时间: 该文档首次建立的时间,格式为时日,如0908.

CSS文件命名

功能表述参考: 全局 global
布局 layout
评论 comment
投票 vote
文字 font
主题 theme
栏目 column

一般切割后的css 含两份文件,以news站为例,调用公用部分的写为 pub_global_0908.css,自己建立的样式表文件命名为news_layout_0908.css

JS文件命名

命名格式:
原生JS ue.作用域.功能.时间.js
jQuery ue.jq.作用域.功能.时间.js
作用域:

作用域一般分以下几种:

1) 类型:pub 公用js,即是被多个页面引用。如:公用头部,公用底部的js。(public)
2) 类型:pri 为某个特定的页面提供特定功能的。如:图片定时滚动效果。(private)
3) 类型:dis 负责将某个结构输出到页面上的,如图8所示。(display)

如:ue.pub.table.js,ue.jq.tab.js

注意:由于js有前端js和程序js之分,所以前面需多加ue前缀,且下划线改为小圆点表示。

Flash文件命名

功能表述参考: 轮播 player
播放器 player
涂鸦 art
抽奖 draw
广告 banner

如: news_player_0908.swf

目录结构

切割后的页面文件存放按照以下结构存放

  1. 1)css
    存放样失表。
  2. 2)js
    存放js脚本。
  3. 3)images
    存放图片文件,可以根据功能模块分二级三级目录。
  4. 4)flash
    存放flash文件,包括swf及flv。
  5. 5)xml
    存放xml数据,如flash调用的xml。

模块库使用规范

模块库是抽取站群频繁使用的各种代码模块的集合,在制作相应的页面时,可直接引用模块库的代码,具有省时省力,并使得全站群有着统一的代码结构。