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

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 8293|回复: 32

[讨论] 分享我的页面制作方法 - HTML [复制链接]

sorrycc 楼主
帖子
39
体力
118
威望
1
居住地
浙江省 杭州市
发表于 2008-2-20 22:15:13 |显示全部楼层
原文:http://www.33lab.cn/?p=15

做前端也有几年时间了,不敢说能把他看地多透,但是多多少少还是有些自己的东西。下面以 Tudou.com 的首页为例,总结总结。

Html 演示地址:http://www.33lab.cn/demo/200802/tudou.htm



就制作而言,我将一张页面分为四层:框架、布局、模块、列表和数据块。



一、框架

页面的框架基本上都是:“头”、“主体”、“尾”。但是对于一些页面如Tudou.com,由于布局的需要,还应在“头”的下面还要加个“菜单”。



二、布局(以下用#ID表示页面元素)

#Head和#Foot里的就不说了,具体查看演示页面源码。

布局说的是将#Main里的内容分成几大块。我们看Tudou.com,#Main里典型的左右结构,我们用#Layout_1,#Layout_2表示。如图



三、模块

布局#Layout_1,#Layout_2里的块就是模块了,

按我的理解,模块至少要有一个ID,Class则要视页面设计,给需要重用的加上。

关于模块的ID名称,要取个有意义的名字,当然偷懒的可以用#Col_1,#Col_2,。。。

模块的Class名称用.cols_1,.cols_2,。。。


模块内部的如下图



四、列表和数据块

模块的主体是由列表组成的,而列表里则包含数据块。

按我的理解,页面上的信息其实就是不同类型的列表。我们应将典型的列表方式提取出来,放在公用样式里(public.css)。

以Tudou.com为例,需要定义到public.css里的列表至少要有以下三种:

   1. .list-v 垂直列表方式 (图片和文字成垂直排列)
   2. .list-h 水平列表方式 (图片和文字成水平排列)
   3. .list-t 文字列表方式

数据块其实是微格式的一个变相应用,给不同的数据元素定义固定的结构。

Tudou.com 需要定义的数据块有:

   1. .mVideo (视频)
   2. .mList (豆单)
   3. .mUser (用户)

比如 .mVideo 应该是这样的:

  1. <div class=“mVideo”>
  2.         <div class=“p”><a href=“” title=“”><img src=“” alt=“阿联又挂彩 有望首发战公牛” /></a></div>
  3.         <div class=“d”>
  4.                 <div class=“d_name”><a href=“” title=“”>阿联又挂彩 有望首发战公牛</a></div>
  5.                 <div class=“d_user”><a href=“” title=“”>阿联又挂彩 有望首发战公牛</a></div>
  6.                 <div class=“d_length”>06:88</div>
  7.                 <div class=“d_time”>发布时间:<span>2007-10-08 14:31</span></div>
  8.                 <div class=“d_intro”>阿联又挂彩阿联又挂彩阿联又挂彩</div>
  9.                 <div class=“d_honor”>荣誉:<span><img src=“” alt=“Ç¿” /></span></div>
  10.                 <div class=“d_view”>人气:<span>222</span></div>
  11.                 <div class=“d_comment”>评论:<span>323</span></div>
  12.                 <div class=“d_favorite”>收藏:<span>32</span></div>
  13.                 <div class=“d_type”>类型:<span><a href=“” title=“”>µçÓ°</a><a href=“” title=“”>µçÊÓ¾ç</a></span></div>
  14.                 <div class=“d_tag”>标签:<span><a href=“” title=“”>Twins</a><a href=“” title=“”>Ñݳª»á</a></span></div>
  15.                 <div class=“d_subject”>专题:<span><a href=“” title=“”>±¬ÁÏ</a></span></div>
  16.         </div>
  17. </div>
复制代码




最后,附上关键字表,就是一些用于公共定义的ID和Class名称。
ID

   1. #B-* // Body用
   2. #Head, #Main, #Foot //布局用ID
   3. #Message // 系统消息用
   4. #Logo, #Toolbar, #Search, #Menu // Head内元素
   5. #Layout_*, #Group_*, #Col_* // Main内元素
   6. #Links, #CopyRight // Foot内元素
   7. #B* // 广告位,与class=”b”结合使用
   8. #Plugin // Banner用

Class

   1. .txt, .btn, .label_checkbox, .label_input, .handle // 表单内元素
   2. .meat // 模块主体元素
   3. .list_*(.list_v, .list_h, .list-t, .list_top, …) // 列表元素,详见“列表”
   4. .m // 更多,可延伸至“绝对定位于右上角”的元素
   5. .s1, .s2, … // 用于子单元块需各自定义样式的元素,如菜单、排行榜等
   6. .s // 特殊元素,如果一个元素相对于兄弟节点特殊,则用之
   7. .b // 广告位
   8. .p, .d, .d_*, .h // 数据块内元素,分别为图片、详细、详细内元素、操作
   9. .handle // 操作元素
  10. .m_*(.mVideo, .mComment, .mUser, .mSubject, …) // 数据块元素
  11. .*_fix // *元素的补丁元素
  12. .current // 当前元素
已有 1 人评分威望 收起 理由
greengnn + 1 谢谢分享

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

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

探索

金牌会员 手机认证 

帖子
8820
体力
4099
威望
0
发表于 2008-2-20 22:52:08 |显示全部楼层
其实做到了后面都大同小异。

但是还有就是整个网站的继承性,统一性。

CLASS的重用。


比如 列表页:

大多页面都差不多,用CLASS实现。
其他在引用他,不同的在稍做处理。

------------
.b .p 跟某些关键字相同 使用的少

其他的都非常支持lz。
下班的时候还在装忙,最后发现那个文件还是只读模式。。。
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

小色

金牌会员 手机认证 

帖子
1963
体力
3396
威望
0
发表于 2008-2-20 23:09:36 |显示全部楼层
示例代码典型的div,span综合症。
这些标签能描述这段内容的意思么?

另外,class和id的定义,有些是首字母大写,有的是驼峰式,有些是中划线,下划线...
要知道,开发团队看代码时间一般都比写代码时间要长。
.b,.p这样的定义,新成员没有认真看团队开发规范,是看不懂什么意思的。

[ 本帖最后由 firepage 于 2008-2-20 23:25 编辑 ]

使用道具 举报

Jolinv 
帖子
94
体力
190
威望
0
居住地
四川省 成都市
发表于 2008-2-21 03:39:45 |显示全部楼层
细心学习~ 谢谢楼主分享~

使用道具 举报

sorrycc 楼主
帖子
39
体力
118
威望
1
居住地
浙江省 杭州市
发表于 2008-2-21 09:25:20 |显示全部楼层
@ z3333426
.p 原来我们用的是 .photo,但是因为页面上的数据块太多,用.p一个原因是为了节约字节,另外也是考虑可以节约关键字。

@ firepage
关于Class和ID的命名,因为没有统一的规范,所以各个团队之间可能差别较大。

我们是这样定义的,有些地方用了不同的命名方法,是为了区别。
   1. 名称必须要有实际意义,容易理解。
   2. 除了Body和Form内元素的ID,用帕斯卡命名法,字母和数字之间用”_”连接,如#HotSubject, #Col_1…
   3. Body的ID,须以”B-”开头,字母之间用”-”连接,如#B-Index, #B-Subject-Index…
   4. Form内元素的ID,须用小写字母,如#user, #email…
   5. Class,用小写字母,单词之间用”_”连接,如.color_red, .m, .s… (全局定义的Class用"_"连接)

至于新成员,我觉得要融入团队,看开发规范是必须的。:)

使用道具 举报

蓝雪海

钻石会员 手机认证 

帖子
452
体力
6696
威望
0
发表于 2008-2-21 09:59:53 |显示全部楼层
...路过.
..停下..
.看看...
..无语....
...转身...
..摇头..
.离去.
-------
Let's go home!

使用道具 举报

wqyz 

区区

中级会员

帖子
127
体力
544
威望
0
居住地
浙江省 杭州市
发表于 2008-2-21 10:23:42 |显示全部楼层

不知道要说些什么了`````````

- - `````````

使用道具 举报

帖子
409
体力
1116
威望
2
居住地
广东省 广州市
发表于 2008-2-22 15:36:45 |显示全部楼层
不大认同 这页面太复杂了 如果内容多就看不明白了 后期修改也难 我觉得P H UL SPAN 这些在一些class相同的层上多用 那代码看上去就容易懂多了 我觉得一大堆div结束标签数起来都麻烦

使用道具 举报

奔波儿灞

高级会员 手机认证 

帖子
276
体力
619
威望
10
发表于 2008-2-22 16:37:07 |显示全部楼层
从结构出发的思路是正确的,不过HTML基础还有待提高哟。

使用道具 举报

帖子
12
体力
30
威望
0
居住地
广东省 东莞市
发表于 2008-2-23 10:09:32 |显示全部楼层
樓主寫的不錯

使用道具 举报

cssxp 

体验css

中级会员

帖子
207
体力
361
威望
14
发表于 2008-2-23 10:23:57 |显示全部楼层
思路很清晰了,呵呵。

关键是传播方法了,而菜好不好吃是个人喜好问题了。
有人喜欢吃甜食,有人喜欢吃辣的。众口难调。
厨师么该怎么炒菜就怎么炒菜了,
不要管哪些不掏钱的人是怎么评论应该怎么怎么做了。

使用道具 举报

小强ORG

银牌会员 手机认证 

帖子
577
体力
1781
威望
12
居住地
湖南省 长沙市
发表于 2008-2-23 12:07:51 |显示全部楼层
之前看过一篇文章,推荐id命名最好避免下划线“_”和链接符“-”,应该用英文大小写结合组词。
貌似<h2>下面应该是个<p>标签,那样更符合语义吧。

使用道具 举报

m4er 
帖子
186
体力
855
威望
0
发表于 2008-2-25 00:03:04 |显示全部楼层
原帖由 firepage 于 2008-2-20 23:09 发表
示例代码典型的div,span综合症。
这些标签能描述这段内容的意思么?

另外,class和id的定义,有些是首字母大写,有的是驼峰式,有些是中划线,下划线...
要知道,开发团队看代码时间一般都比写代码时间要 ...

我想firepage兄弟把问题已经说的很透彻了,虽然说的有点不太和气!
我很奇怪,楼主怎么会用了那么多的div class span!
为什么不用p h2 h3?就是用列表ul也比那么多div来得更合情合理的!结构良好且有意义的xhtml标记还是我们所需要的。
就个人开发而言,也得养成一个书写良好CSS选择器代码的习惯!如果是团队开发,没有一个前期的CSS开发规范说明书更是一件很让人不可思议的事!
我不喜欢什么camel case,也不喜欢上划线、下划线,我只喜欢用小写,我想这足够了!长点怕什么?如果名称长的让你觉得可怕,只能说明我表述能力不行!
WEB标准推荐在分配ID与类名时,尽可能保持名称有意义且与表现无关!有意义就是让不是你团队的人能够看懂你的钩子是描述什么的。
http://www.m4er.cn/post/11.html
学无止境...

使用道具 举报

sorrycc 楼主
帖子
39
体力
118
威望
1
居住地
浙江省 杭州市
发表于 2008-3-21 14:49:10 |显示全部楼层
hi, m4er
说实话,现在的{<div class="d"><div .d_xx><div .d_xx></div>},半年前我在自己公司的网站上也是用{ul,li}来实现的。

为什么我会选择这样的结构?包括用那么多的class。
可以说是为了更好的扩展性吧。
其实这种结构是另一位同事从microformat引入的,当时我也不认同。觉得用那么多的class干嘛,ul+li多好,即简单又省字节。
但是后来事实证明他是对的,虽然字节上多了点,但是却预见性地对一些潜在的需求提供了便利。

比如说:对所有的播客设置不同的链接颜色。.mVideo .d_user a { color:#xxx } 即可
比如说:数据一致性项目,因为html上的数据不能保持实时更新,所以我们在页面加载完成之后用js异步读取数据后进行相应的覆盖。拖全站统一的数据块格式的福,实施起来只写了一个js函数就搞定了。

如果用不设置class,对于上面两个例子来说,就要重写结构了,改html了。这对于全站生成html的大站来说是很可怕的。

实施标准的目的之一就是把表现和结构分开。咋分?就是改表现的时候改css,改结构的时候改html。
所以我认为html的结构一开始就要设计地有很好的扩展性。

[ 本帖最后由 sorrycc 于 2008-3-21 14:57 编辑 ]

使用道具 举报

帖子
7
体力
25
威望
0
发表于 2008-3-21 15:33:07 |显示全部楼层
看LZ的帖子 受益不少...顶

使用道具 举报

奔波儿灞

高级会员 手机认证 

帖子
276
体力
619
威望
10
发表于 2008-3-21 15:33:18 |显示全部楼层
我想扩展性好的结构也绝不是必须纯div构成,用h、p、li这些标签,同样可以将class细化以增强扩展性,可读性跟divitis相比也绝非同日而语。

使用道具 举报

帖子
1
体力
12
威望
0
发表于 2008-3-21 16:21:23 |显示全部楼层
支持一下LZ 辛苦了

使用道具 举报

karlen 

状元

高级会员 手机认证 

帖子
706
体力
925
威望
2
发表于 2008-3-21 17:15:22 |显示全部楼层
又是DIV+CSS
http://www.mimibaike.com 秘密百科 http://www.css6.com

使用道具 举报

dous 
帖子
88
体力
376
威望
0
发表于 2008-3-21 17:42:01 |显示全部楼层
如果以后只改css不能修改结构,看来这种复杂的div+class还是有存在价值。
大站毕竟不是小作坊
研究各版主发的帖子

使用道具 举报

帖子
10
体力
41
威望
0
发表于 2008-3-22 23:35:39 |显示全部楼层
语义清晰的xhtml很好,但是目前的浏览器兼容不那么友好。
<p>、<ul>、<h2>等等在FF和IE下都不同,与其写一堆冗余hack,相对而言有些地方用div、span代替更方便了。

使用道具 举报

mallee 

老李飞砖

银牌会员

帖子
662
体力
2394
威望
2
居住地
河北省 秦皇岛市
发表于 2008-3-23 11:34:24 |显示全部楼层

回复 #14 sorrycc 的帖子

比较认同这一点
用那么多的class后期维护起来是很方便的

使用道具 举报

大萬

高级会员

帖子
276
体力
1150
威望
2
发表于 2008-3-23 13:54:33 |显示全部楼层
很实用的分享,楼主辛苦
九星时代:招设计师 http://hr.9stars.cn

使用道具 举报

帖子
1
体力
12
威望
0
发表于 2008-3-23 15:03:25 |显示全部楼层

“苏醒中国”杯首届音画大赛报名贴

“苏醒中国”杯首届音画大赛将于四月一日全面启动,组委会诚邀活动合作伙伴,欢迎爱好FLASH制作的朋友参与比赛,本次活动奖品丰厚,机会多多,不容错过!
大赛宗旨:求音画搏客共谋事业发展;
          邀I T精英同创绚烂人生!
大赛口号:苏醒乐队,唱响中国!
组委QQ:57764701 (指定群)
报名地址:中国苏醒乐队: http://q.163.com/iivf8888/
          靓妹有约:     http://q.163.com/liangmei/
          全球闽南联盟: http://q.163.com/liyanhong

使用道具 举报

帖子
81
体力
143
威望
0
发表于 2008-3-23 22:00:43 |显示全部楼层
俺也来分享下前一阵的工作吧,http://intl.2008.cctv.com/



#wrap 与 #contaier 控制页面尺寸及背景图,没啥好说的哈


头部结构

ul li结构在一般情况下使用display:inline来实现横排,padding和margin来扩大可点击范围与间距.


内容部分结构

.col为左右大块,宽度及位置由.primary .secondary来分别定义

内部分割块为多个.box 统一定义与.col的边距,避免ie5的盒模型问题,由.miniCol来进一步块切割

最初设计稿为上右下左4圆角模块,.rbord即为此设定,而后修改为仅下方圆角,则由.rbtm实现,各不同moudles的内部由各自的名称来定义,如.express,.doYouKnow等等.

.entryTitle与.entryContent源自前一阵看的微格式,据说是ie8支持摘出其中的内容,没细加研究\测试了,望了解的同志告之一二.


CSS部分

分为layout,typo,themes,moudles几部分
布局和字体其实应该是放到最前面的,然后再是模块的控制,最后再加载图片无数的themes部分.
不过在做这块的时候由于项目逼的时间很紧,实在是赶得大伙都够呛,很多预先的想法都没有很好的实施.惭愧一下,顺便bs项目方的作风,距离上线不到2周时间才拍定下来.

样式表的这个样式 布局分离的做法俺也是在实践当中,好处应该是在加载的顺序上页面呈现的过程不会太离谱,有的大型站在页面未加载完之前就是整个一条很长很长的;而不好的地方应该就是会增加css文件体积了吧,毕竟俺起的名字都很长一条.



PS:不太擅长写这类文档,新来的小姑娘说看不懂我写的首页部分,先写点东西出来,以免交接的时候出问题厄.顺便问下,俺准备跳槽,有公司要么?
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
81
体力
143
威望
0
发表于 2008-3-24 04:23:50 |显示全部楼层
刚才firefox3崩溃了一下,于是打了一大段的文字就这样木有了... 俺慢慢回忆吧


关于html的命名,除了最外围的header,mainContent,footer在确定唯一的时候使用id来命名,其他moudles都使用多个classname(不超过3个为宜,虽然我很想写出很多的公共类让程序自行挑选添加进去.如class="iAmBox iHaveOneListColumn theListColumnLikeHorizontal myFontColorisred thisListStyleHaveaLitttleStar")

首先从顺序上应该先是public的,如.box,.col,.miniCol等等,然后再是对该moudle的描述,如.primary,.secondary | .liveTalk, .doYouKnow
写出来在html上即为<div class="box liveTalk">,而样式表内的顺序也是如此,public的类放在moudles之前,特定的moudle定义便自行覆盖掉了前面的公用属性,有特殊要求的还可以通过在前面附加#mainContent来进一步提高优先级

可能有些朋友会觉得为什么不直接给不同的moudles直接加上id来区分?我个人觉得id的优先级太高,尽量是不用它来写,以免在多人协作的时候出现命名重复(虽然这个问题用我现在的多个classname也并没有得到解决,我倡议的结果是尽量使用页面上的详细描述来进行命名,实在没把握的时候就到moudles的样式表里CTRL+F一下o_o!),只在js需要操作node的时候再加上id.如下图的"Olympic Express"



适量的在外面多套些div对以后的维护工作还是很有帮助的.
也实在是搞不懂微格式这老调牙的东西怎么又被捡起来了,不过sorrycc同学那一堆
<div class="d_name">
<div class="d_user">
<div class="d_length">
<div class="d_time">
<div class="d_intro">

确实是看得心里发憷哈,虽然俺对微格式的了解不太深,不过那玩意貌似也只是对classname的一套要求吧,也没有规定非用div才能做吧?
http://microformats.org/code/hcalendar/creator 可以参考下这个生成出来的代码.microformat与合理使用html标签并不冲突,也许是你们的"数据一致性"对这个有要求吧.
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

gulu77 
帖子
297
体力
1080
威望
13
居住地
广东省 广州市
发表于 2008-3-24 09:16:03 |显示全部楼层
楼住所做的只是div+css ,并不是xhtml/html+css,没有语义

使用道具 举报

sorrycc 楼主
帖子
39
体力
118
威望
1
居住地
浙江省 杭州市
发表于 2008-3-24 09:33:09 |显示全部楼层
原帖由 spritefire 于 2008-3-24 04:23 发表
刚才firefox3崩溃了一下,于是打了一大段的文字就这样木有了... 俺慢慢回忆吧


关于html的命名,除了最外围的header,mainContent,footer在确定唯一的时候使用id来命名,其他moudles都使用多个classname(不超 ...


其他的我不想解释,说下我对给moudles加多个classname的理解吧。

我觉得存在着几个问题:

1. 如果要更改一个或几个moudle的样式,是不是要更换moudle的classname?如果是的话,这样就要改html了,背离了“分离结构和表现”的根本目的。
2. 不给moudle加id我觉得不可取。一个是为了方便dom操作,取id应该是最快速的方法。另一个还是和第一个问题描述的一样,更改特定moudle的样式的时候会有麻烦。


个人观点。

使用道具 举报

帖子
81
体力
143
威望
0
发表于 2008-3-24 10:45:57 |显示全部楼层
1. 如果要更改一个或几个moudle的样式,是不是要更换moudle的classname?如果是的话,这样就要改html了


多个classname来定义moudle的样式其实与id来定义差别不大,按我之前说的公共类和特定类顺序排下来的话,特定的类可以覆盖掉之前定义的公用属性.
后面的特定描述classname是不重复的,没有更换的必要,咱们做法上的差别也就是我把你所用的IDname放进class里面去了

第2个问题,俺js不咋样,目前只会用jQuery,取classname也可以定义到位置(这里应该不是node吧,好像取出来的是jquery的对象),俺估计应该效率是比不上id的。以后还请sorrycc同学能指点下js方面的问题哈,俺正努力学习这方面

使用道具 举报

zxfly 
帖子
872
体力
2081
威望
0
居住地
福建省 厦门市
发表于 2008-3-24 14:05:12 |显示全部楼层
开始结构的观点同意,之后的代码示例从语义角度上看确实不理想。不过没参与过这么大的站点制作,所以保留意见。因为css不够完善,实现结构表现分离也真不是件简单的事,能做的也只是保留语义的情况下尽可能地减少结构的修改,前不久粗看了css3,发现功能强大不少,期待中……

使用道具 举报

蓝蓝的神仙

钻石会员

帖子
1052
体力
5994
威望
3
居住地
上海市 闵行区
发表于 2008-3-24 16:11:29 |显示全部楼层
原帖由 lanxuehai 于 2008-2-21 09:59 AM 发表
...路过.
..停下..
.看看...
..无语....
...转身...
..摇头..
.离去.
-------

同道中人
Welcome to MrZhang.me

使用道具 举报

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

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

GMT+8, 2012-2-13 10:49 , Processed in 0.159622 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部