网站重构技术:XML,XHTML代码规范,样式表调用方式,CSS布局要点

1. 几个概念

1.1.??????什么是HTML?

HTML是Hypertext Markup Language的英文缩写,即超文本标记语言,是一种用来制作网页的标记语言。

1.2.??????什么是XHTML?

XHTML是The Extensible HyperText Markup Language可扩展标识语言的缩写。在HTML4.0的基础上,用XML的规则对其进行扩展,得到了XHTML。它实现HTML向XML的过渡。

1.3.??????什么是XML?

XML(extensible Markup Language)的出现,结构化文档和数据有了一个通用的、科适应的格式,不仅仅应用在web上,也可以应用在任何地方。标准称为可能。 (*.xsl,*.dtd,*.xml)。

1.4.??????什么是CSS?

CSS是Cascading Style Sheets层叠样式表的缩写。纯CSS布局与结构式XHTML相结合能帮助设计师分离外观与结构,使站点的访问及维护更加容易。 (xsl)

1.5.??????为什么要采用CSS布局代替table布局?

(1) 用css布局的一个好处是可以批量对页面进行修改,它能将文档结构和表现层分离开来,减轻工作量和服务器的负荷,增加站点的扩展能力和应用。

(2) 可以使用表格。只是表格仅仅用于其本意:展示数据列表。而不允许使用表格排版和定位。

1.6.??????什么是web标准?

所谓web标准,不是指XML,而是指为了实现大量HTML信息向XML标准的过渡,W3C和ECMA制定的一系列的技术规范,目前主要包括XHTML1.0、CSS2.0、DOM1.0和ECMA JavaScrit。web标准不仅仅是一个规范,而是一系列规范的总称。 按这些规范制作的网页,符合XML格式规范,内容与表现相分离,将使你的页面数据在以后可以被分享、交换和重用。

2. XHTML代码规范

2.1.?? 所有的标记都必须要有一个相应的结束标记

以前在HTML中,你可以打开许多标签,例如<p>和<li>而不一定写对应的</p>和</li>来关闭它们。但在XHTML中这是不合法的。XHTML要求有严谨的结构,所有标签必须关闭。如果是单独不成对的标签,在标签最后加一个”/”来关闭它。例如:

<br />

<img height=”80″ alt=”网页设计师” src=”../images/logo_w3cn_200x80.gif” width=”200″ />

2.2.?? 所有标签的元素和属性的名字都必须使用小写

与HTML不一样,XHTML对大小写是敏感的,<title>和<TITLE>是不同的标签。XHTML要求所有的标签和属性的名字都必须使用小写。例如:<BODY>必须写成<body> 。大小写夹杂也是不被认可的,通常dreamweaver自动生成的属性名字”onMouseOver”

也必须修改成”onmouseover”。

2.3.?? 所有的XML标记都必须合理嵌套

同样因为XHTML要求有严谨的结构,因此所有的嵌套都必须按顺序,以前我们这样写的代码:

<p><b></p></b>

必须修改为:

<p><b></b></p>

就是说,一层一层的嵌套必须是严格对称。

2.4.??????所有的属性必须用引号””括起来

在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。例如:

<height=80>

必须修改为:

<height=”80″>

特殊情况,你需要在属性值里使用双引号,你可以用”,单引号可以使用&apos;,例如:

<alt=”say&apos;hello&apos;”>

2.5.??????把所有<和&特殊符号用编码表示

. 任何小于号(<),不是标签的一部分,都必须被编码为& l t ;

. 任何大于号(>),不是标签的一部分,都必须被编码为& g t ;

. 任何与号(&),不是实体的一部分的,都必须被编码为& a m p;

注:以上字符之间无空格。

2.6.??????给所有属性赋一个值

XHTML规定所有属性都必须有一个值,没有值的就重复本身。例如:

<td nowrap>

<input type=”checkbox” name=”shirt” value=”medium” checked>

必须修改为:

<td nowrap=”nowrap”>

<input type=”checkbox” name=”shirt” value=”medium” checked=”checked”>

2.7.??????不要在注释内容中使“–”

“–”只能发生在XHTML注释的开头和结束,也就是说,在内容中它们不再有效。例如下面的代码是无效的:

<!–这里是注释———–这里是注释–>

用等号或者空格替换内部的虚线。

<!–这里是注释============这里是注释–>

以上这些规范有的看上去比较奇怪,但这一切都是为了使我们的代码有一个统一、唯一的标准,便于以后的数据再利用。

3. 样式表调用方式

3.1.??????页面内嵌法:

就是将样式表直接写在页面代码的head区。类似这样:

<style type=”text/css”> <!– body { background : white ; color : black ; } –> </style>

3.2.??????外部调用法:

将样式表写在一个独立的.css文件中,然后在页面head区用类似以下代码调用。

<link rel=”stylesheet” rev=”stylesheet” href=”css/style.css” type=”text/css” media=”all” />

3.3.??????双表法调用样式表

查看某些符合标准站点的原代码,你可能看到,在调用样式表的地方有如下2句:

<link rel=”stylesheet” rev=”stylesheet” href=”css/style.css” type=”text/css” media=”all” /> <style type=”text/css” media=”all”>@import url( css/style01.css );</style>

为什么要写两次呢? 实际上一般情况下用外联法调用(就是第一句)就足够了。我这里使用双表调用只是一种示例。其中的”@import”命令用于输入样式表。而”@import”命令在netscape 4.0版本浏览器是无效的。也就是说,当你希望某些效果在netscape 4.0浏览器中隐藏,在4.0以上或其它浏览器中又显示的时候,你可以采用”@import”命令方法调用样式表。

3.4.??????Style属性

<input type=”Text” value=”浅绿色底色” style=”background-color:#ccffcc”>

4. head区的其他设置

4.1.??????设置站点作者信息

<meta name=”author” content=”chinanews” />

4.2.??????设置站点版权信息

<meta name=”copyright” content=”www.chinanews.com,版权所有” />

4.3.??????站点的简要介绍(推荐)

<meta name=”description” content=”中新网新闻中心是中新网最重要的频道之一,24小时滚动报道国内、国际及社会新闻。每日编发新闻数以万计。” />

4.4.??????站点的关键词(推荐)

<meta name=”keywords” content=”新闻,时事,时政,国际,国内,社会,法治,聚焦,评论,文化,教育,新视点,深度,网评,专题,环球,传播,论坛,图片,军事,焦点,排行,环保,校园,法治,奇闻,真情”/>

5. XHTML下css+div布局小结

5.1.??????为页面添加正确的DOCTYPE

DOCTYPE是document type的简写。主要用来说明你用的XHTML或者HTML是什么版本。浏览器根据你 DOCTYPE定义的DTD(文档类型定义)来解释页面代码。

注意:DOCTYPE声明并不是XHTML文档自身的一部分。它也不属于XHTML元素,不需要有关闭标签。

XHTML1.0提供了三种DOCTYPE可选择:

(1)过渡型(Transitional )–使用非常普遍。

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0

Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>

(2)严格型(Strict )

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”

http://www.w3.org/TR/xhtml1/DTD/xhtml1 -strict.dtd”>

(3)框架型(Frameset )

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0

Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”>

5.2.??????设定一个名字空间(Namespace)

直接在DOCTYPE声明后面添加如下代码:

<html XMLns=”http://www.w3.org/1999/xhtml” >

一个namespace是收集元素类型和属性名字的一个详细的DTD,namespace声明允许你通过一个在线地址指向来识别你的namespace。只要照样输入代码就可以。

注意:XHTML文档要求xmlns属性出现在html标签中。然而,w3.org的校验器不会由于这个属性没有出现在你的XHTML文档中而报告错误。这是因为”xmlns=http://www.w3.org/1999/xhtml”是一个固定的值,即使你的文档里没有包含它,它也会自动加上的。

5.3.??????声明你的编码语言

为了被浏览器正确解释和通过标识校验,所有的XHTML文档都必须声明它们所使用的编码语言。代码如下:

<meta http-equiv=”Content-Type” content=”text/html; charset=GB2312″ />

这里声明的编码语言是简体中文GB2312,你如果需要制作繁体内容,可以定义为BIG5。 国际化站点时候通常推荐采用编码为:UTF-8。

5.4.??????用小写字母书写所有的标签

XML对大小写是敏感的,所以,XHTML也是大小写有区别的。所有的XHTML元素和属性的名字都必须使用小写。否则你的文档将被W3C校验认为是无效的。

5.5.??????为图片添加 alt 属性

为所有图片添加alt属性。alt属性指定了当图片不能显示的时候就显示供替换文本,这样做对正常用户可有可无,但对纯文本浏览器和使用屏幕阅读机的用户来说是至关重要的。只有添加了alt属性,代码才会被W3C正确性校验通过。注意的是我们要添加有意义的alt属性,象下面这样的写法毫无意义:

<img src=”logo.gif” alt=”logo.gif”>

正确的写法:

<img src=”logo.gif” alt=”中国新闻社,点击返回首页”>

5.6.??????给所有属性值加引号

在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。还必须用空格分开属性。

例:

<hr width=”75%”size=”7″/>

这也是不正确的

5.7.??????关闭所有的标签

在XHTML中,每一个打开的标签都必须关闭。空标签也要关闭,在标签尾部使用一个正斜杠 “/”来关闭它们自己。例如:

<br />

5.8.??????收藏夹小图标

例如:首先制作一个16×16的icon图标,命名为favicon.ico,放在根目录下。然后将下面的代码嵌入head区:

<link rel=”icon” href=”/favicon.ico” type=”image/x-icon” />

<link rel=”shortcut icon” href=”/favicon.ico” type=”image/x-icon” />

5.9.??????Lang 属性

xml:lang 属性 — 代表xml语言声明,它能指定元素中内容的使用语言

此属性可以使用在任何XHTML或XML标签上

. 此属性符合GNU I18N规范

. 取值:可以参考rfc3066标准

. 如果要在元素中使用lang属性,就必须加上xml:lang属性,像这样:

XHTML文档使用英文

<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en”>

XHTML文档使用中文

<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”zh-CN”>

XHTML文档,”段落一”使用中文,其余使用繁体(下面只是伪代码)

<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”zh-HK”>

?????? <p xml:lang=”zh-CN”>

??????????????段落一

?????? </p>

</html>

说明:

. 如果网页定义为XHTML1.1或者XML格式,那么使用xml:lang属性(因为xml:lang属性是在XML中确定语言信息的标准用法).

. 如果网页使用HTML格式,那么应该同时使用xml:lang和lang属性.

. 此属性常用于html标签中,代表整个文档(文件)使用了某种语言,也可以使用在某个XHTML标签中.

. xml:lang属性可以使搜索引擎了解你的页面使用了何种语言,搜索引擎可以按语言把页面归类,或者启动某些自动翻译系统.xml:lang属性也可以使排版工具了解你的页面使用了何种语言,这样相应的排版工具就可以切换标点符号,转换格式等操作.

5.10. id属性替换name属性

对于a, applet, frame, iframe, img和map元素,HTML 4.01中定义了name属性,而在XHTML中是不能这样做的,应该用id来代替。

这是错误的:

<img src=”picture.gif” name=”picture1″ />

这是正确的:

<img src=”picture.gif” id=”picture1″ />

注: 针对版本比较低的浏览器,应该同时使用name和id属性,并使它们两个的值相同,像这样:

<img src=”picture.gif” id=”picture1″ name=”picture1″ />

兼容提示:

要让XHTML兼容当前的浏览器应该在/标记前添加空格

5.11. 用CSS定义元素外观

css是不区别空格和大小写的,下面是一些基础的归纳

(1)颜色值

颜色值可以用RGB值写,例如:color : rgb(255,0,0),也可以用十六进制写,就象上面例子color:#FF0000。如果十六进制值是成对重复的可以简写,效果一样。例如:#FF0000可以写成#F00。但如果不重复就不可以简写,例如#FC1A1B必须

写满六位。

(2)定义字体

web标准推荐如下字体定义方法:

body { font-family : “Lucida Grande”, Verdana, Lucida, Arial, Helvetica, 宋体,sans-serif; }

字体按照所列出的顺序选用。如果用户的计算机含有Lucida Grande字体,文档将被指定为Lucida Grande。没有的话,就被指定为Verdana字体,如果也没有Verdana,就指定为Lucida字体,依此类推,;Lucida Grande字体适合Mac OS X; Verdana字体适合所有的Windows系统; Lucida适合UNIX用户”宋体”适合中文简体用户; 如果所列出的字体都不能用,则默认的sans-serif字体能保证调用。

(3)群选择器

当几个元素样式属性一样时,可以共同调用一个声明,元素之间用逗号分隔,:

p, td, li { font-size : 12px ; }

(4)派生选择器

可以使用派生选择器给一个元素里的子元素定义样式,例如这样:

li strong { font-style : italic; font-weight : normal;}

就是给li下面的子元素strong定义一个斜体不加粗的样式。

(5)id选择器

用CSS布局主要用层”div”来实现,而div的样式通过”id选择器”来定义。例如我们首先定义一个层

<div id=”menubar”></div>

然后在样式表里这样定义:

#menubar {MARGIN: 0px;BACKGROUND: #FEFEFE;COLOR: #666;}

其中”menubar”是你自己定义的id名称。注意在前面加”#”号。

id选择器也同样支持派生,例如:

#menubar p { text-align : right; margin-top : 10px; }

这个方法主要用来定义层和那些比较复杂,有多个派生的元素。

(6)类别选择器

在CSS里用一个点开头表示类别选择器定义,例如:

.14px {color : #f60 ;font-size:14px ;}

在页面中,用class= “类别名”的方法调用:

<span class=”14px”>14px大小的字体</span>

这个方法比较简单灵活,可以随时根据页面需要新建和删除。

(7)定义链接的样式

CSS中用四个伪类来定义链接的样式,分别是:a:link、a:visited、a:hover和a : active,例如:

a:link{font-weight : bold ;text-decoration : none ;color : #c00 ;}

a:visited {font-weight : bold ;text-decoration : none ;color : #c30 ;}

a:hover {font-weight : bold ;text-decoration : underline ;color : #f60 ;}

a:active {font-weight : bold ;text-decoration : none ;color : #F90 ;}

以上语句分别定义了 “链接、已访问过的链接、鼠标停在上方时、点下鼠标时”的样式。注意,必须按以上顺序写,否则显示可能和你预想的不一样。记住它们的顺序是“LVHA”。

(8)组合使用选择器创造精致的设计效果

用漂亮的图案代替普通无序列表前沉闷的黑点。站点http://marine.happycog.com/

先用css规则告诉类别属性inventory的无序列表。

ul.inventory{

list-style:disc url(/images/common/lister2.gig) inside;}

它的调用标记:

<ul class=”inventory”>

<li><a href=”/angelfish”>Angelfish</a>(67 items)</li>

<li><a href=”/angeld”>Angels/Frogfish</a>(35 items)</li>

<li><a href=”/anthias”>Angelfish</a>(5526 items)</li>

<li><a href=”/basslets”>Angelfish</a>(15 items)</li>

<ul>

(9)缩写是按照顺时针的顺序

margin:25px 0 25px 0;

(10)行高

line-height:150% 说明行距为正常的150%

5.12. 结构化代码div(division)、id、class

用它们来书写紧凑的xhtml,更明智的使用css.

(1)结构化id标签,与class的有区别:

如果你的属性页面包含了一个div,它的id为”content”,它就不可能有另外一个div或者其他元素拥有相同的名字。相反,class属性可以在意个页面中一次又一次地使用。

(2)id的规则

一个id值必须用一个字母或者下划线开头,它不能用一个数字进行开头,然后跟随字母、数字和下划线。空格和连字符-都是不允许的。

5.13. 制作好的网站可以到w3c进行标准校正

http:validator.w3.org

http://jigsaw.w3.org/css-validator/

6. CSS布局要点

CSS布局与传统表格(table)布局最大的区别在于:原来的定位都是采用表格,通过表格的间距或者用无色透明的GIF图片来控制文布局版块的间距;而现在则采用层(div)来定位,通过层的margin,padding,border等属性来控制版块的间距。

6.1.??????定义DIV

分析一个典型的定义div例子:

#sample{ MARGIN: 10px 10px 10px 10px;

PADDING:20px 10px 10px 20px;

BORDER-TOP: #CCC 2px solid;

BORDER-RIGHT: #CCC 2px solid;

BORDER-BOTTOM: #CCC 2px solid;

BORDER-LEFT: #CCC 2px solid;

BACKGROUND: url(images/bg_poem.jpg) #FEFEFE no-repeat right bottom;

COLOR: #666;

TEXT-ALIGN: center;

LINE-HEIGHT: 150%; WIDTH:60%; }

说明如下:

. 层的名称为sample,在页面中用就可以调用这个样式。

. MARGIN是指层的边框以外留的空白,用于页边距或者与其它层制造一个间距。”10px 10px 10px 10px”分别代表”上右下左”(顺时针方向)四个边距,如果都一样,可以缩写成”MARGIN: 10px;”。如果边距为零,要写成”MARGIN: 0px;”。

注意:当值是零时,除了RGB颜色值0%必须跟百分号,其他情况后面可以不跟单位”px”。MARGIN是透明元素,不能定义颜色。

. PADDING是指层的边框到层的内容之间的空白。和margin一样,分别指定上右下左边框到内容的距离。如果都一样,可以缩写成”PADDING:0px”。单独指定左边可以写成”PADDING-LEFT: 0px;”。PADDING是透明元素,不能定义颜色。

. BORDER是指层的边框,”BORDER-RIGHT: #CCC 2px solid;”是定义层的右边框颜色为”#CCC”,宽度为”2px”,样式为”solid”直线。如果要虚线样式可以用”dotted”。

. BACKGROUND是定义层的背景。分2级定义,先定义图片背景,采用”url(../images/bg_logo.gif)”来指定背景图片路径;其次定义背景色”#FEFEFE”。”no-repeat”指背景图片不需要重复,如果需要横向重复用”repeat-x”,纵向重复用”repeat-y”,重复铺满整个背景用”repeat”。后面的”right bottom;”是指背景图片从右下角开始。如果没有背景图片可以只定义背景色BACKGROUND: #FEFEFE .

. COLOR用于定义字体颜色。

. TEXT-ALIGN用来定义层中的内容排列方式,center居中,left居左,right居右。

. LINE-HEIGHT定义行高,150%是指高度为标准高度的150%,也可以写作:LINE-HEIGHT:1.5或者LINE-HEIGHT:1.5em,都是一样的意思。

. WIDTH是定义层的宽度,可以采用固定值,例如500px,也可以采用百分比,象这里的”60%”。要注意的是:这个宽度仅仅指你内容的宽度,不包含margin,border和padding。但在有些浏览器中不是这么定义的,需要你多试试。

6.2.??????CSS2盒模型

自从1996年CSS1的推出,W3C组织就建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落、列表、标题、图片以及层

。盒模型主要定义四个区域:内容(content)、边框距(padding)、边界(border)和边距(margin)。上面我们讲的sample层就是一个典型的盒。对于初学者,经常会搞不清楚margin,background-color,background-image,padding,content,border之间的层次、关系和相互影响。这里提供一张盒模型的3D示意图,希望便于你的理解和记忆。

CSS2盒模型的3D示意图

6.3.??????辅助图片一律用背景处理

用XHTML+CSS布局,有一个技术一开始让你不习惯,应该说是一种思维方式与传统表格布局不一样,那就是:所有辅助图片都用背景来实现。类似这样:

BACKGROUND: url(images/bg_poem.jpg) #FEFEFE no-repeat right bottom;

尽管可以用直接插在内容中,但这是不推荐的。这里的”辅助图片”是指那些不是作为页面要表达的内容的一部分,而仅仅用于修饰、间隔、提醒的图片。例如:相册中的图片、图片新闻中的图片,上面的3d盒模型图片都属于内容的一部分,它们可以用元素直接插在页面里,而其它的类似logo,标题图片,列表前缀图片都必须采用背景方式或者其他CSS方式显示。

这样做的原因有2点:

. 将表现与结构彻底相分离,用CSS控制所有的外观表现,便于改版。

. 使页面更具有易用性,更有亲和力。例如:盲人使用屏幕阅读机,用背景技术实现的图片就不会被朗读出来。

7. 实例讲解

8. Chinanews网站重构实例讲解

9. 资源共享

9.1.????参考手册

. CSS 2 中文手册.chm

. 样式表手册.chm

. 样式表中文滤镜手册.chm

. 网页制作完全手册.chm

. DOM文档对象中文手册.chm

. script56cn.chm

9.2.??????推荐书籍

. web标准的概念和实践推荐Zeldman的《网站重构–用web标准进行设计》

. CSS入门和进阶推荐Eric Meyer的《CSS权威指南》《More Eric Meyer on CSS》

赞(0) 打赏
未经允许不得转载:WEB前端开发 » 网站重构技术:XML,XHTML代码规范,样式表调用方式,CSS布局要点

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏