社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 10823阅读
  • 12回复

[C/C++]〓〓 DIV+CSS 学习(入门)教程 〓〓(内容更新)

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

前言: HrH-e= j  
9K`(Ys&  
今后将陆续转载部分精品学习教程和发一些自己学习中的经验在这里 WleE$ ,  
f D<9k  
希望和大家一起学习 一起进步 )_eEM1  
 $^F L*w  
不论什么样 web2.0的标准已经到来,越来越多的网站开始基于div+css的网页设计当中。 !=7 (3< ?  
0drt,k  
希望提供这些内容给需要的人 1&JPyW  
slC 38  
}&+b\RE  
------------------------------------------------ K}e %E&|>  
?6;9r[ p  
常用CSS缩写语法总结 04`2MNfxG  
使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。css缩写的主要规则如下: [&e|:1  
R_IUuz$e  
颜色 SJg4P4|  
16进制的色彩值,如果每两位的值相同,可以缩写一半,例如: OIpkXM  
#000000可以缩写为#000;#336699可以缩写为#369; &\8qN_`  
I!FIV^}Z(  
盒尺寸 >yr:L{{D}G  
通常有下面四种书写方法: v?Z30?_&h  
 n7g}u  
property:value1; 表示所有边都是一个值value1; or~2r8  
property:value1 value2; 表示top和bottom的值是value1,right和left的值是value2 #NU@7Q[4  
property:value1 value2 value3; 表示top的值是value1,right和left的值是value2,bottom的值是value3 *$K_Tii  
property:value1 value2 value3 value4; 四个值依次表示top,right,bottom,left wKxw|Fpn  
方便的记忆方法是顺时针,上右下左。具体应用在margin和padding的例子如下: T?vM\o%i3  
margin:1em 0 2em 0.5em; . V5Pr}"y  
-|0nZ  
边框(border) %b 8ig1  
边框的属性如下: CD}::7$  
N|JM L  
border-width:1px; &8p]yo2zO  
border-style:solid; =35g:fL  
border-color:#000; +,7nsWV  
可以缩写为一句:border:1px solid #000; %.k~L  
?4k/V6n@y  
语法是border:width style color; o#GZ|9IL  
'q3<R%^Q   
背景(Backgrounds) Z^tTR]u\$  
背景的属性如下: R;mA2:W)x  
|/^ KFY"  
background-color:#f00; 5;WESk  
background-image:url(background.gif); V{jQ=<)@e  
background-repeat:no-repeat; #mT\B[4h  
background-attachment:fixed; z) :LF<  
background-position:0 0; |ry![\  
可以缩写为一句:background:#f00 url(background.gif) no-repeat fixed 0 0; O0Z !*Hy  
k4N_Pa$}\  
语法是background:color image repeat attachment position; F,dPmR  
eELLnU{"  
你可以省略其中一个或多个属性值,如果省略,该属性值将用浏览器默认值,默认值为: {ef9ov Xk  
xUW\P$  
color: transparent nXU`^<nA  
image: none -!@]z2uU  
repeat: repeat DT;n)7+,  
attachment: scroll .(J~:U  
position: 0% 0% 0r_3:#Nn  
字体(fonts) 1U)U{i7j  
字体的属性如下: scc+r  
dDu8n+(8 L  
font-style:italic; 7sX#6`t  
font-variant:small-caps; 'zJBp 9a%  
font-weight:bold; Z=+Tw!wR>  
font-size:1em; 4h*c{do  
line-height:140%; ,=a+;D]'  
font-family:"Lucida Grande",sans-serif; H*.v*ro9_  
可以缩写为一句:font:italic small-caps bold 1em/140% "Lucida Grande",sans-serif; QLm#7ms*y  
&0*7]Wo*  
注意,如果你缩写字体定义,至少要定义font-size和font-family两个值。 yac4\%ze  
p=XEMVqm  
列表(lists) "g5<jp  
取消默认的圆点和序号可以这样写list-style:none;, u Vth&4dh9  
Lo<WK  
list的属性如下: d[F3"b%  
=L\&} kzB  
list-style-type:square; 2tw3 =)  
list-style-position:inside; /$\N_`bM  
list-style-image:url(image.gif); u5.zckV  
可以缩写为一句:list-style:square inside url(image.gif);
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 1 发表于: 2006-07-26
初学CSS和标准建站的一些CSS常用技巧 /*无所不能的CSS的*通配选择符*/ fKbg?  
LVaJyI@/>  
* { ^\oMsU5(  
N0pA ,&  
margin:0; HGao}@'  
padding:0;} r,<p#4(>_  
2Rqpok4  
/*此定义解释:margin:0;padding:0;在CSS最上面先用 * 一次性统一制定,可以避开CSS的"盒模型"考虑问猓?迸龅叫枰?乇? <CcSChCg  
指定margin或padding值的时候在分别另外指定,后面的值将覆盖前面的值。*/ 782 oXyD  
E{'Y>g B6  
kr\#CW0?  
j;<s!A#  
ctoh&5%!n+  
WR9-HPF  
/*CSS中容易被忽视的Outlines 轮廓属性*/ l(pP*2  
问题:为什么加了<a>标签的<img>全部自动加上了蓝色的边缘? 0Of6$`  
因为每个默认<img>的boarder值不为0,可以将boarder设置为0,可以解决问题。 q%/\  
12V-EG i  
img{ \Ez&?yb/  
boarder:0; * EPJeblAV  
display:block; gg.lajX  
}/*此定义解释:boarder:0;可以避免带链接的图片边缘出现蓝色边框。display:block;将图片以块级元素显示*/ Gb4p "3  
'Yaq; mDY  
/*其他还有非常容易<form>,<select>,<input>,影响布局的标签,都可以先将其margin和padding都预先设置为0*/ x21XzGLY|}  
Gs>4/  
-;O"Y?ME  
form{margin:0;padding:0;} Elt" tJ  
select{margin:0;padding:0;} w!b;.l  
input{margin:0;padding:0;} #bS}?fj  
R_=fH\c;  
OD~yIV  
CHVAs9mrNB  
1XpqnyL&  
U J uz  
iX6*OEl/Q  
body{ WQ9VcCY  
margin:0px; N>iNz[a q  
font: normal 12px "宋体", Verdana, Arial, Helvetica,sans-serif; zCS&w ~  
text-align:center; $k+XH+1CW  
color:#000; ~wu\j][2  
line-height:140%;} wkY$J\J  
ctPT=i60  
P\h1%a/D  
%NcBq3  
#top_box R*H-QH/H1  
{width:760px;height:63px; iGBHlw;A  
margin:auto; L=5Y^f'aU  
padding-top:10px; &{bNa:@  
text-align:left; !/]z-z2>  
} 5^{I}Q  
@W=: r/  
a:link,a:visited,a:active{color:#000; text-decoration:none;} \0)2 u[7  
a:hover{color:#ff0000; text-decoration:underline;} @o&UF-=MW(  
!FQS9SoO9  
/*此定义解释:将所有A标签预先指定样式,也可用在CSS最开始一段代码,统一定义*/ 6A4{6B  
YXg^t$  
8\+XtS  
lI3d _cU  
/*有关CSS的其他常见问题及解决办法和分析:*/ aqgm  
{>3w"(f7o  
/*关于CSS容器与CSS元素的适应问题*/ Icx)+Mq  
/*例如有时候我们要在首页动态打印一列十条文章,要放在一个CSS容器DIV内,若每行文字太多,元素很容易破坏容器而使整个布局变坏 ,nWZJ&B  
下面是解决的办法*/ WHr:M/qD  
k;<F33v;Mh  
#nowrap{table-layout:fixed} lr[&*v?h  
t'DIKug&  
<div id="nowrap">文字不折行</div> +D?Re%HI  
=j@8/  
等同于<td nowrap>文字不折行<td> qxHsmGV  
4rypT-%^;  
n>YgL}YZ?  
CSS指定宽度文字自动换行显示: _@Y17L.  
;(s.G-9S  
#wrap{word-break:break-all;width:200px;} k~]\kv=  
<div id="wrap">每200像素宽度文字就自动折行</div> F~3 &@TWi  
lgC^32y  
/*CSS常用缩写规范*/ 7 .xejz  
XeozRfk%J|  
/*缩写示例: scZ'/(b-E  
1.*/ ! H4uc  
OQ _wsAA  
.pop_font{ +}C M2>M  
font: bold 11px "宋体", Verdana, Arial, Helvetica,sans-serif;} mnH1-}oL  
ROj=XM:+  
/*缩写示例: Ws[d.El  
2.*/ tp b(.`G  
|RI77b:pX  
.pop_td{ }9?fb[]  
border-right: 1px solid #C1DAD7;} yjucR Fl  
=@k 3*#\  
{6*{P!H  
/*缩写示例: 9z(h8H  
3.*/ e0<L^|S  
gC/-7/}  
@"`{Sh`Y$  
.pic_background{ 5O"wPsl  
background: transparent url(/images/bullet1.gif) no-repeat 20px 20px; fQ,(,^!;  
padding:2px 0; "Oy&6rrr  
margin:2px 0 2px 0;} Xqas[:)7+  
nb|"dK|  
z|G 39  
XXZ$^W&  
G$ Ii  
Gp))1b';  
/*关于DIV布局中的UL,LI中带ID的CSS属性定义方式:*/ s}":lXkrw  
}UHoa  
<div id="main"> 3yIC@>&y(8  
<ul id="ok1"> !& xc.39  
<li id="li1">文字1</li> jz$83TB-  
<li>文字2</li> Dz&<6#L<  
</ul> _:9-x;0H2  
<ul> evHKq}{  
<li>文字3</li> R P6R1iN3  
</ul> UjQi9ELoJ  
</div> "G!V?~;  
{~:F1J~=  
Gnmxp%&}P|  
/*对 "文字1"定义CSS样式: H>5@/0cL2  
w~=@+U$f  
以下都是正确的指定样式:*/ } g[(h=Qi  
#li1 {/*指定样式代码*/} }[I|oV5*+&  
#main li#li1 {/*指定样式代码*/} `F1 ( v  
#main #ok1 #li1 {/*指定样式代码*/} b."1p7'  
#main ul#ok1 li#li1{/*指定样式代码*/} jR&AQ-H&  
[8.w2\<?  
/*以下都是错误的CSS指定"文字1“的样式:*/ : S |)  
nxh9'"th  
#li{} 9}6^5f?|  
#main ul li1{} IT0*~WMZ  
li1{} hgi9%>o UB  
y|@=j~}Zq  
/*end*/

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 2 发表于: 2006-07-26
CSS的十八般技巧 N G1]!Vz5  
H>e?FDs0*R  
一.使用css缩写 Roy0?6O  
使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。css缩写的主要规则请参看《常用css缩写语法总结》,这里就不展开描述。 uYS?# g  
二.明确定义单位,除非值为0 0i9y-32-  
忘记定义尺寸的单位是CSS新手普遍的错误。在HTML中你可以只写width="100",但是在CSS中,你必须给一个准确的单位,比如:width:100px width:100em。只有两个例外情况可以不定义单位:行高和0值。除此以外,其他值都必须紧跟单位,注意,不要在数值和单位之间加空格。 phUno2fH  
三.区分大小写 rB|D^@mG  
当在XHTML中使用CSS,CSS里定义的元素名称是区分大小写的。为了避免这种错误,我建议所有的定义名称都采用小写。 zGu(y@o  
class和id的值在HTML和XHTML中也是区分大小写的,如果你一定要大小写混合写,请仔细确认你在CSS的定义和XHTML里的标签是一致的。 [zK|OMxoV  
四.取消class和id前的元素限定 9tXLC|yl?  
当你写给一个元素定义class或者id,你可以省略前面的元素限定,因为ID在一个页面里是唯一的,而clas s可以在页面中多次使用。你限定某个元素毫无意义。例如: f 5_n2  
div#content { /* declarations */ } 'Ol}nmJ'n  
fieldset.details { /* declarations */ } B N@*CG  
可以写成 -[v:1\Vv  
#content { /* declarations */ } t/_w}  
.details { /* declarations */ } <dDGV>n4;  
这样可以节省一些字节。  o )cd!,h  
五.默认值 g||{Qmr=1  
通常padding的默认值为0,background-color的默认值是transparent。但是在不同的浏览器默认值可能不同。如果怕有冲突,可以在样式表一开始就先定义所有元素的margin和padding值都为0,象这样: U}6'_ PRQ  
* { X\hD 4r"  
margin:0; FJv=5L  
padding:0; ._=Pa)T  
} [Zl  
六.不需要重复定义可继承的值 x'; 6  
CSS中,子元素自动继承父元素的属性值,象颜色、字体等,已经在父元素中定义过的,在子元素中可以直接继承,不需要重复定义。但是要注意,浏览器可能用一些默认值覆盖你的定义。 vyERt^z  
七.最近优先原则 T%KZV/  
如果对同一个元素的定义有多种,以最接近(最小一级)的定义为最优先,例如有这么一段代码 WhSQ>h!@s  
Update: Lorem ipsum dolor set 9<WMM)  
在CSS文件中,你已经定义了元素p,又定义了一个class"update" Dz]&|5'N  
p { A(W%G|+  
margin:1em 0; ~kYUp5f  
font-size:1em; X7{ueP#L  
color:#333; EkEM|<GNd  
} z* YkD"]B  
.update { y^pk)`y8  
font-weight:bold; -$?xR](f  
color:#600; Eg5|XV  
} 6/wAvPB$  
这两个定义中,class="update"将被使用,因为class比p更近。 R?Ki~'k=  
八.多重class定义  1SP )`Q  
一个标签可以同时定义多个class。例如:我们先定义两个样式,第一个样式背景为#666;第二个样式有10 px的边框。 j@v*q\X&  
.one{width:200px;background:#666;} 8uM>UpX  
.two{border:10px solid #F00;} ,<zGvksk  
在页面代码中,我们可以这样调用 %8>s:YG  
这样最终的显示效果是这个div既有#666的背景,也有10px的边框。是的,这样做是可以的,你可以尝试一下。 &kHp}\  
九.使用子选择器(descendant selectors) 2Auhv!xV  
CSS初学者不知道使用子选择器是影响他们效率的原因之一。子选择器可以帮助你节约大量的class定义。我们来看下面这段代码: GX&BUP\  
Item 1 5CueD]  
Item 1 4cRF3$a md  
Item 1 JWr:/?  
这段代码的CSS定义是: D*o_IrG_(  
div#subnav ul { /* Some styling */ } f/~"_O%  
div#subnav ul li.subnavitem { /* Some styling */ } EQSOEf[  
div#subnav ul li.subnavitem a.subnavitem { /* Some styling */ } u&/q7EBfP  
div#subnav ul li.subnavitemselected { /* Some styling */ } Uy5IvG;O+  
div#subnav ul li.subnavitemselected a.subnavitemselected { /* Some styling */ } @ JZ I  
你可以用下面的方法替代上面的代码 [!]a' T#x  
Item 1 & 1p\.Y  
Item 1 gYA|JFi  
Item 1 R5g -b2Lm  
样式定义是: "fdgBso  
#subnav { /* Some styling */ } --d<s  
#subnav li { /* Some styling */ } 01g=Cg  
#subnav a { /* Some styling */ } {UX?z?0T  
#subnav .sel { /* Some styling */ } yQ}$G ,x  
#subnav .sel a { /* Some styling */ } n1 =B  
用子选择器可以使你的代码和CSS更加简洁、更加容易阅读。 gS_)(  
十.不需要给背景图片路径加引号 4*}[h9J}\  
为了节省字节,我建议不要给背景图片路径加引号,因为引号不是必须的。例如: rmu5K$pl  
background:url("images/***.gif") #333; _G|hKk^,  
可以写为 HYyO/U9z|I  
background:url(images/***.gif) #333; -=iGl5P?  
如果你加了引号,反而会引起一些浏览器的错误。 n$ $^(-g@)  
十一.组选择器(Group selectors) Umjt~K^Z  
当一些元素类型、class或者id都有共同的一些属性,你就可以使用组选择器来避免多次的重复定义。这可以节省不少字节。 RbzSQr>a\  
例如:定义所有标题的字体、颜色和margin,你可以这样写: ye:pGa w  
h1,h2,h3,h4,h5,h6 { rZ2X$FO@  
font-family:"Lucida Grande",Lucida,Arial,Helvetica,sans-serif; Ef{rY|E  
color:#333; P?p>'avP  
margin:1em 0; _*7h1[,{f  
} 7zXFQ|TP  
如果在使用时,有个别元素需要定义独立样式,你可以再加上新的定义,可以覆盖老的定义,例如: 1j0OV9-|  
h1 { font-size:2em; } T]-yTsto  
h2 { font-size:1.6em; } {a^A-Xh[u  
十二.用正确的顺序指定链接的样式 o(w!x!["  
当你用CSS来定义链接的多个状态样式时,要注意它们书写的顺序,正确的顺序是::link :visited :hover :active。抽取第一个字母是"LVHA",你可以记忆成"LoVe HAte"(喜欢讨厌)。 n|2`y?  
如果你的用户需要用键盘来控制,需要知道当前链接的焦点,你还可以定义:focus属性。:focus属性的效果也取决与你书写的位置,如果你希望聚焦元素显示:hover效果,你就把:focus写在:hover前面;如果你希望聚焦效果替代:hover效果,你就把:focus放在:hover后面。 aDmyr_f$  
十三.清除浮动 v,y nz'>)  
一个非常常见的CSS问题,定位使用浮动的时候,下面的层被浮动的层所覆盖,或者层里嵌套的子层超出了外层的范围。 ^!^6 |[  
通常的解决办法是在浮动层后面添加一个额外元素,例如一个div或者一个br,并且定义它的样式为clear: both。这个办法有一点牵强,幸运的是还有一个好办法可以解决 0T7(c-  
十四.横向居中(centering) =F'p#N0_2  
这是一个简单的技巧,但是值得再说一遍,因为我看见太多的新手问题都是问这个:CSS如何横向居中?你需要定义元素的宽,并且定义横向的margin,如果你的布局包含在一个层(容器)中,就象这样: +^ a9i5  
你可以这样定义使它横向居中: B!-hcn]y  
#wrap { (XA=d 4  
width:760px; /* 修改为你的层的宽度 */ (;v)0&h  
margin:0 auto; YL-/z4g  
} WA}<Zme3[  
但是IE5/Win不能正确显示这个定义,我们采用一个非常有用的技巧来解决:用text-align属性。就象这样: cpvN }G  
body { @Gp=9\L  
text-align:center; Mx<z34(T  
} Xou1X$$z  
#wrap { j(^ot001%v  
width:760px; /* 修改为你的层的宽度 */ ^7M hnA  
margin:0 auto; e~R; 2bk  
text-align:left; KilgeN:  
} zvjVM"=G  
第一个body的text-align:center; 规则定义IE5/Win中body的所有元素居中(其他浏览器只是将文字居中) ,第二个text-align:left;是将#warp中的文字居左。 L[l ?}\  
十五.导入(Import)和隐藏CSS %pj 6[x`@  
因为老版本浏览器不支持CSS,一个通常的做法是使用@import技巧来把CSS隐藏起来。例如: MV +R$  
@import url("main.css"); ?CO\jW_ *n  
然而,这个方法对IE4不起作用,这让我很是头疼了一阵子。后来我用这样的写法: 2WQKj9iyN  
@import "main.css"; @_"B0$,-i  
这样就可以在IE4中也隐藏CSS了,呵呵,还节省了5个字节呢。 Vp8t8X1`  
十六.针对IE的优化 @sQ^6FK0G  
有些时候,你需要对IE浏览器的bug定义一些特别的规则,这里有太多的CSS技巧(hacks),我只使用其中的两种方法,不管微软在即将发布的IE7 beta版里是否更好的支持CSS,这两种方法都是最安全的。 iEx.BQ+  
1.注释的方法 #o Rm-yDr  
(a)在IE中隐藏一个CSS定义,你可以使用子选择器(child selector): dxqVZksg(9  
html>body p { b3(pRg[Fp  
/* 定义内容 */ tHNvb\MR$  
} *hVbjI$  
(b)下面这个写法只有IE浏览器可以理解(对其他浏览器都隐藏) l`lo5:w  
* html p { dw %aoe  
/* declarations */ vZV+24YWb  
} .d< +-w2Mu  
(c)还有些时候,你希望IE/Win有效而IE/Mac隐藏,你可以使用"反斜线"技巧: u@|izRk  
/* \*/ 3:Bwf)*  
* html p { }e3M5LI1L  
declarations &`>[4D*  
} :}d`$2Dz  
/* */ .qVz rS  
2.条件注释(conditional comments)的方法 6BIP;, M=  
另外一种方法,我认为比CSS Hacks更加经得起考验就是采用微软的私有属性条件注释(conditional comments)。用这个方法你可以给IE单独定义一些样式,而不影响主样式表的定义。就象这样: qW]gp7jK4  
十七.调试技巧:层有多大? w:Ui_-4*>  
当调试CSS发生错误,你就要象排版工人,逐行分析CSS代码。我通常在出问题的层上定义一个背景颜色,这样就能很明显看到层占据多大空间。有些人建议用border,一般情况也是可以的,但问题是,有时候border 会增加元素的尺寸,border-top和boeder-bottom会破坏纵向margin的值,所以使用background更加安全些。 TR!^wB<F  
另外一个经常出问题的属性是outline。outline看起来象boeder,但不会影响元素的尺寸或者位置。只有少数浏览器支持outline属性,我所知道的只有Safari、OmniWeb、和Opera。 5 e:Urv77  
十八.CSS代码书写样式 `(A6uakd  
在写CSS代码的时候,对于缩进、断行、空格,每个人有每个人的书写习惯。在经过不断实践后,我决定采用下面这样的书写样式: {zoUU  
selector1, 4 -)'a} O  
selector2 { ,4y' (DA  
property:value; Z=%+U _,  
} r\]yq -_  
当使用联合定义时,我通常将每个选择器单独写一行,这样方便在CSS文件中找到它们。在最后一个选择器和大括号{之间加一个空格,每个定义也单独写一行,分号直接在属性值后,不要加空格。 V~LZ%NZ8  
我习惯在每个属性值后面都加分号,虽然规则上允许最后一个属性值后面可以不写分号,但是如果你要加新样式时容易忘记补上分号而产生错误,所以还是都加比较好。 ||v=in   
最后,关闭的大括号}单独写一行。 t}-[^|)7  
空格和换行有助与阅读。

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 3 发表于: 2006-07-26
定义标题的最好方法 O;[PEV ~  
~J2-B2S!  
一个文档标题,最好的定义方法是什么?要回答这个问题,先设想我们要在一个页面上定义文章的标题,通常我们有三个方法来实现这个简单目的: (PGmA>BT  
`.;7O27A^%  
}7hpx!s,  
方法一: 有意义吗? (Wr;:3i  
<span class="heading">文章标题</span> 8DTk<5mW~  
虽然在某些情况下<span>会是一个方便的标签,但它并不能表达出标题的完整含义。采用这个方法的一个好处是,我们可以对它附加一个CSS规则,分配其一个heading class,使其文字象标题一样显示。 `.a L>hf  
.heading { 567ot|cc  
font-size: 24px; t^?8Di\  
font-weight: bold; A`(p6 H"s  
color: blue; N-^\X3X  
}
/6{`6(p  
q<>2}[W  
}SitT\%  
ok,现在所有的标题都用heading class标记成了大号的粗体字体,并且为蓝色。太棒了!但是这样做对吗?如果有人用一个不支持CSS的浏览器来观看,会怎样呢? }=A6Jv(j  
举个例子,如果我们设置的这个外部样式表的规则不被老版本的浏览器支持,会怎样?又或者有视觉障碍的人用屏幕阅读器来阅读这个页面,又会怎样?一个访问者通过这些途径所看到(或听到)的应该和这个页面上正常的文本没有任何区别。 ZC"6B(d  
Qm`f5-d  
M0Z>$Az]t  
尽管class="heading"为这个标签增加了一点意义,但<span>仍然只是一个普通的标签,可以被大多数浏览器的缺省样式所修改掉。 QZ{&7mc>  
L:Wy- Z  
^S ,E"Q  
搜索引擎检索这个页面时会略过<span>标签,就好象它不存在一样,不会对其可能包含的关键字给于一点额外的重视。在后面我们会更多的谈到搜索引擎和标题的关系。 CcY.8|HT  
} Q1$v~  
1)_f9GR  
最后,由于<span>标签是一个内嵌元素,我们可能需要把它嵌套在一个额外的块级元素中,比如<p>标签或<div>标签,为的是使它能够形成单独的行,这会进一步被非必要的代码弄乱你的标签。而这些额外增加的标签却是必须的,这样才能使不支持CSS的浏览器显示出没有差别的文本。 ?P`wLS^;  
>[|:cz  
1bzPBi  
方法二:<p>和<b>组合 5B'-&.Aj+  
<p><b>文章标题</b></p> 6FEtq,;0w  
使用一个段落标签,将会给我们带来块级的显示,<b>会把文本变成粗体。但是用这个方法标记一个重要的标题时,我们面对的是同样无意义的结果。 JS(KCY9  
不象方法A,<b>标签能在可视化的浏览器中把文字显示成粗体——甚至在不支持CSS的浏览器中。但是和<span>标签一样,搜索引擎也不会因为有一些东西在段落中被加粗了而给予更高的优先。 w41#? VC/  
Jq6p5jr"  
ac+7D:X  
难以设计样式 *\VQ%_wg  
用普通的<p>和<b>的组合,也带来了另一个缺憾——无法把这个标题设计成不同于其他段落的样式。我们可能想用一个特别的样式来突出标题,来使页面内容更清晰更具结构,但是用这个方法只能使其显示成粗体。 Br#]FB|tD  
[Hd^49<P2  
=1yUH9\,b  
方法三:样式加实质 gFDP:I/`  
<h1>文章标题</h1> ?\vJ8H[bD  
恩,多么好的标题定义。大多数的网页设计者对它都很熟悉。其实适当的使用它们,<Hn> 就能为页面内容提供灵活的、可索引的、以及可样式化的结构。 8(3vNuyP  
这也是聪明的定义方法,你会发现它很简单。不再需要额外的标签,你可以说,这仅仅比另外两个方法节省了一点点的字节,可以忽略不计,但节省一点是一点。 \XRViG,|5  
<h1>一直到<h6>,代表了标题的六个级别,从最重要的(<h1>)到最次要的(<h6>)。他们本身就是块级的,不需要增加其它元素来使其单独成行。简单,有效——就是好工具。 rcI(6P<*  
iZjvO`@[  
Tr@`ozp8  
轻松定制样式 Mqc[IAcd]  
因为我们使用<h1>标签是唯一的,而<b>或<p>标签更适合使用在整个页面,所以我们可以用各种各样的CSS方法来样式化。 @.0jC=!l  
更重要的是,尽管完全不用样式,一个标题标签也能明显的表示出一个标题!可视化的浏览器把 <h1>显示成更大的粗体。一个非样式化的页面将以被期望的那样显示文档结构,用适当的标题标签来传达意思。 uaU!V4-  
$%1[<}<  
+e ?ixvld  
屏幕阅读器、PDA、手机、以及可视化的和非可视化的浏览器都会明白,碰到一个标题标签时该做的事情,正确的处理,比页面上的普通文本更重视的来对待。而使用<span>标签,那些不支持CSS的浏览器就不会特别的对待它。 fd+kr#  
N# ,4BU  
m@zxjIwT  
讨厌的默认样式 uL-i>!"L!}  
以往,由于浏览器默认的缺省值非常的丑陋,设计者们也许会避免完全的使用标题标签。或者,因为缺省值的巨大尺寸而避免使用<h1>或<h2>,取而代之的是用更高数值的标题标签来实现更小的尺寸。 8l='Hl  
d+&V^qLJ  
e'\I^'`!M  
Opjt? ]  
然而,需要重点强调的是,我们可以很简单的用CSS来改变这些标题标签——举个例子,一个< ;h1>并非一定是占满大半屏幕的巨大标版。在后面,我将证明用CSS来样式化标题标签是多么的简单,希望可以帮助你减轻巨大的恐惧。 <EBp X   
H[>_LYZ8  
+,|-4U@dl  
k.lnG5e  
对搜索引擎友好的 /AMtT%91  
这是一个巨大的好处。搜索引擎喜欢标题标签。另一方面,一个<span>标签或者普通的加粗的段落标签却在意味着次要一点。适当的用<h1>到<h6>标记你的标题,只需要你的一点点努力,然而却让搜索引擎更容易的检索到你的页面,让人们最终能找到它们。 u|QfCwQ  
搜索引擎机器人会给予标题标签特别的关注——这是你可能放置一些关键词的地方。就象检索到 <title>和<meta>,它们会顺着标题标签往页面下面查找。如果你不使用这些标签,那么包含在里面的关键词将不会被认为是有价值的,从而被忽略掉。 ie$=3nZJ}  
所以只要付出一点点的努力,你就能增加人们基于页面的内容找到你的站点的可能性。听上去不错,不是吗? l>qCT  
vxqMo9T  
&0>{mq}p,:  
Hfc^<q4a.  
关于标题的次序 |_w*:NCV5  
在范例中,这个特别的标题是页面中最重要的,因为它是文档的标题。因此,我们使用最重要的标题标签,<h1>。顺应W3C的规范,一些人认为跳过数个标题级是个不好的使用。举个例子,想象我们在下面的页面: %< W1y  
Kjf#uU.7  
'm2,7]  
<h1>文章标题</h1> w e} sC,  
我们接下去的标题(如果不是用另一个<h1>重复的话)应该是<h2>,然后是<h3 >,等等。你也许不应该在<h1>后面跳过一级,直接跟上<h3>。我倾向于同意以上的观点,顺着行文保持级别的连续性,来构造一个排版结构。这样的话,给一个已经存在的页面添加标题和样式就更容易了,你会减少因使用超出的数字而导致的错误。 2}}~\C}o+  
前面提到的,设计者也许会用<h4>来标签一个页面上最重要的标题,仅仅是因为它的缺省的字体尺寸不象<h1>那样令人生厌的巨大。但是记住,先结构,后设计。我们总是能用CSS来把标题样式化成任何我们喜欢的文字尺寸。

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 4 发表于: 2006-07-26
HTML4标签的默认样式列表 H/L3w|2+  
-_4! id  
,]cd%w9  
.4^Paxz  
html, address, mYy3KqYu  
blockquote, S((8DSt*  
body, dd, div, ?&X6VNbU  
dl, dt, fieldset, form, pixI&iQ  
frame, frameset, :JN3@NsK  
h1, h2, h3, h4, Zv-6H*zM6  
h5, h6, noframes, Yb6\+}th  
ol, p, ul, center, xv%}xeE V  
dir, hr, menu, pre   { display: block } Awr]@%I  
li         { display: list-item } pD>3c9J'^F  
head         { display: none } '8Gw{&&  
table       { display: table } |j!D _j#U  
tr         { display: table-row } Qy$QOtrv  
thead       { display: table-header-group } nut7b  
tbody       { display: table-row-group } CjST*(,b  
tfoot       { display: table-footer-group } ZU@V]+ww  
col         { display: table-column } !l\pwfXP&%  
colgroup     { display: table-column-group } P`oR-D  
td, th       { display: table-cell; } .K93VTzy  
caption       { display: table-caption } K{iay g!k  
th         { font-weight: bolder; text-align: center } tou^p-)GQ|  
caption       { text-align: center } I3L1|!  
body         { margin: 8px; line-height: 1.12 } '+eP%Y[W%  
h1         { font-size: 2em; margin: .67em 0 } %kUJ:lg;d  
h2         { font-size: 1.5em; margin: .75em 0 } L*l( ~t)vF  
h3         { font-size: 1.17em; margin: .83em 0 } 1";~"p2(  
h4, p, MUo?ajbqOd  
blockquote, ul, 4Cfwz-Qo  
fieldset, form, %EpK=;51U  
ol, dl, dir, 3gM{lS}h#  
menu         { margin: 1.12em 0 } [Ytia#Vv  
h5         { font-size: .83em; margin: 1.5em 0 } _AO0:&  
h6         { font-size: .75em; margin: 1.67em 0 } TcIUo!:z  
h1, h2, h3, h4, K)v(Z"  
h5, h6, b, <AIsNqr  
strong       { font-weight: bolder } @2u<Bh}}  
blockquote     { margin-left: 40px; margin-right: 40px } MVj@0W33m  
i, cite, em, YM;^c% _7  
var, address   { font-style: italic } %z.G3\s0  
pre, tt, code, cshUxabB  
kbd, samp     { font-family: monospace } DTJ  
pre         { white-space: pre } pQ/:*cd+M  
button, textarea, ZD<,h` lZ  
input, object, V|D;7  
select       { display:inline-block; } y#MLxm  
big         { font-size: 1.17em } _I!Xr!!)a0  
small, sub, sup { font-size: .83em } A1@-;/H3  
sub         { vertical-align: sub } ^w HMKC  
sup         { vertical-align: super } 226s:\d  
table       { border-spacing: 2px; } H z6H,h  
thead, tbody, \uYUX~}i"  
tfoot       { vertical-align: middle } = MXF`k^}  
td, th       { vertical-align: inherit } :.~a[\C@V<  
s, strike, del { text-decoration: line-through } c`>\R<Z ]  
hr         { border: 1px inset } :X!(^ a;]  
ol, ul, dir, WLpn,8qsY  
menu, dd     { margin-left: 40px } tL5Xfd?u  
ol         { list-style-type: decimal } d.+vjMI  
ol ul, ul ol, GWW@8GNI  
ul ul, ol ol   { margin-top: 0; margin-bottom: 0 } )FP|}DCxQ  
u, ins       { text-decoration: underline } ! $iR:ji  
br:before     { content: "\A" } V ": BAn  
:before, :after { white-space: pre-line } _(jE](,  
center       { text-align: center } A`r9"([-A  
abbr, acronym   { font-variant: small-caps; letter-spacing: 0.1em } JTI m`t"d=  
:link, :visited { text-decoration: underline } wv7jh~x(4  
:focus       { outline: thin dotted invert } !69^ kIi$  
/* Begin bidirectionality settings (do not change) */ MJb = +L  
BDO[DIR="ltr"] { direction: ltr; unicode-bidi: bidi-override } =j{jylC  
BDO[DIR="rtl"] { direction: rtl; unicode-bidi: bidi-override } )&9 =)G  
*[DIR="ltr"]   { direction: ltr; unicode-bidi: embed } zm:=d>D..  
*[DIR="rtl"]   { direction: rtl; unicode-bidi: embed } e!8_3BE  
@media print { d5%*^nMpY  
h1         { page-break-before: always } MT5A%|He  
h1, h2, h3, <\8   
h4, h5, h6   { page-break-after: avoid } g IKm  
ul, ol, dl   { page-break-before: avoid } SQ!lgm1bA  
} A)#sh) }Q  
D 6]$P%t9  
@r43F$bcqo  
'2tEKVb  
3oKGeB;Ja  
-------------------------------------------------------------------------------- HLk"a-+'  
{q)B@#p  
同一个页面用多个id有什么影响 :2My|3H\  
e^GW[lT  
a(~Yr A%~  
L1xD$wl  
rrWk&;?  
在样式表定义一个样式的时候,可以定义id也可以定义class,例如: v(h Xk]S  
+m.8*^  
ID方法:#test{color:#333333},在页面中调用<div id="test">内容<div> of`]LU:  
CLASS方法:.test{color:#333333},在页面中调用<div class="test">内容<div> t/1NTa  
id一个页面只可以使用一次,class可以多次引用。 @e,Zmx  
GN9_ZlC  
有网友问,id和class好象没什么区别,我在页面中用了多个id在IE中显示也正常,用多个id有什么影响吗? _e_%U<\4  
O)|4>J*B  
回答:第一影响就是不能通过W3的校验。 0q>lW &J  
AL7O-D  
在页面显示上,目前的浏览器还都允许你犯这个错误,用多个相同ID“一般情况下”也能正常显示。但是当你需要用JavaScript通过id来控制这个div,那就会出现错误。 lnWi E}F  
% 4"~O _S  
id是一个标签,用于区分不同的结构和内容,就象你的名字,如果一个屋子有2个人同名,就会出现混淆; 3R*@m  
class是一个样式,可以套在任何结构和内容上,就象一件衣服; N]}+F w\5  
概念上说就是不一样的: }# x3IE6'  
id是先找到结构/内容,再给它定义样式;class是先定义好一种样式,再套给多个结构/内容。 UK>=y_FYO  
RG3G},Q   
web标准希望大家用严格的习惯来写代码, D,j5k3< #  
HdUW(FZ  
例如:你可以用<b></b>显示粗体,也可以用<strong></strong>来显示,但W3C 建议大家用<strong>,因为<strong>更有语义

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 5 发表于: 2006-07-26
捷足先登学用CSS:HTML结构化 i{ @'\}{L  
rOHW  
mMAr8~ A=  
你正在学习CSS布局吗?是不是还不能完全掌握纯CSS布局?通常有两种情况阻碍你的学习: K=?F3tX^  
TDE1z>h+"  
第一种可能是你还没有理解CSS处理页面的原理。在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构,然后再针对语义、结构添加CSS。这篇文章将告诉你应该怎样把HTML结构化。 #(+HSZm  
w a<C*o  
另一种原因是你对那些非常熟悉的表现层属性(例如:cellpadding,、hspace、align="left"等等)束手无策,不知道该转换成对应的什么CSS语句。当你解决了第一种问题,知道了如何结构化你的HTML,我再给出一个列表,详细列出原来的表现属性用什么CSS来代替。 Yb3f]4EH  
-xu.=n@,  
结构化HTML $A@3ogoS&  
我们在刚学习网页制作时,总是先考虑怎么设计,考虑那些图片、字体、颜色、以及布局方案。然后我们用Photoshop或者Fireworks画出来、切割成小图。最后再通过编辑HTML将所有设计还原表现在页面上。 x5z4Yv^ m  
ynbpewaa  
如果你希望你的HTML页面用CSS布局(是CSS-friendly的),你需要回头重来,先不考虑“外观”,要先思考你的页面内容的语义和结构。 0o$HC86w  
w1#jVcUQ  
外观并不是最重要的。一个结构良好的HTML页面可以以任何外观表现出来,CSS Zen Garden是一个典型的例子。CSS Zen Garden帮助我们最终认识到CSS的强大力量。 fEG3b#t N  
Z)i1?#  
HTML不仅仅只在电脑屏幕上阅读。你用photoshop精心设计的画面可能不能显示在PDA、移动电话和屏幕阅读机上。但是一个结构良好的HTML页面可以通过CSS的不同定义,显示在任何地方,任何网络设备上。 eQVPxt2N  
.S'fM]_#  
开始思考 '#i]SU&*  
首先要学习什么是"结构",一些作家也称之为"语义"。这个术语的意思是你需要分析你的内容块,以及每块内容服务的目的,然后再根据这些内容目的建立起相应的HTML结构。 W}2 &Pax  
_#D\*0J  
如果你坐下来仔细分析和规划你的页面结构,你可能得到类似这样的几块: !8@rK$DB  
C$td{tM  
标志和站点名称 )cK  tc  
主页面内容 V"by9p|V`  
站点导航(主菜单) d6@jEa-  
子菜单 ?hJsN  
搜索框 IO!1|JMr6  
功能区(例如购物车、收银台) n *i'vtQ8  
页脚(版权和有关法律声明) QYTTP6 Gz+  
我们通常采用DIV元素来将这些结构定义出来,类似这样: "-Q Rkif  
u:uSsAn0$  
<div id="header"></div> ( OyY_`  
<div id="content"></div> f;Bfh3  
<div id="globalnav"></div> uH&,%k9GVK  
<div id="subnav"></div> HA9Nr.NqC@  
<div id="search"></div> QI#*5zm  
<div id="shop"></div> E/7vIg F  
<div id="footer"></div> %g0z) J  
N+s?ZE*  
这不是布局,是结构。这是一个对内容块的语义说明。当你理解了你的结构,就可以加对应的ID在DIV上。DIV容器中可以包含任何内容块,也可以嵌套另一个DIV。内容块可以包含任意的HTML元素---标题、段落、图片、表格、列表等等。 YNg\"XjJM<  
du'}+rC  
根据上面讲述的,你已经知道如何结构化HTML,现在你可以进行布局和样式定义了。每一个内容块都可以放在页面上任何地方,再指定这个块的颜色、字体、边框、背景以及对齐属性等等。 1t[;`iZ  
]]uzl0LH  
使用选择器是件美妙的事 <p^*Ydx  
id的名称是控制某一内容块的手段,通过给这个内容块套上DIV并加上唯一的id,你就可以用CSS选择器来精确定义每一个页面元素的外观表现,包括标题、列表、图片、链接或者段落等等。例如你为#header写一个CSS规则,就可以完全不同于#content里的图片规则。 Z<N&UFw7QJ  
Rnj Jg?I=  
另外一个例子是:你可以通过不同规则来定义不同内容块里的链接样式。类似这样:#globalnav a:link或者 #subnav a:link或者#content a:link。你也可以定义不同内容块中相同元素的样式不一样。例如,通过#content p和#footer p分别定义#content和#footer中p的样式。从结构上讲,你的页面是由图片、链接、列表、段落等组成的,这些元素本身并不会对显示在什么网络设备中(PDA还是手机或者网络电视)有影响,它们可以被定义为任何的表现外观。 OY^n0Zof,  
Gf H*,1x  
一个仔细结构化的HTML页面非常简单,每一个元素都被用于结构目的。当你想缩进一个段落,不需要使用blockquote标签,只要使用p标签,并对p加一个CSS的margin规则就可以实现缩进目的。p是结构化标签,margin是表现属性,前者属于HTML,后者属于CSS。(这就是结构于表现的相分离.) H-_^TB  
I mPu}  
良好结构的HTML页面内几乎没有表现属性的标签。代码非常干净简洁。例如,原先的代码<table width="80%" cellpadding="3" border="2" align="left">,现在可以只在HTML中写<table>,所有控制表现的东西都写到CSS中去,在结构化的HTML中,table就是表格,而不是其他什么(比如被用来布局和定位)。 }$Hs;4|  
K_AtU/  
亲自实践一下结构化 )l#%.Z9  
上面说的只是最基本的结构,实际应用中,你可以根据需要来调整内容块。常常会出现DIV嵌套的情况,你会看到"container"层中又有其它层,结构类似这样: KUp   
M<A;IOpR+  
<div id="navcontainer"> '9-axIj70  
<div id="globalnav"> cuQ7kECV  
<ul>a list</ul> }fJ:wku  
</div> FDF3zzP0  
<div id="subnav"> "ep`  
<ul>another list</ul> k5 aa>6K  
</div> pcI&  
</div> `26V`%bPkr  
p.rdSv(8'  
嵌套的div元素允许你定义更多的CSS规则来控制表现,例如:你可以给#navcontainer一个规则让列表居右,再给#globalnav一个规则让列表居左,而给#subnav的list另一个完全不同的表现。

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 6 发表于: 2006-07-26
WEB标准教程 第1天:选择什么样的DOCTYPE YV5Yx-+3w$  
N]B)Fb  
第一天 3p:=xL  
7~_{.f  
开始制作符合标准的站点,第一件事情就是声明符合自己需要的DOCTYPE。 kUNj4xp)  
B4`2.yRis  
$Mdbt o~<  
查看本站首页原代码,可以看到第一行就是: R'rTE  
;tJWOm  
Z;ZuS[ZA  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ZU=,f'bU  
5\okU"{d7  
P+[QI U  
^#]c0  
打开一些符合标准的站点,例如著名web设计软件开发商Macromedia,设计大师Zeldman的个人网站,会发现同样的代码。而另一些符合标准的站点(例如k10k.net)的代码则如下: Z:K+I+:t  
YTQ5sFuGM  
,Z^Ca15z  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 7$!yfMttu  
&|)hCJu  
>xT^RYS  
那么这些代码有什么含义?一定要放置吗? `,+#!)  
\Ke8W,)ew  
?N:B  
什么是DOCTYPE xpF](>LC(  
@&;(D!_&  
上面这些代码我们称做DOCTYPE声明。DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。 v2d<o[[C  
Odm#wL~E  
vB^uxdt|m  
其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。 'iJDWxCD  
$H'8 #:[d_  
M&r2:Whk  
要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。 2+z1h^)W  
tE@FvZC'=  
cv2]*  
XHTML 1.0 提供了三种DTD声明可供选择: n=q=zn;  
~8TF*3[}[  
zJ;Rt9<7-  
N#4N?BBP"  
过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下: GD!- qH  
1pK6=-3w3  
mb&lCd ^-  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 5y]io Jc9-  
KF_?'X0=  
WSRy%#  
N>0LQ MI  
严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下: 8!&nKy<Y  
Z^+rQ.%n"&  
xRlYr# %  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Ea-bC:>  
l;OYUq~F  
w]nX?S8  
@xS]!1-  
框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下: F?9SiX[\  
~O{W;Cyh  
WWNu:,  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> k^%2_H  
zzJja/mp  
Z, T#,  
我们选择什么样的DOCTYPE oaK.kOo  
[[WF0q  
理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。 _1aGtX|W  
dQD$K|aUp  
'Dath>Y=  
注:上面说的"表现层的标识、属性"是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。 z}+i=cAN  
CQgcC-)ns]  
%D`o  
打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会。 :_xh(W+2<  
+6l]]*H  
)#C mQXgG  
补充 1oty*c  
(u&`Ij9  
DOCTYPE声明必须放在每一个XHTML文档最顶部,在所有代码和标识之上。

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 7 发表于: 2006-07-26
XHTML基础问答 eSfnB_@x2  
DHw<%Z-J  
Q@S-f:!  
HTML语言是我们建立网页的工具,从它出现发展到现在,规范不断完善,功能越来越强。但是依然有缺陷和不足,人们仍在不断的改进它,使它更加便于控制和有弹性,以适应网络上日新月异的应用需求。2000年底,国际W3C(World Wide Web Consortium)组织公布发行了XHTML 1.0版本,XHTML和HTML,XML有什么不同,它增加了什么新功能,今天就让我们来初步认识一下XHTML。 mJ5H=&Z  
7TX2&kMoc  
{ci.V*:"  
  XHTML 1.0是一种在HTML 4.0基础上优化和改进的的新语言,目的是基于XML应用。XHTML是一种增强了的HTML,它的可扩展性和灵活性将适应未来网络应用更多的需求。下面是W3C的HTML工作组主席Steven pemberton回答的关于XHTML的常见基础问题。 ;11x"S  
b5a.go  
=(o']ZaaA  
  问:什么是XHTML? 8b(!k FxD  
8sOQ9  
*O~e T  
  答:XHTML是一种为适应XML而重新改造的HTML。当XML越来越成为一种趋势,就出现了这样一个问题:如果我们有了XML,我们是否依然需要HTML?为了回答这个问题,1998年5月我们在旧金山开了两天的工作会议,会议的结论是:需要。我们依然需要使用HTML。因为大量的人们已经习惯使用HTML来作为他们的设计语言,而且,已经有数以百万计的页面是采用HTML编写的。 =9wy/c$  
vB0RKk}d5  
wT,R0~V0  
  问:为什么XHTML 1.0相对HTML 4.0独立发展? !t#F/C  
g)"gw+ZFc  
bHE2,;o  
  答:并不是这样。XHTML恰恰就是HTML 4.0的重新组织,(确切的说它是HTML 4.01,是一个修正版本的HTML 4.0,只不过以XHTML 1.0命名发行。) 它们在XML里的解释会有一些必要的差别,但另一方面,它们依然非常相似,我们可以把XHTML的工作看作是HTML 4.0基础上的延续。 zM#sOg  
Ib=x~za@n  
}G V X>p  
  问:XHTML 1.0如何实现XML标准? (s<s@`  
9=`Wp6Gmn  
i)a%!1Ar  
  答:XHTML就是一种XML应用。它采用XML的DTD文件格式定义,并运行在支持XML的系统上。这里要感谢XML的Namespaces功能,浏览器制造商不需要再创造新的私有标签(tags),他们只需要在XHTML代码里包含XML代码片段,或者XML代码里包含XHTML代码片段。 O`[aU%4b  
tc+WWDP#"  
w_tJ7pz8T  
  问:XHTML 1.0最主要的优势是什么? 88s/Q0l  
49H+(*@v@  
4T6 {Y  
  答:XML是web发展的趋势,所以人们急切的希望加入XML的潮流中。使用XHTML 1.0,只要你小心遵守一些简单规则,就可以设计出既适合XML系统,又适合当前大部分HTML浏览器的页面。这个意思就是说,你可以立刻设计使用XML,而不需要等到人们都使用支持XML的浏览器。这个指导方针可以使web平滑的过渡到XML。 Q\ppfc{,  
/]^#b  
L{-LX= G^  
  另一个使用XHTML的优势是:它非常严密。当前网络上的HTML的糟糕情况让人震惊,早期的浏览器接受私有的HTML标签,所以人们在页面设计完毕后必须使用各种浏览器来检测页面,看是否兼容,往往会有许多莫名其妙的差异,人们不得不修改设计以便适应不同的浏览器。 $sHP\{  
GL Mm(  
zi9[)YqxPH  
  用XML我们可以重新建立制度,浏览器制造商联合采用"严格的错误防御标准",如果XML代码不兼容,浏览器拒绝显示页面,这样设计工作在发布前必须修正每一个错误。 mHc>"^R  
>$WQxbwM(  
ypOLp SYk  
  问:用XHTML,网页设计师会遇到和HTML一样的浏览器兼容性问题吗? ]:M0Kj&h  
E H:T  
Zdc63fllM  
  答:希望不会。"严格的错误防御标准"将帮助浏览器对代码作出相同的响应,XML的namespaces功能使你可以增加自己的新标签而不需要特别的浏览器支持。现在我们所需要得到保证的就是:所有浏览器开发商一致并且完全遵守我们制定的CSS。写信给你的浏览器制造商,告诉你需要的CSS规范,你甚至可以检测浏览器是否听从你的设计。 tJViA`@x  
m0n)dje  
:KJ pk:<  
  问:学习XHTML是否很困难? \JEXX4%  
q[q?hQ/b  
RGKYW>$0RR  
  答:一点也不! nAIo{ F  
b//B8^Eong  
Hb} X-6N  
  问:谁可以采用XHTML 1.0设计? W!Hm~9fz  
}o4N<%/+  
Q_-_^J  
  答:因为XHTML非常简单易于实现,所以任何会用HTML的人都可以容易地使用XHTML。当使用XML浏览器的人们越来越多,更多的工作会被建议使用XML,那时侯也许都将使用XHTML。 4fk8*{Y  
58\&/lYW  
[qUN4x5b  
  问:什么时候XHTML网站会普及? Z>c3  
wI]"U2L5  
o1W:ox?kO  
  答:好问题。我已经看到一些使用XHTML建立的网站,甚至在XHTML 1.0发布以前。我相信它将会有一个大发展,因为它太容易了。 Qd}m`YW-f$  
#} ~qqJ G2  
IN8>ZV`j)  
  问:我们如何将现有的HTMl转换为XHTML? *4+3ObA  
f`9 b*wV  
dI&!e#Y  
  答:非常简单,因为它们非常相似。在W3C(www.w3c.org)网站上有一个开放原代码(open-source)的软件叫HTML Tidy,可以帮助你直接转换。 (~CLn;'  
MFTk qbc  
|(5W86C,ju  
  问:XHTML未来会怎样? {^(ACS9mL  
B~o\+n  
j 8*ZF  
  答:XHTML1.0仅仅是这个新HTML语言的第一步。新版本将没有向下兼容老浏览器的约束,可以有更多的发展空间。 -p3Re9  
}bY; q-  
JlMT<;7\  
  首先,我们将进行一次彻底的清理,删除HTML 4.0中不兼容的元素。 ];.pK  
7K)6^r^  
FZ!`B]]le,  
  其次,我们将XHTML模块化,允许人们在XML应用中使用XHTML模块(比如表格),减少重复开发。同时也允许开发特别用途的设计,比如电话应用,只要属于XHTML的子集就可以保持兼容,人们可以创造他们自己的HTML。 JJ;[,  
~\{^%~[48  
M@ed>.  
  最后,在解决需求方面,我们将开发更多的表单(Forms)功能,允许在客户端执行更多的检测,减少客户机--服务器之间的网络信息传输。总之,更多令人兴奋的功能将会被实现。

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 8 发表于: 2006-07-26
典型的三行二列居中高度自适应布局 foJdu+^  
(`y*V;o4  
O'Js}  
^i:`ZfA#  
-------------------------------------------------------------------------------- f B9;_z  
jqPkc28  
8\{^|y9-  
这个页面在mozilla、opera和IE浏览器中均可以实现居中和高度自适应。我们来分析代码: | WvUq  
h;6lK$!c  
完整代码 E<yW\  
^Z:~91Tv-_  
<html> G:zua`u[  
*S/_i-ony  
[IK  )  
}Ho Qwy|&  
<head> 4 :U?u  
],P;WPU  
,3@#F/c3i~  
e^.Fa59  
<style type="text/css"> =i~}84>  
NH+(?TN  
mdRU^n  
*zr(Zv  
body{ ">#wOm+ +  
Dk?\)lD`  
Nm |!#(L  
ki85!k=Q2  
background:#999; o865 (<p  
*4V=z#  
&L^+BQ`O?  
]\!?qsT3}  
text-align:center; L:FoSCN Y(  
wXsmn1w9  
^MVkZ{gtre  
^<e.]F25M  
color: #333; tg{H9tU;  
j$+nKc$  
q5?# 3T=  
3D2E?$dX  
font-family:arial,verdana,sans-serif; 7D<#(CE{  
b[`Yi1^]%g  
92EWIHEWZ  
Yl3n2R /U  
} xP[n  
[ i]Ub0Dh7  
,lyb!k8  
o_'p3nD  
#header{ C+TI]{t  
VY3&  
XHK70: i  
cJrmm2.0kD  
width:776px; vvm0t"|\  
+(h\fm7*-  
5F~'gLH/F-  
7x@A%2J  
margin-right: auto; Bro9YP4<  
\Cii1\R=  
>k'c' 7/  
l6d$V 9A  
margin-left: auto; .,OVzW  
={z*akn,  
Z /9>  
u,UmrR  
padding: 0px; %T~ig[GstX  
 Y*14v~\'  
f\jLqZY  
`|/<\  
background: #EEE; ]bK=FIK2  
JhLgCnm  
&sU?Ok6  
3d e_V|%  
height:60px; D}mjN=Y  
6*3.SGUY  
bLwAXW2K+  
R.yC(r  
text-align:left; fP. 6HF_p_  
HbxL:~:}J  
1A\OC  
Vb= Mg  
} #contain{ hUF5fZqii  
u4/kR  
$GTU$4u  
@ g&ct>@y  
margin-right: auto; XR;eY:89  
+>r/0b  
BDjn !3  
z& fwE$Nm  
margin-left: auto; #n#@fAY  
9;B0Mq py  
CL+}| 7O(  
J%,*is EL  
width: 776px; "t~  
K~| 4[\  
Y4v|ko`l%  
o}* hY"&  
} #mainbg{ (G[ *|6m  
P7{gfiB  
l p(8E6  
:R~MO&  
width:776px; :>Ay^{vf=  
w.\&9]P3~  
w.?:SD  
#~<0t(3Q  
padding: 0px; _t Yx~J2.Q  
1*@'-mj  
n:{qC{D-qS  
M)2VcDy  
background: #60A179; ,f[>L|?e  
 O4og?h>  
2fWTY0  
.~l=zu  
float: left; !Ikt '5/  
x3o ]U)^  
!X;1}  
:{q < {^c  
} k\NMy#]Zt  
=g|IG [V  
Ht&:-F+dm  
4X+ifZO  
#right{ ):b$xNn  
=5(>q5Z*  
4*Hgv:0?kI  
^h"`}[+  
float: right; *%S"eWb  
?B}{GL2)  
!BOY@$Y  
>8qQK r\"  
margin: 2px 0px 2px 0px; U'<KC"f:'!  
NbU[l  
6er-{.L=  
J /f  
padding:0px; A^y|J ` k|  
/Z@tv .f  
no9;<]4  
5*,f Fib  
width: 574px; 9 mmCp&~Z  
b"#WxgaF  
QT>`^/]d  
nh!a)]c[  
background: #ccd2de; K"4>DaK2P  
;3B1_vo9  
'gPzm|f|t@  
oaoU _V  
text-align:left; ?MgUY)X  
@jsDq Ln  
8(~K~q[Cr  
"3)4vuX@;c  
} |ayVjqJ*  
S'_-G;g.  
,u`YT%&L  
p%*%n3bw  
#left{ "6us#T  
JSTuXW  
*U]V@;XF  
YYu6W@m]  
float: left; RkBb$q9F]  
5[YDZ7g"~  
PSZL2iGj9V  
pm_u  
margin: 2px 2px 0px 0px; sU@nc!&Y@  
]2\VweV  
)Ccq4i  
?Vf o+a,  
padding: 0px; Y! gCMLL  
V&\[)D'c  
h?8]C#6^  
H P3lz,d  
background: #F2F3F7; /|eA9 ]  
ZfgJ.<<  
S7L=#+Z  
j&Wl0  
width: 200px; ~?FpU  
s! }ne"&0  
nEkR1^30  
3 YFU*f,  
text-align:left; <-D0u?8  
e^[H[d.WMC  
/S(zff[at  
YGPy@-,E  
} /(BMG/Tb  
Jh?dw3Ai^  
_Gjk;|Sx<I  
?}a;}Q 6  
#footer{ 0#S W!b|%  
)l[M Q4vWW  
 $W9{P;  
'Ub g0"F(  
clear:both; D6G oa(!9d  
Y>EzTV  
e*;c(3>(  
/U"CO8Da  
width:776px; yLdVd P  
(s7;^)}zx  
7~GB;1n  
JNa"8  
margin-right: auto; "Za >ZRR  
bV$)!]V  
0DmMG  
OQ>x5?um  
margin-left: auto; K,bo VFs  
]zQo>W$  
+tk{"s^r*  
3plzHz,x  
padding: 0px; 8-_QFgY  
_`_%Y(Xat  
V {pj~D.E  
_/s(7y!  
background: #EEE; 6C]1Q.f;  
B]Y}Hu  
H*Kj3NgY  
Sz^5b!  
height:60px;} f"9q^  
qd#sY.|1  
B|4X}*@SX  
PB/IFsJ  
.text{margin:0px;padding:20px;} :L1dyVA{  
BvR-K\rx  
/qx0TDB  
$`wMX{  
</style> a_ `[Lj  
7G\\{  
>layJt  
AwTJJ0>  
</head> +\|Iu;w  
T[sDVkCbxf  
1XnZy5fEo  
]]&M@FM2z  
<body> (vB<%l.&  
m^#rB`0;L  
&CIVL#];e  
 k0  
<div id="header">header</div> sL@U  
V h k _  
0%Z]h?EYy|  
xritonG/F  
<div id="contain"> a?6a b+7#  
9!Ar`Io2@  
w 1Ec_y{  
sk 2-5S  
<div id="mainbg"> N*`b%XGn3  
vi|R(&  
 (:";i&  
Da v PYg  
<div id="right"> (C\hVy2X?N  
P{5-Mx!{&  
p<&Xd}]"^W  
<N`J`J-[  
<div K3' niGT  
d~?X/sJ t  
Z{ u a=0  
cwuO[^S}  
class="text">right<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p></div> JGFt0He]  
PT^c^{V  
< n:}kQTT  
rx5B=M  
</div> 90# ;?#  
v @O&t4  
; h`0ir4[A  
H%1$,]F  
<div id="left"> p)=~% 7DV  
37q@rDm2  
-wv6s#"u  
cNKUu~C+  
<div class="text">left</div> 6MG9a>=  
+@Ad1fJi  
|w*R8ro_  
8$c bVMjh  
</div> 7P B)'Wl"6  
D&ve15wL  
yfDAk46->6  
Z/6qG0feJ  
</div> ~aXqU#8  
JTqq0OD}  
3pXLSdxB  
3:5DL!Sm8J  
</div> erl:9.  
>|o_wO  
Vi]c%*k  
G2#d $  
<div id="footer">footer</div> u=&Bmn_  
Kv{8iAB#c  
WV"jH9"[  
}#v{`Sn%^C  
</body> Zw] ?.  
CodSJ,  
.5Q:Xp  
8z<r.joxC  
</html> %g cc y|  
-Z^4L  
zQH]s?v  
p8+/\Ee]B  
@-#T5?  
DJQglt}~  
<head> N8!TZ~1$  
df=z F.5  
R: aYL~  
l SkEuN  
<style type="text/css"> \NXQ  
/.=r>a }l  
P` '$  
D22Lu ;E  
body{ d `j?7Z  
c-5jYwV  
'5};M)w  
L8V3BH7B  
background:#999; (Q-I8Y8l8  
Cj&$%sO1  
K@@9:T$  
y67uH4&Vm  
text-align:center; !%mi&ak(Rn  
Q-zdJt  
Yb=6C3l@  
wq4nMY:#  
color: #333; 67J*&5? |  
bZ# X 9fT  
aed+C:N  
=ef1XQ{i*  
font-family:arial,verdana,sans-serif; JCQ:+eqt  
$o^e:Y , a  
i=8UBryr'e  
rR!U;  
} F^'v{@C  
tF`MT%{Va  
a{_ KSg  
8U^D(jrz  
#header{ ck$2Ue2`@w  
797X71>  
>38 Lt\  
z{6 YC~  
width:776px; Dq`~XS*  
 9d"5wx  
J v<$*TVS0  
>h[(w  
margin-right: auto; gPUo25@pn*  
6{7 3p@  
L*O>IQh2  
k6J\Kkk(  
margin-left: auto; S$K}v,8.sr  
3G&0Ciet  
wA r~<  
tzNaw %\  
padding: 0px; M@~ o6^  
=z-5  
A|C_np^z2  
E&9!1!B  
background: #EEE; 1uC;$Aj6:  
" <*nZ~nE)  
K>LpN')d  
A: c]1  
height:60px; nF j-<!  
[Gf{f\O  
p6[#f96^u  
_iq2([BpL  
text-align:left; @9<S*  
v\'r Xy  
Me<du& T  
9iK&f\#5H  
} #contain{ .c:)Qli  
Tr$i= M  
w`0)x5 TGR  
}z?xGW/k  
margin-right: auto; &!6DC5  
Y!;gQeC  
33,;i E  
Gj5>Y!9  
margin-left: auto; ;{]8>`im&4  
%P(;8sS  
Gxo# !  
fMyE&#}z  
width: 776px; [qW<D/@  
N:OD0m%`)  
Pf{`/UlD  
tnN'V  
} #mainbg{ mZ~mf->%  
)>?! xx_`  
D9,e3.?p  
K q/~T7Ru  
width:776px; O1|B3M[P  
;v%Q8  
xJ N|w\&  
wInY7u Bd!  
padding: 0px; <sO?ev[  
//~POm  
" \`BPN  
y-%nJD$  
background: #60A179; 2rF?Q?$,B  
tSI& "-   
_k6x=V;9g  
@X K>  
float: left; c]e`m6  
r >E\Cco  
g'KzdG`O0  
Akv(} !g  
} aMBL1d7  
Q@7l"8#[t  
ht2 f-EKf{  
Qk+=znJ  
#right{ | A3U@>6  
? 7/W>  
NY.}uZ  
.4H_Zt[2  
float: right; g[m3IJzq  
@bc[ eas  
Sjw2 j#Q  
N[0 xqQ  
margin: 2px 0px 2px 0px; S&5Q~}{,  
 AQB1gzE  
lTx Y6vi  
5ze`IY  
padding:0px; gCg4;b6g  
+8Of-ZUx  
IRlN++I!  
O|HIO&M  
width: 574px; aUKh}) B  
JX2mTQ  
\R6;Fef  
_Wm(/ +G_|  
background: #ccd2de; _=o1?R  
Oyi;bb<#  
!S~,> ,yd  
bc `UA  
text-align:left; hZp=BM"bJ  
<^CYxy  
m Y$nI -P  
}%-UL{3%  
} ]]\)=F`n77  
f %bc64N(  
fKPiRlLS  
ZmEG<T05  
#left{ JN{<oxI  
\?bwm&6+r  
?l6>6a7  
HF*j`}  
float: left; 1 ;cv-W  
C_;HaQiu  
&Pmc"9Rl  
:*mA,2s  
margin: 2px 2px 0px 0px; 80{#bb  
P]!LN\[  
k)N2 +/  
e#l*/G*,  
padding: 0px; )m|X;eEo  
Vpug"aR&_  
(Wm/$P;  
2uvQf&,  
background: #F2F3F7; r!{w93rPX  
9F2w.(m  
PWf{aHsr  
:N^@a-  
width: 200px; hKk\Y{wv'  
-D!#W%y8  
cJU!zG  
B6tcKh9d,  
text-align:left; E[)7tr  
(P E# Y(  
[47K7~9p  
8CHb~m@^$  
} s=H/b$v  
, aRJ!AZ  
l%sp[uqcg  
,^MW)Gf<  
#footer{ *=-__|t  
ka?IX9t\  
w\"n!^ms  
QOkE\ro  
clear:both; ,W)IVc   
GW>7R6i  
|QAeQWP+1  
4 |:Q1  
width:776px; "!%w9  
veYsctK~  
}@ O|RkY  
/(hP7_]`2  
margin-right: auto; ]MqH13`)A  
EzD -1sJ  
G+#| )V  
]YisZE4s  
margin-left: auto; ooLnJ Y#  
AiyvHt  
cXLV"d  
f_re"d 3u  
padding: 0px; Q.pEUDq/  
X/`#5<x  
Z30z<d,j  
V7B=+(xK  
background: #EEE; [#hl}q(P#  
p:[`%<j0  
ADLa.{  
;+r)j"W  
height:60px;} p0[,$$pM  
)}k?r5g  
=M/ UHOY  
RB lOTQjv  
.text{margin:0px;padding:20px;} !OuTXa,I H  
lJ2|jFY9  
#FQm/Q<0  
I9:G9  
</style> )MD*)O  
68'-1}  
we:5gK &  
`L"p)5H  
</head> m]-v IUpb  
X5L(_0?F1  
7/^TwNsv  
0XQ".:+h  
<body> r3c\;Ra7  
r7Q:l ?F2  
v' 9(et  
}GoOE=rhY  
<div id="header">header</div> h87L8qh9  
Zeme`/aBb  
l# !@{ <  
{x&jh|f`g  
<div id="contain"> !dbA (  
{0)WS}&  
B(en5|  
+%Bf y4F6  
<div id="mainbg"> 8JtI&aH-L  
k@t,[  
7>#L  
NqQ(X'W7  
<div id="right"> CQ8o9A/  
vYMbson}  
qh)!|B  
+}(B856+  
<div 2W"cTm  
uZ0 $s$  
\6`%NhkM_  
DETajf/<F  
class="text">right<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p></div> j6R{  
St7D.|  
H%NLL4&wu  
ZB^4(F')H  
</div> wWOT*R_  
]:E! i^C`Z  
JIY ^N9_  
#nc@!+  
<div id="left"> -YRL>]1  
(;2J(GZ:$U  
soqNzdTB2  
P7>C4rmQ  
<div class="text">left</div> 2;?wN`}5g=  
WW\)B-}T  
$p6Xa;j$9  
X,!OWz:[  
</div> H8t{ >C)]  
 Sj{rvW  
>e$^# \D  
h[`Op#^x3  
</div> l>5]Wd{/  
{ Sliy'  
eZ.0,A*1B1  
2`FsG/o\T~  
</div> ANpY qV  
|L_g/e1A3  
ZvnZ}t >?  
DT(Zv2  
<div id="footer">footer</div> %*Z2Gef?H  
$L#Z?76v  
-< dMD_  
)V$!  
</body> l#vw L15  
2W:?#h3  
XF f+efh  
sO4}kxZ  
</html>

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 9 发表于: 2006-07-26
U;Y}2  
&Cpxo9-  
首先我们定义body和顶部第一行#header,这里面的关键是body中的text-align:center;和header中的margin-right: auto;margin-left: auto;,通过这两句使得header居中。注:其实定义text-align:center;就已经在IE中实现居中,但在mozilla中无效,需要设置margin:auto;才可以实现mozilla中的居中。 -"dy z(  
接下来定义中间的两列#right和#left。为了使中间两列也居中,我们在它们外面嵌套一个层#contain,并对contain设置margin:auto;,这样#right和#left就自然居中了。 4k2c mM$  
注意中间两列定义的顺序,我们首先定义#right,通过float: right;让它浮在#contain层的最右边。然后再定义#left,通过float: left;让它浮动在#right层的左面。这和我们以前表格从左到右定义的顺序正好相反。 dj&m  
我们看到代码中在#contain和两列之间还嵌套了一个层#mainbg,这个层是做什么用的呢?这个层就是用来定义#contain的背景的。你肯定会问,为什么不直接在#contain中定义背景,而要多套一层呢?那是因为在#contain中直接定义的背景,在mozilla中将显示不出来,必须定义高度值才可以。如果定义了高度值,#right层就无法实现根据内容的自动伸缩。为了解决背景和高度问题,就必须增加这么一个#mainbg层。窍门在于#mainbh这个层定义float: left;,因为float使层自动有宽和高的属性。(暂且这么理解:) N9h@1'>  
最后是定义底部的#footer层。这个定义的关键是:clear:both;,这一句话的作用是取消#footer层的浮动继承。否则的话,你会看到#footer紧贴着#header显示,而不是在#right的下面。 a~eLkWnh<k  
主要的层定义完毕,这个布局就ok了。补充一点:你看到我还定义了一个.text{margin:0px;padding:20px;},这个class的作用是使内容的外围有20px的空白。为什么不直接在#right里定义margin或者padding呢,因为mozilla和IE对css盒模型的解释不一致,直接定义margin/padding会造成mozilla里布局变形。一般采用内部再套一层的做法来解决。

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 10 发表于: 2006-07-26
使用DIV之后,什么时候使用TABLE ihY^~  
2gR_1*|  
关于表格 +-YuBVHL  
Y*`A$  
MG5Sn*(C  
  使用WEB标准之后,并不是说排除表格的使用,表格并不是鸡肋,而正好相反是一道大餐,之所以在很多关于CSS布局的文章中常提到"为什么使用表格排版是不明智的"这句话,可能是大家对他的理解有误,这里注意一点" rbZ6V :  
Q;,3W+(  
P<JkRX  
  使用表格排版"是"不明智"的.指的是我们使用了很多年的,用表格来排版是不明智的,表格归根截底是一种显示"数据"的方式,大家可以想象一下EXCEL,表格就是起这个使用的,有的时候信息使用表格显示让我们能清晰易读,所以才使用表格,比如公司员工联系表,产品与型号对应表等. CJtjn  
|afK"N  
;OCI.S8  
  那么所谓表格大餐呢,其实意见上升到了一个层次,也就是说你如果能像专业市场分析公司那样,灵活使用表格来显示客户数据和调查数据等消息的时候,那才是真正利用了表格的优势. n zrCOMld  
$`dNl#G,  
F`V[G(f+r  
  所以,关于那句使用以久的话,应该改为" l3#dfW{  
Y~SlipY_  
${6'  
  使用表格作为网页排版,布局页面元素是不合理的,表格是用来显示数据的"。 yy.:0:ema  
+rpd0s49  
[qMO7enu#  
  关于其它元素 +|)#yE$aMh  
3$yL+%i  
]S aH/$  
  我这里按我的使用经验,把XHTML标准中的一些元素,分为三大类: ygY+2  
Qbpl$L  
4lf36K ,  
  第一类是我称之为辅助布局设计元素: ]`H.qV  
jz7ltoP  
;Hp'x_xQ  
  这里我指的是DIV,SPAN等,这类元素的主要功能是用来布局整个页面的,灵活使用这些元素的各种属性,可以让你的页面表现丰富多彩. &j@J<*k  
K2 K6  
GaqG 8% .  
  第二类我称为结构化元素或叫信息元素 v]SE?xF{U  
Z=[a 8CU  
FY}*Z=D%  
  这里指的是TABLE,UL,PRE,CODE类元素是一种信息显示与整理方式,比如TABLE很明显就是用来显示表格信息的,UL是用来显示列化信息的,当需要用表格或列表的时候,用这二种方式来显示是明智的。 i/Lq2n3 )  
q>4i0p8^  
VEKITBs  
  第三类指的是 这样的,完全是为了实现一些功能,如填上关键字的META keyword,还有做链接的A。 q/-j`'A_pb  
w*P4_= :%Y  
Y4!q 1]TGX  
  那么正确的符合标准的设计思路是: y1My, ?"?  
}JMkM9]  
7kpW 1tjY  
  使用DIV等布局元素来制作页面的设计布局,定位,色块,图片等 m_I$"ge  
>$52B9ie  
u0hbM9U>  
  使用TABLE,UL等这样的元素来显示页面中需要展示数据 ?JTyNg4<  
Y]Vc}-a(h  
"$cT*}br  
  当然,DIV也起整理数据的作用,使用DIV的ID属性可以很方便的将一个DIV作为一个你名命的数据块。 KrG6z#)Uz  
I/V#[KC  
gO!h<1!  
  所以使用WEB标准来制作网站,实际是一个信息合理化整合的一个过程,什么地方该用什么元素还是照用不误,别把表格当布局工具就行。

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 店掌柜
发帖
5692
铜板
103378
人品值
1520
贡献值
26
交易币
0
好评度
5373
信誉值
0
金币
0
所在楼道

只看该作者 11 发表于: 2006-07-26
盒模型bug的解决方法 A@AGu#W  
lA 0_I"b2Y  
我们定义一个最基本的层: `b'J*4|oGo  
Q&Ahr  
qk1D#1vl  
.: ;Hh~  
boxtest >&Q. .`q  
BF|FW  
div.boxtest{border:20px   solid #60A179;padding: 30px;background : #ffc;width : 400px;} ^WPV  
3g:+p  
标准情况下,这个盒的宽度是:20+30+300+30+20=400px。 t3JPxg]0k'  
=:8=5tj  
}AYSQ~:  
但是在IE5.0浏览器中,对盒模型的宽度解释有个bug,它认为300 px是整个盒的总宽度,内容的宽度变成:300-20-30-20-30=200px。 6dp_R2zH~o  
CoXL;\  
XQ;d ew+  
为了弥补这个bug,采用一个技巧:即增加一个IE5不能解释的声音属性"voice-family",读到这个定义时浏览器就不再继续阅读,认为宽就是400px,但而其他符合标准的浏览器会继续阅读,并执行第二个真实值300px。 K): sq{  
l #z`4<  
)!-'SH  
`.WKU"To  
content 1*b%C"C  
YKd?)$J  
div.content{border:20px solid #60A179;;padding:30px;background: #ffc;width :400px;voice-family :   "\"}\"";voice-family :inherit;width : 300px;} Bd[Gsns  
%y+j~]^:  
同样,在Opera7.0以前的浏览器也有这样的解析bug。但我们并不需要使用伪值,有更简单的办法解决这个问题: html>body .content { width :300; }

简单生活
执著追求
别笑我浅溥,天真的以为用一腔真诚就能感动这个冷漠的世界。
也别说我幼稚,竟想用不长的人生去诠释繁杂的红尘。
然而除了真诚,我还能给你什么,的确我真的一无所有!

级别: 经院小学
发帖
198
铜板
191
人品值
-98
贡献值
0
交易币
0
好评度
198
信誉值
0
金币
0
所在楼道
学一楼
只看该作者 12 发表于: 2012-04-13
好多啊,哈哈,谢谢您 +?tNly`  
;\.&FMi  
j<?4N*S  
&pl;U\dc*a  
oGJI3Oh  
8+F2 !IM  
Ta$<#wb  
$y}Tbm  
BJ/%{ C`g  
8090 http://www.weiguan.cc/detail/29090.html 百度影音
描述
快速回复

您目前还是游客,请 登录注册
批量上传需要先选择文件,再选择上传
认证码:
验证问题:
3+5=?,请输入中文答案:八 正确答案:八