discuz! X 前端文档(HTML和CSS部分)
9 k* M, v* e4 L2 a @1 M& Q$ qDiscuz!X 前端文档(HTML和css部分)
2 u# m9 v d9 O
' o5 R/ y" M8 s7 J
默认模板文件构成... 1
$ [5 K9 J9 k* ^9 ^
默认模板的图片文件构成... 2
9 _* R7 g) o3 F默认模板修改原则... 3
* X2 `& Q ~& q2 L默认模板中的一些“陷阱”... 3
8 `. Q; o3 C) I1 q: j需要兼容的浏览器列表... 4
4 ~' W& {4 {% [" D1 O' qHTML 书写规范... 5
: k0 `/ h6 G3 w
CSS 书写规范... 6
# r8 E1 a3 i5 J9 Y( y. v7 z/ z0 D
图片制作规范... 6
/ W& c3 a( B+ A7 L' }+ e3 MOne More Thing J.. 7
4 N, B4 e( |# z# V( }6 `& L: k
附言... 7
8 \! h- R9 Z9 ~+ O
0 u' ^4 E7 d( v/ p, N1 h2 R9 Q2 l. r
& A' _+ x m/ y, d) B' s$ f" V: Q. g
默认模板文件构成
* K4 ^5 P! \1 C1 \% B3 F5 i
默认模板文件地址在./upload/template/default/由以下一些文件(夹)构成:
0 s. m, v% T* [
' R0 o8 I g& I9 Y! D- p5 bcommon/
8 @+ j ~/ N' U8 }4 E
存放CSS 文件及各个公共文件
4 H/ X3 z1 z2 \$ k f6 p. Q
, t0 C5 u3 H: l6 [8 g6 U# F& Y% _forum/
1 u1 ~$ }, ?+ q2 ?! g9 A8 E c
存放论坛相关文件,还有编辑器、导读、淘帖、统计等也在其中
1 ^3 g8 [5 B8 _1 k" { w0 Q! ^
' w6 L' Y W6 E' Q1 j# Tgroup/
L3 ?. K. x; c' q9 g) T# f存放群组相关文件,部分功能依赖于论坛的模板文件,比如群组帖子
1 l9 F0 v& {" S% b7 p0 o; ^
7 o. C' b/ z% B+ H$ z: a" \+ m$ @home/
: E) z m. h% }0 @% W
存放广播、记录、日志、相册、道具、勋章、消息、好友、好友搜索、邀请、积分、收藏、动态、家园、个人资料、分享、任务、帖子、交易、悬赏、活动、投票、辩论等各种功能的文件,以space_ 开头的模板主要用来展示,以spacecp_ 开头的更多用在管理操作
& B b# K* K, ^! u/ l: F8 Z' M; z
member/
^+ a7 L( R' \* p4 f& s# h. t存放登录、注册、找回密码相关文件
( t$ A6 @# R3 i: V$ p, M& `" D' r
( k3 I0 e* }/ x
mobile/
0 q) q7 u+ D/ p存放手机版的相关文件
1 p* V3 n. w! k; _& E A' u+ V8 ]! R, u' b1 }. ^- o& M5 Y
portal/
" ?+ D" J* u5 Q' x4 Z存放门户相关文件,还有门户管理及 DIY 的一些东西
/ y, b8 K x8 N6 c; ~ }( B
7 s) N, F% J. ^6 }' F
ranklist/
+ E' |* }. ]7 f6 G% b0 c% {8 z
存放排行榜相关文件,不过排行榜功能已经不再开发了
# h! A! S. ^; ~. Z# x2 D& s) a7 z: l0 a# l; I% V P/ G O% @
search/
6 M5 q% N$ S2 q: ?3 i, w
存放搜索相关的文件,从界面上来说属于一个基本独立的功能
# H$ R: Y2 t" U) D: a
3 d u- o9 a1 J4 X9 Astyle/
$ p5 ~9 T8 W$ m5 c" i1 R3 X
默认模板的另外五种配色
# k% z1 W6 C% k. e3 q0 S" B9 j9 l- U1 z; W. C' Q) E
tag/
& V* t; ?3 W- T1 I: x6 g存放标签相关文件
, W" X8 J' R& v
. i* z& j* Q, u! _7 E
userapp/
" m f/ f4 [- g6 e, ?存放漫游应用相关的文件
8 @1 D2 r$ {) _( d$ m6 `# {9 t) d* q( K. v2 L
discus_style_default.xml
$ c: D2 q- F0 j配色文件,由后台生成,整个基调定下来后,在后台修改完导出后,一般不要再修改,因为如果修改了这个文件,站长在升级时需要重新导入才行
& h: l3 e$ |# j4 b: H2 ]: P
" v" R& f) q# zpreview.jpg
0 b& R: b( h8 b: a用在后台的预览文件
2 \8 r6 Q8 Q2 Z$ |4 C
8 j, e8 S) {. c9 N) X! S0 B) \6 {preview_large.jpg
1 J, y9 X a7 m8 U$ d用在后台的预览文件大图
4 b0 m2 O. `9 C- f默认模板的图片文件构成
# n: j) e+ h$ Y0 ~+ i L7 V默认模板的图片文件地址在./upload/static/image/,其中admincp/存放的是后台的图片及CSS 文件,其余文件夹基本可以通过文件夹名字知道其用途。
5 m! U2 Z# D( @/ Y
, |) }$ p# ?/ {+ m8 n8 X( a./upload/static/其余几个文件夹大致用途如下:
( X. w* n" f4 A9 M7 c X- [- D& y
' V- x% M% u; F. ~8 _4 Yimage_big5/
2 l4 L2 g+ r# Q, D用于繁体中文 BIG5 码
0 W. d1 a( n# h7 c, B
$ x9 p+ _7 [( w9 \, r" Q6 pjs/
s& R: t) {3 ]整站的Javascript文件都在这里
0 y/ h3 h; ?- w: C% B' j9 j1 `! ^
7 q! ?- E* Q# \: K4 J8 P! p7 t
space/
- B9 K! Z& |% d, `! y& D个人空间的八套风格文件,包括图片、CSS 文件都在这里
) Z. [9 E' M8 ~3 k8 Q8 R$ I# D0 V! E* k
3 l7 g, u1 R1 Z) r- ^
topic/
! ?; u- N: _6 l, y$ C* l门户用到的两个默认专题样式
( t, k: B8 ^% H* P6 ^. e默认模板修改原则
9 t6 h$ b: C9 g* [ g+ s# g |3 D
1、 首先应该考虑模块化、扩展性,因为同一个元素可能用在不同的页面的不同地方,如果太过于个性则可能冗余代码太多,另外使用 Discuz! 的站长有可能二次开发,所以在修改模板的时候,要尽可能多的考虑各种使用场景及可能性,这样才能平衡需求及易用性,以一种比较中庸的姿态来适应绝大多数站长的要求
& A" ^! B( l3 l7 x1 z2、 另外绝大多数第三方模板风格都是建立在默认模板的基础之上的,这就要求在修改默认模板的时候,要尽可能的考虑到方便这些风格制作者
6 H1 f) K' {0 U W! T, k
3、 还有就是 Discuz! 后台有许多开关,而且有些开关是相互关联相互影响的,所以每个页面开启或者关闭某个功能对页面布局的影响应该经常考虑,这要求首先要对后台的功能开关烂熟于心,建议每个功能自己都先开关一下试试
. K3 {2 f3 M9 G# ^9 I8 t
4、 Discuz! 的权限设计在模板中也有很多体现,因此在界面中会出现某些元素没有权限者看不到的情况,因此在修改某些地方的界面的时候,权限问题也要考虑进去
! I/ W/ I: h/ R; x% \# e% j* t
) R+ Y- m) k' H6 u& l* w默认模板中的一些“陷阱”
! C9 J% I# p7 {8 t! X1、 论坛的帖子 URL加不加参数&from=portal出来的效果是完全不一样的,不加就是默认的,加的话就会以门户的样式来展现帖子
! Z' r. s( y# ~3 P8 j' r0 ~2、 论坛的帖子和群组的帖子模板是公用的
7 m7 e9 o: o* K+ |8 i! M3、 论坛的分类信息相关页面,还有商品贴等的交易流程以及个人信用等页面隐藏的比较深,如果对这些不熟悉,建议先完整走一遍流程后再进行修改
9 z% W3 {' O4 C0 _ d4、 对于顶部导航部分的修改,要考虑三个地方:搜索、个人空间以及论坛等其他通用页面,因为这三个地方用到了不同的头文件
6 W& } ~% k/ ?/ o$ ] B, @; l$ V: ?5、 对于广播、主题、日志、相册、记录、分享、留言板、个人资料等模板文件的修改,一定要注意,这些功能每个模板里都有四种组合情况的逻辑判断:“以SNS模块风格展示/以论坛模块风格展示、个性化DIY风格/论坛样式。”不同情况下展示出来的样式是完全不一样的,所以在制作的时候一定不要遗漏
% _8 J7 v7 D1 p+ U
6、 在第5点提到的那些功能页面,URL 加不加参数&from=space显示的效果是完全不一样的,这个也需要非常小心
4 d8 f- S' G3 F& x% M( A- L/ y
7、 对于广播来说,mod=follow和mod=follow&uid=1&do=view显示的效果也是完全不一样的
$ W$ ]' G! E8 N% O8、 验证码和验证问答,这是非常容易遗漏的一点,也是让人非常头疼的一点,因为许多页面本身很好看,但是为了验证码和验证问答,只能做一些折中的修改
|+ g( C% j6 W+ l
需要兼容的浏览器列表
# ^% S) q1 Y' o5 x1 e, d
1、 市面上常见的一些浏览器,包括但不限于 IE9、IE8、IE7、IE6、Firefox、Chrome、Safari、Opera、360、Mathon等,一般都要兼容,不过一般情况下不需要做特别处理,因为只要 HTML 和 CSS 组织的比较好,就能比较巧妙的规避各个浏览器的不足之处。
% U- _) K! n4 l0 C+ |+ M' O
2、 IE6/7 的优先级现在可以放在一个比较低的位置,就是说只要保证 IE6/7 下同样的功能不会乱掉就可以,因此在制作功能的时候,可以适当的使用 HTML5 和 CSS3,对于支持的浏览器可以显示出更炫的效果,对于不支持的,就以比较平淡的形式展示
3 A- J6 ~% F; j) @( ]' w" l
HTML 书写规范1、 首先请遵守XHTML 的一些规范,比如小写、双引号、闭合等
6 Q V$ F: K, D" \8 z2、 除此之外Discuz! 本身也有一些书写规范,主要集中在表单方面:
! Q4 h4 `7 U6 S* b; ^
<label><inputtype="radio" name="" id="" class="pr"/>文字</label>
0 w9 J) L* `2 A: N0 w$ n% {
/ n) J2 A4 S5 e) n+ E" ]<label><inputtype="checkbox" name="" id=""class="pc" />文字</label>
- R, M2 D2 L( C) V; D
" r" d3 c, }/ ?' C除了属性要遵循type、name、id、class这种顺序外,还要:
Z: v# B; D# P9 Q$ z+ n
n 每个包含文字的 radio 和 checkbox(以下简称“框”)应用<label>包含起来(不兼容 IE6,但是节省许多代码)
2 [( S7 G8 k- v; \- v# X+ q7 vn 每个框应写上相应的 class="pr" 或 class="pc"
4 P1 P ^" m2 {& `& b; k
n <input />与文字之间不要空格
1 A8 F* H' Q0 ^/ I1 j$ ^" I5 y3、 对于链接,要保证href为第一个属性
+ Y+ h% F1 w' Y& Y( v: q' y/ U: k" h4、 对于图片,应该有alt属性,哪怕为空的;对于已知尺寸固定的图片,还应该写上width、height数值,这样可以加快浏览器对整个页面的渲染
1 _5 m7 O) ?+ O" \, I* p5、 凡是有数字或者英文的地方,应该前后各空一个半角空格
\! H6 O0 |" \2 {7 h4 Y1 D
6、 对于类似 <div class=“a<!--{if …}-->…<!--{/if}-->”></div>这样写是不规范的,应该去掉“<!--”和“-->”,改为<div class=“a{if …} …{/if}”></div>
4 b. k' j6 O% b9 r3 ]7 Y4 R% y+ n7、 相应的 HTML 结构应该按照从属进行缩进,标准是一个或多个 Tab
! ?4 [+ X4 q( ?$ c3 A& z6 H( e1 {; [
CSS 书写规范1、 在common.css及module.css文件里有具体的写作规范,请严格按照规范来书写,为了整个产品的规范性,建议先通读一遍
! g$ b& y9 b) w0 p1 v% D2、 需要注意的是,CSS原始文件里有一些形如{HIGHLIGHTLINK}之类的变量,这些就是在后台界面管理里写入了一些提炼出来的通用样式,所以在书写的时候,能用到变量的就不要使用具体的值。比如有个地方需要高亮链接的颜色,那么就要这样写color: {HIGHLIGHTLINK};
! d6 b$ G8 C1 t7 d0 _9 ?
3、 对于CSS 命名规范,要求不能使用大写字母,以言简意赅为主,同时尽量抽象,尽量避免类似 .blue { color: blue; } 之类的命名,而是写成比如.highlight {color: blue; },尽量考虑到扩展重用
q; X$ } j- `. J U/ P4、 尽量避免使用 CSS Hack,Discuz! 会自动判断 IE 浏览器版本,自动给<html>添加.ie_all, .ie6, .ie7, .ie8, .ie9等 class,所以需要针对这些浏览器进行 BUG 修正时,可以写成.ie_all .foo { ... } .ie6 .foo { ...}等
# U, z: H( x4 B: Q* U9 z, J
图片制作规范1、 为了保证较少的 HTTP 请求数,所以图片导出时要尽量将多张图片(常用于图标)合并为一张图片,也就是常说的 CSS 精灵。但是要把握一个度,比如站长在制作风格时经常会替换掉的图片,就一般不要合并,这个需要具体问题具体分析
, v0 U: ?) ?2 A h0 z2、 为了保证耗费较小的流量,图片导出时以 8 位 PNG为主,GIF和 JPG为辅,具体文件格式可以根据图片色彩构成来决定。对于透明图标,则一般要导出为 8 位索引色透明 PNG,以保证 IE6 下不出现灰块
8 M$ y5 @4 s7 z- u) G
3、 为了保证占用较小的客户端内存,对于需要repeat 的背景图片,尺寸要控制在一定范围内,不能太小,也不能太大。绝对不要使用 1×1 等这种 repeat-x/y 的背景图片,会非常耗费内存
1 p2 z7 Z7 ^* \4、 Discuz! 前台图片文件的命名目前没有一个统一的规范,一般都是以图片所处的功能区来命名的,不过希望能在将来能逐渐改变这种命名方式,统一为以其形态来命名。比如背景图片都以 bg_*.png 等形式命名,小图标都以 ico_*.png等形式命名,按钮都以 btn_*.png 等形式命名等(Discuz! 后台的图片文件就是采用采用此种命名方式),这种命名方式常用在游戏开发中,好处就是可以在大量的图片文件中迅速找到要找的图片,而且能知道其大致的用途
) h- ~8 o0 f* P) E7 f8 ]4 S2 OOne More Thing J在 Discuz! 这个品牌出现的地方,首字母“D”一定要大写,“iscuz”要小写,还有一点很重要的是不要忘记了最后一个“!”,只有这样才是完整的Discuz!
$ u1 {7 Z3 {6 z0 I3 i# Z附言更多详尽的文档请参考 SVNdocuments 目录下的一些文档。