网站重构技术:XML,XHTML代码规范,样式表调用方式,CSS布局要点 | WEB前端开发
03-25
网站重构技术:XML,XHTML代码规范,样式表调用方式,CSS布局要点
愚人码头 html+css 围观0次 留下评论 编辑日期: 字体:大 中 小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″>
特殊情况,你需要在属性值里使用双引号,你可以用”,单引号可以使用',例如:
<alt=”say'hello'”>
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》
- 本文固定链接: http://www.css88.com/archives/39
- 转载请注明: 愚人码头 于 WEB前端开发 发表