日志分类:html+css

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

时间:2009年03月25日作者:愚人码头查看次数:2,867 views评论次数: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″>

特殊情况,你需要在属性值里使用双引号,你可以用”,单引号可以使用&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》

分类:html+css

CSS用省略号实现文字自动截断

时间:2009年03月25日作者:愚人码头查看次数:4,484 views评论次数:3

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/html4/loose.dtd“>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
<title>css文字截断____dowhatyouwant</title>
<style>
body{
background-color:#f4f4f4;
font-size:12px;
}
div.test{
width:200px;
height:100px;
border:1px solid red;
border-top:4px solid red;
padding:10px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
</style>
</head>

<body>
<div class=”test”>我来测试一下这个文字截断是不是真的有效果</div>
</body>
</html>

分类:html+css

div+css绝对定位和相对定位

时间:2009年03月25日作者:愚人码头查看次数:3,945 views评论次数:0

很多朋友问过我absolute与relative怎么区分,怎么用?我们都知道absolute是绝对定位,relative是相对定位,但是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对于什么地方而言的呢?那他们又有什么样的特性,可以做出什么样的效果呢?关于两者之间又有什么样的技巧呢?下面我们就来一一解读。

Absolute,CSS中的写法是:position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认依据父级的做标原始点为原始点。如果设定TRBL并且父级没有设定position属性,那么当前的absolute则以浏览器左上角为原始点进行定位,位置将由TRBL决定。

一般来讲,网页居中的话用Absolute就容易出错,因为网页一直是随着分辨率的大小自动适应的,而Absolute则会以浏览器的左上角为原始点,不会应为分辨率的变化而变化位置。很多人出错就在于这点上出错。而网页居左其特性与Relative很相似,但是还是有本质的区别的。

Relative,CSS中的写法是:position:relative;  他的意思是相对定位,他是参照父级的原始点为原始点,无父级则以文本流的顺序在上一个元素的底部为原始点,配合TRBL进行定位,当父级内有padding等CSS属性时,当前级的原始点则参照父级内容区的原始点进行定位。

有时我们还需要依靠z-index来设定容器的上下关系,数值越大越在最上面,数值范围是自然数。但是z-index也不是万能的,z-index也受到了等级的限制,关于这个等级的限制请查看《无法冲破的等级

分类:html+css

dl、dt、dd标签

时间:2009年03月25日作者:愚人码头查看次数:3,121 views评论次数:0

dd、dt标签是是列表用的。

我们平时常用的是<ul>< li>标签,不过dd、dt标签也蛮不错,特别是发布程序的时候功能模块列表什么的可以使用它来排版。

<dl></dl><dt>< /dt><dd>< /dd>
<dl></dl>用来创建一个普通的列表,<dt>< /dt>用来创建列表中的上层项目,<dd></dd>用来创建列表中最下层项目,<dt></dt>和<dd></dd>都必须放在<dl></dl>标志对之间。看一下下边的例子您就会明白了:

创建一个普通列表

引用内容 引用内容
  • <html>
  • <head>
  • <title>一个普通列表</title>
  • </head>
  • <body text=”blue”>
  • <dl>
  •   <dt>中国城市</dt>
  •     <dd>北京 </dd>
  •     <dd>上海 </dd>
  •     <dd>广州 </dd>
  •   <dt>美国城市</dt>
  •     <dd>华盛顿 </dd>
  •     <dd>芝加哥 </dd>
  •     <dd>纽约 </dd>
  • </dl>
  • </body>
  • </html>
       

此例在浏览器中的显示如下:

中国城市
   
北京
   
上海
   
广州
 
美国城市
   
华盛顿
   
芝加哥
   
纽约
分类:html+css

完整xhtml的结构标签

时间:2009年03月25日作者:愚人码头查看次数:2,932 views评论次数:0

结构
body, head, html, title
文本
abbr, acronym, address, blockquote, br, cite, code, dfn, div, em,
h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, var
链接
a
列表
dl, dt, dd, ol, ul, li
表单
form, input, label, select, option, textarea
表格
caption, table, td, th, tr
图片
img
对象
object, param
meta
外部调用
link
基本
base

分类:html+css

详解display:inline | block |inline-block的区别

时间:2009年03月25日作者:愚人码头查看次数:3,362 views评论次数:1

display:block就是将元素显示为块级元素.

block元素的特点是:
总是在新行上开始;
高度,行高以及顶和底边距都可控制;
宽度缺省是它的容器的100%,除非设定一个宽度
<div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子。

display:inline就是将元素显示为行内元素.

inline元素的特点是:
和其他元素都在一行上;
高,行高及顶和底边距不可改变;
宽度就是它的文字或图片的宽度,不可改变。
<span>, <a>, <label>, <input>, <img>, <strong> 和<em>是inline元素的例子。

inline和block可以控制一个元素的行宽高等特性,需要切换的情况如下:

让一个inline元素从新行开始;
让块元素和其他元素保持在一行上;
控制inline元素的宽度(对导航条特别有用);
控制inline元素的高度;
无须设定宽度即可为一个块元素设定与文字同宽的背景色。

display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。

inline-block的元素特点:

     将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。(准确地说,应用此特性的元素呈现为内联对象,周围元素保持在同一行,但可以设置宽度和高度地块元素的属性)

     并不是所有浏览器都支持此属性,目前支持的浏览器有:Opera、Safari在IE中对内联元素使用display:inline-block,IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表症。从上面的这个分析,也不难理解为什么IE下,对块元素设置display:inline-block属性无法实现inline-block的效果。这时块元素仅仅是被display:inline-block触发了layout,而它本就是行布局,所以触发后,块元素依然还是行布局,而不会如Opera中块元素呈递为内联对象。

IE下块元素如何实现display:inline-block的效果?

有两种方法:
1、先使用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(两个display要先后放在两个CSS声明中才有效果,这是IE的一个经典bug,如果先定义了display:inline-block,然后再将display设回inline或block,layout不会消失)。代码如下(…为省略的其他属性内容):

div {display:inline-block;…}
div {display:inline;}

2、直接让块元素设置为内联对象呈递(设置属性display:inline),然后触发块元素的layout(如:zoom:1等)。代码如下:

div {display:inline; zoom:1;…}

以下用个例子来说明三者的区别和用法:

<style>div,span{background-color:green;margin:5px;border:1px solid #333;padding:5px;height:52px;color:#fff;}.b{display:block;}.i{display:inline;}div.ib{display:inline-block;}div.ib{display:inline;}a.ib{display:inline-block;}a.ib{display:block;}span.v{padding:0;margin:0;border:0;vertical-align:middle;height:100%}</style><div>div display:block</div><div class=”i”>div display:inline</div><div class=”ib”>div display:inline-block</div><span>span display:inline</span><span class=”b”>span display:block</span><span><a class=”ib”>a display:block</a></span><br /><div><span class=”v”></span>vertical-align:middle</div>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]

参考:

Blank:display:inline-block的深入理解

小猪之家:display: inline 、block 、inline-block

分类:html+css

用white-space:nowrap;解决中文标签标签换行问题

时间:2009年03月25日作者:愚人码头查看次数:5,634 views评论次数:1

在web2.0的概念中,标签是个时常出现的东东,可是在设计时中文不象英文那样在表现标签云时表现的那么好,主要是中文词组的成为标签后,有时会出现长标签在标签云中被断行的问题。

今天在经典论坛里看贴的时候发现 有人在问这个问题,以前遇到过,没有解决,这次乱试竞然被我试出来了,主要是用 display:inline-block; 这个属性~,具体代码如下:
<style type=”text/css”>
<!–
body{font-size:12px; color:#fff;}
div{width:110px; background:#000;}
span{padding:10px;display:inline-block;}
–>
</style>
<div>
<span>标签</span>
<span>标fdsfsd签</span>
<span>标标</span>
</div>

span里的元素在被定义了 display:inline-block; 这个属性之后,就再也不会被断行了,也不会把外层的 div 撑开(除非span比div还要宽了  ),这样就达到了和英文单词一样的标签云效果了,呵呵~

PS:FF不支持这个属性,还是IE比较人性化啊,哈哈~

PS PS:在群里又被 aoao 指点了一下,发现white-space:nowrap;就可以解决,FF也支持,郁闷啊~
<style type=”text/css”>
<!–
body{font-size:12px; color:#fff;}
div{width:110px; background:#000;}
span{padding:10px;white-space:nowrap;}
–>
</style>
<div>
<span>标</span>
<span>标fdsfsdfdsfdsfsdf</span>
<span>标</span>
</div>

分类:html+css

CSS 缩写技巧

时间:2009年03月25日作者:愚人码头查看次数:3,297 views评论次数:0

Web网站可用性的关键指标是速度,更确切地说,是页面能以多快的速度出现在访问者的浏览器窗口里。影响速度的因素有很多种,包括Web服务器的速度、访问者的Internet连接情况,以及浏览器必须下载的文件大小。尽管你无法控制服务器和连接的速度,但是你可以控制构成网站Web页面的文件大小。

为了让网站能够更快,Web的建设者都会按常规地压缩和优化网站上的每一个图像文件,这常常使得为了将文件的大小减少几个百分点而牺牲了图像的质量。由于CSS样式表是纯文本文件,和图像相比相对较小,所以Web建设者很少考虑采取措施减少其CSS样式表文件的大小。但是,通过使用CSS缩写以及其他的一些简单技巧,你可以在很大程度上减少样式表的大小。在我对自己样式表的一次非正式的特别测试中,我把文件的大小降低了大约25-50%。

使用CSS的缩写性质
CSS的缩写性质(shorthand property)是一些专用的性质名,用来代替多个相关性质的集合。例如,间隙性质(padding property)是顶部间隙(padding-top)、右侧间隙(padding-right)、底部间隙(padding-bottom)和左侧间隙(padding-left)的缩写。

使用速写性质让你能够把多个性质/属性对(property/attribute pair)压缩进CSS样式表的一行代码里。例如,想一想下面的代码:

.sample1 {
margin-top: 15px;
margin-right: 20px;
margin-bottom: 12px;
margin-left: 24px;
padding-top: 5px;
padding-right: 10px;
padding-bottom: 4px;
padding-left: 8px;
border-top-width: thin;
border-top-style: solid;
border-top-color: #000000;
}

将它用一些缩写性质来替代就能够把代码减少为下面这样,两者的实际效果是完全一样的:

.sample1 {
margin: 15px 20px 12px 24px;
padding: 5px 10px 4px 8px;
border-top: thin solid #000000;
}

要注意,缩写性质还有多个属性,每一个(属性)都对应一个被组合进入缩写性质的常规性质。属性由空白隔开。

当属性是类似的值的时候,例如用于边框空白性质(margin property)的线性测量的时候,接在缩写性质之后的属性的顺序很重要。属性的次序是从顶部(顶部的边框空白)开始,然后围绕格子(box)按顺时针次序继续。

如果缩写性质的所有属性都是相同的,那么你可以简单地列出单个属性,然后在前面将它复制四遍。因此,下面的两个性质是相等的:

margin: 5px 5px 5px 5px;

margin: 5px;

类似的,你可以使用接在边框空白或者间隔性质之后的两个属性来代表顶部/底部和右侧/左侧属性对。

margin: 5px 10px 5px 10px;

margin: 5px 10px;

属性的顺序在它们是不相似的值的时候是不重要的。因此,边框颜色、边框风格和边框宽度等属性可以以任何顺序接在大纲性质(outline property)之后。忽略某个属性等同于从样式规则里忽略掉对应的常规性质。

下面是CSS缩写性质的列表以及它们所表示的常规性质。

Background(背景):背景附件、背景颜色、背景图像、背景位置、背景重复
Border(边框):边框颜色、边框风格、边框宽度
border-bottom(底部边框):底部边框颜色、底部边框样式、底部边框宽度
border-left(左侧边框):左侧边框颜色、左侧边框样式、左侧边框宽度
border-right(右侧边框):右侧边框颜色、右侧边框样式、右侧边框宽度
border-top(顶部边框):顶部边框颜色、顶部边框样式、顶部边框宽度
cue(声音提示):前提示、后提示
font(字体):字体、字号、字体样式、字体粗细、字体变体、线高度、字体大小调整、字体拉伸
list-style(列表样式):列表样式图像、列表样式位置、列表样式类型
margin(空白):顶部空白、右侧空白、底部空白、左侧空白
outline(大纲):大纲颜色、大纲样式、大纲宽度
padding(间隙):顶部间隙、右侧间隙、底部间隙、左侧间隙
pause(暂停):后暂停、前暂停
减少空白

减少CSS样式表大小的另一种方法是从文档里删掉大多数无用的空白。换句话说,将每条规则打破放进一行代码里,即把原来插入到代码里用来把每个性质/属性分割到不同行的换行符和缩进符删掉。

例如,下面的代码示例在内容上相同,但是第二个要精炼得多:

h1 {
font-size: x-large;
font-weight: bold;
color: #FF0000;
}

h1 {font-size: x-large; font-weight: bold; color: #FF0000}

删掉注释

将注释从你的CSS代码里删掉是减少文件大小的另一种方式。尽管注释对于代码的阅读很有用,但是它无助于浏览器生成你的Web页面。很多Web建设者都习惯给每一行代码都加上注释,或者至少给每一条规则声明都加上。这样的慷慨注释在CSS样式表里是极少需要的,因为大多数CSS性质和属性都很容易阅读和理解。如果你对类、ID,以及其他的选择器都使用有意义的名称,你就可以省掉大多数的注释,同时仍然能够保持代码的可读性和可维护性。

h1 { /* Heading 1 style*/
font-size: x-large; /* x-large size */
font-weight: bold; /* Bold */
color: #FF0000; /* Red */
}

使用速写性质、删除无用的空白、省略注释都能够在很大程度上减少你CSS样式表文件的大小。这反过来会对加速你Web网站速度的总体目标作出小的、但是可能会是显而易见的贡献。

分类:html+css

在浏览器地址栏前添加自定义的小图标

时间:2009年03月25日作者:愚人码头查看次数:5,556 views评论次数:1

首先,我们需要预先制作一个图标文件,大小为16*16像素。文件扩展名为ico,然后上传到相应目录中。在HTML源文件“<head></head>”之间添加如下代码:<Link Rel=”ICON NAME” href=”http://图片的地址(注意与刚才的目录对应)”>,当然如果用户使用IE5或以上版本浏览时,就更简单了,只需将图片上传到网站根目录下,即可自动识别!

分类:html+css