网站重构技术: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.      收藏夹小图标

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

<link rel="icon" href="/favicon.ico" _fcksavedurl=""/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 _fcksavedurl=""/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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《重构:改善既有代码的设计第2版pdf》是一本由Martin Fowler撰写的软件工程经典之作,讲述了如何通过重构来改善既有代码的设计质量,提高软件系统的可读性、可维护性和可扩展性。这本书详细阐述了重构的原则、实践、技巧和案例,对软件开发人员、架构师和工程师都是非常有益的参考书籍。 重构是一种旨在在不改变软件系统外部行为的前提下修改代码内部结构的技术。通过重构可以消除代码中的重复、提取公共代码、改进函数和类的接口、消除魔法数字和硬编码等不良实践,使代码更加简洁、可读、可维护、可扩展,从而提高软件系统的质量。这本书中提出了多种重构技术,包括重命名、提炼函数、搬移函数、拆分类、合并类等等。通过实际案例的演示,读者可以深入理解每个技术的应用场景,以及如何正确地使用。 此外,《重构:改善既有代码的设计第2版pdf》还介绍了如何在重构时保持代码的正确性和完整性。它详细阐述了测试驱动重构的思想和技术,以及如何使用测试来验证所做的重构是否正确和有效。同时,该书还讲解了如何使用重构来应对软件设计中的问题和挑战,如代码坏味道、代码膨胀、复杂度过高等等。通过阅读本书,读者可以获得许多实用技巧和经验,从而更好地应对日常编码工作中的实际问题。 总之,《重构:改善既有代码的设计第2版pdf》是一本非常优秀的软件工程书籍,它提供了很多实用的技巧和经验,对于想要提高编码水平、提高软件系统质量的人员都是非常有价值的参考。 ### 回答2: 《重构:改善既有代码的设计第2版pdf》是一本非常有价值的书籍,它提供了许多关于重构代码设计方面的实用技巧和建议。在开发软件时,我们通常会遇到需要改进代码的情况,而本书就为我们提供了一些重构代码的方法和原则。 本书的作者Martin Fowler强调了“渐进式重构”的概念,即在不改变系统行为的前提下,逐步改进代码。这样做可以降低风险,同时提高代码质量。他还强调了代码的“坏味道”,指的是代码中常见的一些问题,例如代码冗余、过长的方法或类等,这些问题会导致代码难以维护。 本书还介绍了一些常见的重构技术,例如提炼函数、合并重复的代码、使用多态等。这些技术可以帮助我们改进代码的设计,提高系统的健壮性和可维护性。 总的来说,《重构:改善既有代码的设计第2版pdf》是一个非常有用的书籍,可以帮助软件开发人员更好地重构和改进代码,并提高系统的可维护性和健壮性。通过印刷品将其的阅读体验最佳。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值