请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 9137|回复: 50

[其它] 网页制作,改变你的思维方式 [复制链接]

benboba 楼主

奔波儿灞

高级会员 手机认证 

帖子
276
体力
619
威望
10
发表于 2007-9-28 11:37:34 |显示全部楼层
  “重构”的春风吹遍大江南北,互联网一时间风声鹤唳,“div+CSS”俨然已成为一种“时尚”,难以尽数的网站都不约而同地开始了自己的“重构”。然而打开这形形色色网站的源代码,却时常令人哑然失笑——

  我们看到有嵌套6、7层的div布局,有不用table的表格,有纯div+a构成的页面,有成百上千的表现层class……现在关于标准的书籍越来越多,除了少数几本标榜“高级技巧”的书籍以外,很少有人不会在自己著作的前几章强调这样一句话——“结构与表现分离”。然而这些书籍的读者们,又有多少人认认真真地读过前几章呢?还是更多地直接跳过那些乏味的结构讲解,一头扎到貌似高深的布局技巧与Hack中去?

  其实div+CSS这个说法从一开始就误导了太多的人,急功近利的心态则更是造成这种现象的罪魁祸首。一个习惯了table布局的网页制作接触标准的第一步,不应该是去盲目寻求实现各种布局的CSS技巧,而是努力改变自己的思维方式。

  下面将结合我的切身体会谈一谈顺应标准的思维方式,其中有不少是我曾经走过的弯路,希望对刚刚接触标准的XDJM们有些帮助:

1、“节省代码”是营销手段,不是宗旨

  “使用div布局可以比table布局节省更多的代码”,我在很多书籍和网站上见到过这句话。这句话本身是没错的,可以“节省代码”的确是网页标准化所带来的好处之一。然而切记,它只是“好处之一”,而不是“唯一好处”,更不是宗旨。“节省代码”更多的时候是我们用来说服那些顽固不化的老板的营销手段。网页标准化的唯一宗旨是“结构与表现分离”,而绝不是为了节省代码而节省代码。我曾经因为网站边栏甚至主体内容的表现形式相同而采用了统一的class (至今还有一些书是这样教的),这样的确比分别命名id更节省代码,然而这样做的代价是代码失去了良好的结构。失去良好结构的后果是:一、源代码没有了可读性;二、网站增加了未知的维护成本。试想,当某一块内容因为需要而作出表现形式的变动,例如链接的颜色等等,我们就不得不去修改页面源文件,增加额外的class,工作量比起只需要调整id分组就大了许多。而且长此以往,结构将会越来越差,形成难以逆转的恶性循环。

  还有一种情况,出现在id的命名方面,也是本人曾经犯过的错误。那时为了“节省代码”,而把主菜单命名为“mm”,二级菜单命名为“m2”,三级菜单为“m3”,结果严重降低了网页的可读性,使其他同事很难接手,图省事却累了自己。同理,文件及文件夹命名方面也不宜过简,象《网站重构》里建议把图片都用“i”目录存放,个人以为并不可取,除非你能为这种高度缩写的目录结构撰写详细说明并保证每个相关人员包括其他制作人员、开发、甚至懂行的老板……都能理解和执行,否则只会给你自己增添不必要的麻烦。

2、ID是狙击枪,class是双刃剑

  想要做好网页结构,id与class都是必须熟练掌握的,所谓“两手抓,两手都要硬”。ID就象狙击枪一样,可以帮助我们精准地定位要想要加载样式的元素;而class则是侠客的佩剑,信手拈来更加轻盈灵便,两者的结合能够实现结构良好且表现丰富的页面。然而现在有一种错误的观点,就是id完全可以用class来取代,事实上许多网页源代码也的确如此,打开来通篇class,找不到一个id。造成这种现象的理由有很多种,然而自table时代传下来的根深蒂固的“class=CSS”的观念才是本因。的确,class比id用途更广更灵活,但也必须意识到,class对于构建良好的网页结构远不如id有效。id的强制唯一性使得我们可以很容易通过id检索到我们需要的任意模块,而class则没有这个优势。虽然我们可以为模块定义唯一的class名,但前提是——只有制作者本人可以动网页样式。否则换一个稍微懒一些伙计,看到样式相同便直接把前面的class拿来套用,其结果就是我们发现网页里有十几个模块都叫做“gonggao”或者“xinwen”,以至于为了区分还不得不加上大量的html注释,这样的结果显然并不是我们想要的。再者就是前面提到的,通过通用class所节省下来的代码,又不得不在每个单独定义的class中挥霍掉。

  ID是狙击枪,class是双刃剑,合则两利,分则两败。

3、并不是所有的内容都需要div做“容器”

  主菜单究竟是用<div id="mainnav"><ul>还是<ul id="mainnav">?这是一个博弈的问题。至今这个问题也没有人能够给出明确的答案,就连我也是如此。诚然,<div id="mainnav">在只包含了一个<ul>元素的时候,这个div就显得有些冗余,但有时候为了配合美工绚丽的设计,多一层标签就意味着多一层变化(有些人在a标签里套span也是如此)。而div不带任何原始属性的先天优势也是其它标签所无法比拟的。这个命题我只是想说明一件事,就是我们应该意识到,<div id="mainnav"><ul>之外,还有<ul id="mainnav">这种写法,同样具有良好的结构和语义,并且省去了一层嵌套。在我们不需要为华丽的美工劳心劳神的时候,是不是也可以让结构更加简约呢?

  这个命题其实还可以引申为——“并不是所有内容都需要块元素做容器”、“并不是所有链接都需要其它元素做容器”,例如很多页面都有的“更多”。有些人写做“<div class="more"><a>”,也有人写做<p><a>或者<strong><a>。在这些“容器”只包含了一个<a>标签的时候,它们是否还有存在的必要?直接写成<a class="more">会破坏结构吗?会缺乏语义吗?会影响布局吗?换一种思路,你也许就会有不一样的收获。

4、工作上也做到“结构与表现分离”

  关于这一点,网络上很多高手都是这样建议的,也就是先打开编辑器,把结构完整地写出来,再去CSS里写表现,而尽量不去动已经写好的结构。

  然而以看书为主要学习方式的人却很难体会,因为关于标准的书籍多半是手把手来教的,也就是必然是结构表现结合,循序渐进。虽然有些书籍有这方面的建议,但短短的几句话远不如读书过程中的潜移默化。在制作人员能够对结构良好把握的时候,同时写结构与表现也不会对结果有太大的影响。但以我的经验,结构表现分离的工作方式,要比同时写结构与表现效率高很多,同时也不容易遗漏页面上的元素。

  当然,所谓的“结构与表现分离”并不是完全不考虑表现,想要兼顾到表现,就要保证——在不破坏结构的前提下,CSS选择器能够选择到尽量多的内容。在哪些地方加class,或者用哪些标签来区分,是一个见仁见智的地方,相信每个人都有自己的体会。而结合不同的设计稿,有时候也需要做出相应的变化,然而这些变化都应该有一个同样的前提——不破坏代码的结构和可读性。

  再就是,一定要意识到,任何可视化的工具都是魔鬼。它们可视化界面下所呈现的效果,往往与真实浏览器相差千里,而我们真正要兼容的是浏览器,不是编辑器的可视化界面。

5、CSS不是万能的,没有CSS也不是万万不能的

  相比于CSS1.0时代,今天CSS可以完成更多的事情,然而需求永远是领先于技术的,CSS无法完成网页所有的表现层工作,有时候我们必须结合JS或者其他语言来实现一些效果。而另一些时候,用JS的方法比只靠CSS简单得多,并且代码结构更加良好——最典型的例子就是下拉菜单。这些时候,我们要说服自己,或者说服老板与客户,去采用更简单更合理的方式。因为DOM同样是网页标准的重要组成,并不是使用了JS我们的网页就降低了效率或是不再标准,恰恰相反,这是对JS最大的误解。说到这里不得不提一点,就是今天的时代,比以往更要求每个职业了解更多的相关知识,做设计的人要懂一点交互和制作,做制作的也必须了解设计和程序,尤其是JS这样的前端技术,只有这样,你和同事才能够更好地合作,个人的发展前景也会更加光明。

  没有CSS,指的是当我们的网站因为各种未知的原因导致CSS文件载入失败,不要因此而慌乱,这是考验我们代码质量的最佳时机。在没有CSS的时候,如果网页仍旧保持良好的可读性,这成果要远比通过W3C验证更值得我们自豪。
已有 1 人评分威望 收起 理由
greengnn + 5 我很赞同

总评分: 威望 + 5   查看全部评分

西部数码顶级域名注册商39元抢注!

蛋蛋

超级版主 手机认证 

帖子
3749
体力
15137
威望
11
发表于 2007-9-28 11:41:44 |显示全部楼层
写的不错
 ID是狙击枪,class是双刃剑,合则两利,分则两败。
发帖前请搜索,回帖前请仔细看清楼上每一层。大家的批评意见要虚心接受。有错误要积极承认。 论坛的交流气氛要和谐!内容重复和无实际意义的帖子要少发。
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

自由天堂

银牌会员 手机认证 

帖子
520
体力
1853
威望
1
发表于 2007-9-28 12:10:42 |显示全部楼层
先打开编辑器,把结构完整地写出来,再去CSS里写表现

在没有CSS的时候,如果网页仍旧保持良好的可读性


这是我最看中的两点,我也一直在努力的追求这两点的完美。

文章写的还是不错的,一起努力。

使用道具 举报

gway 
帖子
83
体力
184
威望
0
居住地
广东省 广州市
发表于 2007-9-28 12:44:35 |显示全部楼层
原帖由 3235183 于 2007-9-28 12:10 发表
先打开编辑器,把结构完整地写出来,再去CSS里写表现

在没有CSS的时候,如果网页仍旧保持良好的可读性

这是我最看中的两点,我也一直在努力的追求这两点的完美。

文章写的还是不错的,一起努力。

文章写得不错,很值得学习。

定结构很重要!
努力学习中。。。

使用道具 举报

帖子
261
体力
341
威望
1
发表于 2007-9-28 13:08:02 |显示全部楼层
好文!

我现在把ps图转换成html时
按照以下步骤进行
1.用符合语义的标签把内容标记出来

这个阶段,我的结构里一般不会出现div或者span,很干净,不会出现多余的标签

2.根据PS图,往标签中加进必要的id或者class,如果还有必要,我就加进div或者span
尽量不要有多于的标记。

一二下来,我确保了我的html代码不会出现冗余
当然,有时候为了特别的效果
我不得不加进一些空标签,这是避免不了的事情

总的来说,这样做效果还算好.

使用道具 举报

gammas 
帖子
22
体力
109
威望
0
发表于 2007-9-29 10:28:19 |显示全部楼层
学习了,不错的文章

使用道具 举报

pod 
帖子
322
体力
1104
威望
0
居住地
浙江省 宁波市
发表于 2007-9-29 13:34:36 |显示全部楼层
好文章,帮忙顶一下

使用道具 举报

Rainse 
帖子
13
体力
15
威望
0
发表于 2007-9-29 18:08:44 |显示全部楼层
要分离~

使用道具 举报

帖子
65
体力
303
威望
0
发表于 2007-9-30 13:57:45 |显示全部楼层
分析很到位 帮顶了

使用道具 举报

帖子
5
体力
35
威望
0
发表于 2007-10-2 02:01:00 |显示全部楼层
写得真的很不错,受用了。
尤其是用class和用id定义方面,我以前也一直图省事,写很多可以共用的class,的确扩展性和可读性差了。该用id的地方看来还是不能偷懒的~

使用道具 举报

帖子
140
体力
226
威望
0
发表于 2007-10-3 16:43:58 |显示全部楼层
好文……支持一下~~
我最欣赏那句话——
“网页标准化的唯一宗旨是“结构与表现分离”,而绝不是为了节省代码而节省代码。”

顶~~本文把我脑海中一些破碎的想法整理成了完整的一片~谢谢
懒是一种境界!

使用道具 举报

No01 

咚咚吆

金牌会员

帖子
5175
体力
3419
威望
1
发表于 2007-10-3 17:03:43 |显示全部楼层
总结的不错   感谢楼主分享心得  
我已不在江湖 江湖还在为了一些破浏览器争论着..

使用道具 举报

jasu 

雪兔

中级会员

帖子
414
体力
978
威望
0
居住地
浙江省 杭州市
发表于 2007-10-3 18:44:19 |显示全部楼层
写的很好..收藏ING.

使用道具 举报

Thatman

银牌会员 手机认证 

帖子
202
体力
2871
威望
0
居住地
四川省 成都市
发表于 2007-10-4 13:13:42 |显示全部楼层
好东西 受用了

使用道具 举报

mxclion

银牌会员 手机认证 

帖子
825
体力
1488
威望
0
居住地
河南省 洛阳市
发表于 2007-10-4 20:16:32 |显示全部楼层
这个文章是绝对要顶滴~也是要收藏滴
不在放荡中变坏,就在沉默中变态...

使用道具 举报

帖子
8
体力
19
威望
0
居住地
山东省 日照市
发表于 2007-10-4 20:41:56 |显示全部楼层

推好了

推好了。。。。

使用道具 举报

小繁

钻石会员 手机认证 

帖子
388
体力
5221
威望
1
居住地
河北省 石家庄市
发表于 2007-10-4 20:58:39 |显示全部楼层
新人 很适用

使用道具 举报

泡泡小新

高级会员

帖子
510
体力
634
威望
0
居住地
山东省 济南市
发表于 2007-10-5 09:02:21 |显示全部楼层
在好的 文章 都是理论,,俺还是不会

使用道具 举报

majer 
帖子
411
体力
1399
威望
0
居住地
福建省 泉州市
发表于 2007-10-5 11:30:42 |显示全部楼层
网页标准化的唯一宗旨是“结构与表现分离”,而绝不是为了节省代码而节省代码

使用道具 举报

old9 
帖子
653
体力
1762
威望
88
居住地
安徽省 合肥市
发表于 2007-10-5 14:56:40 |显示全部楼层
好文,顶一个。
http://old9.blogsome.com 已被 GFW 封锁

使用道具 举报

blank 

怿飞

荣誉管理

帖子
2375
体力
12545
威望
125
居住地
浙江省 杭州市
发表于 2007-10-6 19:38:37 |显示全部楼层
一直没有细细读来,返回再读,感觉不谋而合,谢谢带来的好文!
个人Blog:PlanABC   团队Blog:淘宝UED  专注Web前端技术!

使用道具 举报

webns 
帖子
52
体力
261
威望
0
发表于 2007-10-6 19:48:50 |显示全部楼层
不错。。。

使用道具 举报

berain 

老马

初级会员

帖子
90
体力
335
威望
0
居住地
广东省 茂名市
发表于 2007-10-7 08:57:14 |显示全部楼层
楼主,好样的
这文章能让我们这些新手少走很多弯路

使用道具 举报

帖子
59
体力
97
威望
0
发表于 2007-10-7 15:38:39 |显示全部楼层
这种东西我觉得和什么UE,UI的东西差不多,到处都是跟着放屁的家伙些。

其实现在,对于这些东西人们都以这些为基础意识去做就好了。一天在那研究来研究去的,研究出个啥了?我到现在也没觉得有啥进步的。。。

做到以人为本就够了。

支持搂住!!!

使用道具 举报

帖子
978
体力
3867
威望
4
发表于 2007-10-8 10:10:47 |显示全部楼层
恩,这个是很实用的分析,全靠经验得出啊。支持下!

使用道具 举报

斯瑞

中级会员 手机认证 

帖子
104
体力
342
威望
0
发表于 2007-10-8 10:43:30 |显示全部楼层
结构与表现分离

使用道具 举报

帖子
12
体力
33
威望
0
居住地
福建省 福州市
发表于 2007-10-8 10:47:58 |显示全部楼层
哇,这样的帖应该置顶

使用道具 举报

clearRight

初级会员 手机认证 

帖子
109
体力
461
威望
2
发表于 2007-10-8 11:19:25 |显示全部楼层

文章写的不错

“在没有CSS的时候,如果网页仍旧保持良好的可读性,这成果要远比通过W3C验证更值得我们自豪。“

css在很大程度上是将产品和包装结合起来,让用户在赏心悦目的同时又能得到自己想要的东西,剥去外面的包装,产品并没有外面的包装而打折扣,那是最满意的事情。

使用道具 举报

我给你传答案

中级会员 手机认证 

帖子
83
体力
291
威望
0
发表于 2007-10-8 12:33:10 |显示全部楼层
顶一个……
一切皆可寂寞...

使用道具 举报

yqs800 
帖子
37
体力
241
威望
0
居住地
广东省 深圳市
发表于 2007-10-8 15:14:55 |显示全部楼层
说得好,顶一个,我也学一课

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 07:47 , Processed in 0.158592 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部