以文本方式查看主题 - W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL (http://bbs.xml.org.cn/index.asp) -- 『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』 (http://bbs.xml.org.cn/list.asp?boardid=22) ---- 『循序渐进12天学习XHTML』 (http://bbs.xml.org.cn/dispbbs.asp?boardid=22&rootid=&id=10204) |
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:02:00 AM -- 『循序渐进12天学习XHTML』 第1天:选择什么样的DOCTYPE 前言 大家好!这个系列文章是按阿捷自己制作这个站点的过程编写的。之前阿捷也一直没有制作过一个真正符合web标准的网站。现在边参考国外资料边制作,同时把过程中的心得和经验记录下来,希望对大家有点帮助。好了,让我们开始吧 第一天 开始制作符合标准的站点,第一件事情就是声明符合自己需要的DOCTYPE。 查看本站首页原代码,可以看到第一行就是: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 那么这些代码有什么含义?一定要放置吗? 什么是DOCTYPE 上面这些代码我们称做DOCTYPE声明。DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。 其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。 要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。 XHTML 1.0 提供了三种DTD声明可供选择: 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下: 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下: 我们选择什么样的DOCTYPE 理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。 注:上面说的"表现层的标识、属性"是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。 打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会。 补充 更多细节可以访问W3C的网站
|
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:06:00 AM -- 第2天:什么是名字空间 DOCTYPE声明好以后,接下来的代码是: <html xmlns="http://www.w3.org/1999/xhtml" lang="gb2312"> 这个"xmlns"是XHTML namespace的缩写,叫做"名字空间"声明。名字空间是什么作用呢?阿捷自己的理解是: 由于xml允许你自己定义自己的标识,你定义的标识和其他人定义的标识有可能相同,但表示不同的意义。当文件交换或者共享的时候就容易产生错误。为了避免这种错误发生,XML采用名字空间声明,允许你通过一个网址指向来识别你的标识。例如: 小王和小李都定义了一个<book>标识,如果小王的名字空间是"http://www.xiaowang.com",小李的名字空间是"http://www.xiaoli.com",那么当两个文档交换数据时,也不会混淆<book>标识,因为它属于不同的名字空间。 更通俗的解释是:名字空间就是给文档做一个标记,告诉别人,这个文档是属于谁的。只不过这个"谁"用了一个网址来代替。 XHTML是HTML向XML过渡的标识语言,它需要符合XML文档规则,因此也需要定义名字空间。又因为XHTML1.0不能自定义标识,所以它的名字空间都相同,就是"http://www.w3.org/1999/xhtml"。如果你还不太理解也不要紧,目前阶段我们只要照抄代码就可以了。 后面的lang="gb2312",指定你的文档用简体中文。
|
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:06:00 AM -- 第3天:定义语言编码 第三步是定义你的语言编码,类似这样: <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 通常这样定义就可以了。但是要补充说明的是,XML文档并不是这样定义语言编码的,XML的定义方式如下: <?XML version="1.0" encoding="gb2312"?> 看本站源代码,你会发现语言编码定义的地方还多一句: <meta http-equiv="Content-Language" content="gb2312" /> 注意:在上面声明语句的最后,你看到有一个斜杠"/",这和我们以前的HTML4.0的代码写法不同。原因是XHTML语法规则要求所有的标识都必须有开始和结束。例如<body>和</body>、<p>和</p>等,对于不成对的标识,要求在标识最后加一个空格,然后跟一个"/"。例如<br>写成<br />、<img>写成<img />,加空格的原因是避免代码连在一起浏览器不识别。
|
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:08:00 AM -- 第4天:调用样式表 用web标准设计网站,过渡的方法主要是采用XHTML+CSS,css样式表是必不可少的。这就要求所有网页设计师必须熟练掌握CSS,如果你以前不常用,那么现在就开始学习吧。要制作符合web标准的网站,不懂CSS是设计不出漂亮的页面的。 事实上,所有表现的地方都需要用CSS来实现。我们以前都习惯用table来定位和布局,现在要改用DIV来定位和布局。这是思维方式的变化,一开始有些不习惯。呵呵,任何变革都会有阻力的,为了享受标准带来的"益处",放弃一些老的传统做法是值得的。 外部调用样式表 在以前,我们通常采用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"命令方法调用样式表。
|
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:09:00 AM -- 第5天:head区的其他设置 这些技巧主要讲meta标签设置的,其实与符合web标准关系不大,只要注意在最后加"/"关闭标签就可以,但是既然是入门教程,就写得详细一点吧。 收藏夹小图标 如果你将本站加入收藏夹,可以看到在收藏夹网址之前的IE图标变成了本站特别的图标。要实现这样效果很简单,首先制作一个16x16的icon图标,命名为favicon.ico,放在根目录下。然后将下面的代码嵌入head区: <link rel="icon" href="/favicon.ico" type="image/x-icon" /> 为搜索引擎准备的内容 代码如下,替换成你自己站点的内容就可以: 允许搜索机器人搜索站内所有链接。如果你想某些页面不被搜索,推荐采用robots.txt方法
|
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:11:00 AM -- 第6天:XHTML代码规范 在开始正式内容制作之前,我们必须先了解一下web标准有关代码的规范。了解这些规范可以帮助你少走弯路,尽快通过代码校验。 1.所有的标记都必须要有一个相应的结束标记 <br /><img height="80" alt="网页设计师" src="../images/logo_w3cn_200x80.gif" width="200" /> 2.所有标签的元素和属性的名字都必须使用小写 3.所有的XML标记都必须合理嵌套 <p><b></p>/b> <p><b></b>/p> 4.所有的属性必须用引号""括起来 <height=80> <height="80"> <alt="say'hello'"> 6.给所有属性赋一个值 <td nowrap> <input type="checkbox" name="shirt" value="medium" checked> <td nowrap="nowrap"> <input type="checkbox" name="shirt" value="medium" checked="checked"> 7.不要在注释内容中使“--” <!--这里是注释-----------这里是注释--> <!--这里是注释============这里是注释--> |
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:13:00 AM -- 第7天:CSS入门 在了解XHTML代码规范后,我们就要进行CSS布局。首先先介绍一些CSS的入门知识。如果你已经很熟悉了,可以跳过这一节,直接进入下一节。 CSS是Cascading Style Sheets(层叠样式表)的缩写。是一种对web文档添加样式的简单机制,属于表现层的布局语言。 1.基本语法规范 p {COLOR:#FF0000;BACKGROUND:#FFFFFF} 2.颜色值 3.定义字体 body { font-family : "Lucida Grande", Verdana, Lucida, Arial, Helvetica, 宋体,sans-serif; } 5.派生选择器 li strong { font-style : italic; font-weight : normal;} 6.id选择器 <div id="menubar"></div> #menubar {MARGIN: 0px;BACKGROUND: #FEFEFE;COLOR: #666;} id选择器也同样支持派生,例如: #menubar p { text-align : right; margin-top : 10px; } 6.类别选择器 .14px {color : #f60 ;font-size:14px ;} <span class="14px">14px大小的字体</span> 7.定义链接的样式 a:link{font-weight : bold ;text-decoration : none ;color : #c00 ;} 呵呵,看了这么多,有点头晕吧,实际上CSS的语法规范还有很多,这里列的只是一些常用的,毕竟我们是循序渐进,不可能一口吃成胖子:) |
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:22:00 AM -- 第10天:自适应高度 如果我们想在3列布局的最后加一行页脚,放版权之类的信息。就遇到必须对齐3列底部的问题。在table布局中,我们用大表格嵌套小表格的方法,可以很方便对齐三列;而用div布局,三列独立分散,内容高低不同,就很难对齐。其实我们完全可以嵌套div,把三列放进一个DIV中,就做到了底部对齐。下面是实现例子(白色背景框模拟一个页面): Body 这里是#header{ MARGIN: 0px; BORDER: 0px; BACKGROUND: #ccd2de; WIDTH: 580px; HEIGHT: 60px;}这里是#mainbox { MARGIN: 0px; WIDTH: 580px; BACKGROUND: #FFF; }包含了#menu,#sidebar和#content 这里是#menu{ FLOAT: right; MARGIN: 2px 0px 2px 0px; PADDING:0px 0px 0px 0px; WIDTH: 400px; BACKGROUND: #ccd2de; }这里是#sidebar{ FLOAT: left; MARGIN: 2px 2px 0px 0px; PADDING: 0px; BACKGROUND: #F2F3F7; WIDTH: 170px; },背景颜色用的是#main的背景色 这里是主要内容,根据内容自动适应高度 这里是主要内容,根据内容自动适应高度 这里是主要内容,根据内容自动适应高度 <div id="header"></div> 另外值得注意的是:#menu和#content都是浮动在页面右面"FLOAT: right;",#sidebar是浮动在#menu层的左面"FLOAT: left;",这是浮动法定位,还可以采用绝对定位来实现这样的效果。 这个方法存在另一个问题,就是侧列#sidebar的背景无法百分之百。一般的解决办法就是用body的背景色来填充满。(不能使用#mainbox的背景色,因为在Mozilla等浏览器中#mainbox的背景色失效。) 好了,主要的框架已经搭建完毕,剩下的工作只是往里面添砖加瓦。如果你希望尝试其他布局,推荐看看以下文章: CSS布局16例 |
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:24:00 AM -- 第11天:不用表格的菜单 布局初步搭建起来,我开始填充里面的内容。首先是定义logo图片: 样式表:#logo {MARGIN: 0px;padding:0px;WIDTH: 200px;HEIGHT:80px;} 接下来是定义菜单。 1.不用表格的菜单(纵向) 什么是网站标准 通常方法我们至少嵌套2层表格来实现这样的菜单,间隔线采用在td中设置背景色并插入1px高的透明GIF图片实现;背景色的交替效果采用td的onmouseover事件实现。但查看本菜单的页面代码,你会看到只有如下几句: <div id="menu"> (1)首先定义了menu层的主要样式: #menu { #menu ul { } (3)定义onmouseover效果 #menu li a { "display:block;"表示将标签a当作块级元素来显示,使得链接变成一个按钮; 2.不用表格的菜单(横向) 页面代码 <div id="submenu"> #submenu { #submenu ul { #submenu li { #submenu li a { #submenu li a:hover { #submenu ul li#one A { WIDTH: 60px} 以上代码不逐一分析了。横向菜单的关键在于:定义<li>样式时的"FLOAT: left;"语句。另外注意UL定义中的DISPLAY:inline;一句表示将li强制作为内联对象呈递,从对象中删除行,通俗讲就是li不换行。实现横向排列。你也可以象例子中定义每个子菜单的宽度,控制菜单的间隔。好了,你也可以动手试试,用li实现各种各样的菜单样式。 Tips:如果你子菜单的宽度总和大于层的宽度,菜单会自动折行,利用这个原理可以实现单个无序列表的2列或者3列排版,这是原来HTML很难实现的。 感谢zhuweiwei指出横向菜单的bug,本文7月6日修正。
|
-- 作者:纯色理想 -- 发布时间:9/22/2004 10:26:00 AM -- 第12天:校验及常见错误 辛苦了好多天,我们努力学习使用XHTML+CSS来重新设计我们的网站。那么我们如何知道自己制作的页面真的符合web标准?W3C和一些志愿者网站提供了在线校验程序,来帮助我们检查页面是否符合标准,并提供了修正错误的帮助信息。这些校验非常有用,是我调试页面第一步要做的事情。 1.XHTML校验 XHTML校验常见错误原因对照表 <p> <a href="http://validator.w3.org/check/referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a> </p> CSS2校验常见错误原因对照表 <p> <a href="http://jigsaw.w3.org/css-validator/"> <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" /> </a> </p> |
-- 作者:y1_f2 -- 发布时间:11/4/2004 10:11:00 PM -- 好啊!!!!!! 置顶!!!! |
-- 作者:rdcaixd -- 发布时间:11/11/2004 4:54:00 PM -- 非常感谢!! 我复制回去好好研究。 |
-- 作者:xmzhy -- 发布时间:11/12/2004 11:44:00 AM -- thank |
-- 作者:tianlang -- 发布时间:11/30/2004 10:58:00 AM -- hao dongxi |
-- 作者:chon81 -- 发布时间:12/2/2004 6:09:00 PM -- good! |
-- 作者:嘻哈标明 -- 发布时间:12/3/2004 2:57:00 PM -- 支持。我现在开始做我的XHTML+CSS网站了。 |
-- 作者:嘻哈标明 -- 发布时间:12/3/2004 4:43:00 PM -- 看后了解很多,下面是我的心得: 1、用XHTML+CSS做网站在XHMTL页面几手看到那些html语言,比如表格。 2、一大半排版结构都在CSS完成,然后在XHTML页面用层嵌入一个层实现。 3、在CSS里大多都用 #menu { } , #submenu ul { }, #menu li a {}来完成菜单样式,实现好看的按钮。把这些放到一个文件里,能够统一整站的风格! 这是我小小的了解,还有什么漏的,希望各位DX指点,在下感激不尽。 |
-- 作者:wetfeather -- 发布时间:12/12/2004 11:27:00 AM -- 非常感谢!! |
-- 作者:hjx_221 -- 发布时间:3/3/2005 6:42:00 PM -- 谢谢! 学习学习…… |
-- 作者:jakey9826 -- 发布时间:3/9/2005 10:03:00 AM -- 正要做WAP网站呢,看了楼主的资料感觉到帮助很大,谢谢! |
-- 作者:rebol -- 发布时间:3/11/2005 8:37:00 AM -- 很好很好,建议再详细一点,可以出本书。 |
-- 作者:rebol -- 发布时间:3/11/2005 9:59:00 AM -- 细细读完,受益匪浅! 谢谢! |
-- 作者:lefty -- 发布时间:3/15/2005 12:33:00 PM -- 好,收藏 |
-- 作者:icehorn -- 发布时间:3/22/2005 9:56:00 AM -- 不错,好帖子!!!顶!! |
-- 作者:hhf1977 -- 发布时间:3/28/2005 11:19:00 AM -- thank you |
-- 作者:chfg -- 发布时间:3/29/2005 8:12:00 PM -- 学习 |
-- 作者:kua -- 发布时间:5/12/2005 10:29:00 AM -- 不错!谢谢 |
-- 作者:zixia_athena -- 发布时间:5/15/2005 10:28:00 AM -- 能不能提供下载呀,这样看好累 |
-- 作者:kk215 -- 发布时间:5/18/2005 5:39:00 PM -- 这是国内网页设计师,阿捷写的文章,有电子下载,可以到作者主页 http://www.w3cn.org |
-- 作者:gun04122910 -- 发布时间:6/6/2005 2:50:00 PM -- 好,多谢! |
-- 作者:chenshijun -- 发布时间:6/24/2005 8:03:00 PM -- 希望提供打包下载 |
-- 作者:myali88 -- 发布时间:9/4/2005 5:58:00 PM -- 要多来的代码实例就好了!!!!! |
-- 作者:cwzb -- 发布时间:9/12/2005 11:28:00 PM -- 强力支持........... |
-- 作者:xlx -- 发布时间:11/6/2005 2:13:00 PM -- 写得真的很好!谢谢! |
-- 作者:xiongbajian -- 发布时间:12/28/2005 7:21:00 PM -- 好,谢谢 |
-- 作者:wang6 -- 发布时间:2/14/2006 1:29:00 PM -- 谢了 ! 这东西还可以. |
-- 作者:gengwei80 -- 发布时间:3/15/2006 10:06:00 AM -- 顶 |
-- 作者:welcome58 -- 发布时间:3/15/2006 1:53:00 PM -- 谢谢楼主, 咱把这些复制到咱的blog里了,没问题吧 |
-- 作者:barberry_in_rain -- 发布时间:3/18/2006 7:49:00 AM -- 有点意思 |
-- 作者:ehuan -- 发布时间:3/20/2006 9:07:00 AM -- 太好了 |
-- 作者:Jakson33 -- 发布时间:3/21/2006 6:53:00 PM -- 好东西,收藏了! |
-- 作者:chinaadvice -- 发布时间:3/27/2006 7:53:00 AM -- 支持,楼主辛苦了! |
-- 作者:chinaadvice -- 发布时间:3/27/2006 8:02:00 AM -- 多谢楼主分享! |
-- 作者:qmj0958 -- 发布时间:4/24/2006 1:49:00 AM -- ^_^ 好文章 收下了^_^ 谢谢 |
-- 作者:cloudffx -- 发布时间:4/24/2006 8:30:00 AM -- 辛苦了~~~~~~~~~~~~~~· |
-- 作者:lockss -- 发布时间:4/24/2006 11:27:00 AM -- 很好,,XX了 |
-- 作者:alange -- 发布时间:5/1/2006 9:10:00 PM -- 好,虽然我来迟了.还是顶一下. |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
296.997ms |