zTree v3.5 Css 詳解
馬上要開始研究新版本的 zTree 結(jié)構(gòu)了,所以要先把現(xiàn)在的情況再多分析一下,做了 v3.x 版本后也一直沒有制作 css 的文檔,特在此進(jìn)行整理一下,一邊講結(jié)構(gòu),一邊說說小技巧,希望能給大家一些幫助。
zTree 的 css 文件就是 zTreeStyle.css,其實(shí) 這里面的 css 內(nèi)容并不多,熟悉 css 的應(yīng)該看起來還是挺容易的。
首先要強(qiáng)調(diào)的就是,制作 zTree 時(shí)一定要讓 ul 容器設(shè)置 className:ztree; 這個(gè)主要就是為了避免與頁面上自定義的css 或者其他插件的css 沖突;但 css 內(nèi)容太多了,我不可能為了100%的避免沖突,就在 css 內(nèi)把所有的 css 屬性都設(shè)置一遍,如果這么做的話這個(gè) css 就太臃腫了,基本上我我對(duì)常用的這幾個(gè)屬性進(jìn)行了重新設(shè)定。 所以,如果當(dāng)你使用 zTree 時(shí)出現(xiàn)了樣式異常的話,就請(qǐng)用調(diào)試工具找到?jīng)_突的原因,然后將適用于 zTree 的屬性補(bǔ)充到 zTree 的 css 內(nèi)即可。
同時(shí),因?yàn)?zTree 的 css 都有 .ztree 做約束,所以一般情況下 zTree 的樣式是不會(huì)引起頁面上其他內(nèi)容樣式異常的。
了解 css 之前先看看 zTree 的 DOM 結(jié)構(gòu)吧:
zTree 的結(jié)構(gòu)就是 ul 里面包著 li ,li 里面 再包著 ul ......每一個(gè)節(jié)點(diǎn)都以一個(gè) li 為主,它的子節(jié)點(diǎn)的 DOM 都存在于這個(gè) li 里面的 ul 內(nèi)
每個(gè)節(jié)點(diǎn) li 的 id 就是這個(gè)節(jié)點(diǎn)的 tId 值
父節(jié)點(diǎn)的 +/- 號(hào)就是 li 內(nèi)的第一個(gè) span, id 是 tId + _switch
節(jié)點(diǎn)的名稱是 a 標(biāo)簽,id 是 tId + _a
節(jié)點(diǎn)的圖標(biāo)在 a 標(biāo)簽內(nèi),id 是 tId + _ico
節(jié)點(diǎn)的名稱文字在 a標(biāo)簽內(nèi),id 是 tId + _span
子節(jié)點(diǎn)容器 是 ul,id 是 tId + _ul
節(jié)點(diǎn)的 li、a、ul 都帶有 level 的 class,這樣你可以專門針對(duì)不同等級(jí) level 設(shè)置自定義的樣式
下面開始解析 css 吧:
- .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
- .ztree {margin:0; padding:5px; color:#333}
- .ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
- .ztree li ul{ margin:0; padding:0 0 0 18px}
- .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
以上部分是 zTree 的總體樣式,看一眼就知道,真么啥好說的了....
- .ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
- text-decoration:none; vertical-align:top; display: inline-block}
- .ztree li a:hover {text-decoration:underline}
以上部分是 zTree 節(jié)點(diǎn)顯示名稱的 a 標(biāo)簽基本樣式
- .ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
- .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
以上部分是 zTree 節(jié)點(diǎn)當(dāng)前被選中時(shí)的樣式,有 Edit 的是處于編輯模式時(shí)的樣式
- .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
- opacity:0.8; filter:alpha(opacity=80)}
- .ztree li a.tmpTargetNode_prev {}
- .ztree li a.tmpTargetNode_next {}
以上部分是 zTree 節(jié)點(diǎn)拖拽時(shí),目標(biāo)節(jié)點(diǎn)根據(jù) inner 、prev、next 不同狀態(tài)時(shí)的樣式
- .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
- font-size:12px; border:1px #7EC4CC solid; *border:0px}
以上部分是 zTree 節(jié)點(diǎn)編輯名稱時(shí)的 input 的樣式
- .ztree li span {line-height:16px; margin-right:2px}
以上部分是 zTree 節(jié)點(diǎn)內(nèi) span 的基礎(chǔ)樣式
- .ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
- border:0 none; cursor: pointer;outline:none;
- background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
- background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
以上部分是 zTree 節(jié)點(diǎn) +/- 號(hào)、checkbox、radio、圖標(biāo) 的基礎(chǔ)樣式
- .ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
- .ztree li span.button.chk.checkbox_false_full {background-position:0 0}
- .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
- .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
- .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
- .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
- .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
- .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
- .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
- .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
- .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
- .ztree li span.button.chk.radio_false_full {background-position:-28px 0}
- .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
- .ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
- .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
- .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
- .ztree li span.button.chk.radio_true_full {background-position:-42px 0}
- .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
- .ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
- .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
- .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
以上部分是 checkbox、radio 所有狀態(tài)時(shí)的樣式。
提醒:有不少朋友希望使用 checkbox 但還需要單選功能,你只需要修改一下這部分的 css 讓 radio 的圖標(biāo)都換成對(duì)應(yīng)的 checkbox 的圖標(biāo),同時(shí)使用 zTree 時(shí)設(shè)置為 radio 模式就可以了!
- .ztree li span.button.switch {width:18px; height:18px}
- .ztree li span.button.root_open{background-position:-92px -54px}
- .ztree li span.button.root_close{background-position:-74px -54px}
- .ztree li span.button.roots_open{background-position:-92px 0}
- .ztree li span.button.roots_close{background-position:-74px 0}
- .ztree li span.button.center_open{background-position:-92px -18px}
- .ztree li span.button.center_close{background-position:-74px -18px}
- .ztree li span.button.bottom_open{background-position:-92px -36px}
- .ztree li span.button.bottom_close{background-position:-74px -36px}
- .ztree li span.button.noline_open{background-position:-92px -72px}
- .ztree li span.button.noline_close{background-position:-74px -72px}
- .ztree li span.button.root_docu{ background:none;}
- .ztree li span.button.roots_docu{background-position:-56px 0}
- .ztree li span.button.center_docu{background-position:-56px -18px}
- .ztree li span.button.bottom_docu{background-position:-56px -36px}
- .ztree li span.button.noline_docu{ background:none;}
以上部分是 zTree 節(jié)點(diǎn)的 +/- 號(hào)部分的樣式
- .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
- .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
- .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
以上部分是 zTree 節(jié)點(diǎn)默認(rèn)圖標(biāo)的樣式
- .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
- .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
以上部分是 zTree 節(jié)點(diǎn)默認(rèn)的編輯、刪除按鈕的樣式
- .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
以上部分是 zTree 節(jié)點(diǎn)異步加載時(shí) loading 圖標(biāo)的樣式
- ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
以上部分是 zTree 拖拽節(jié)點(diǎn)成為 根節(jié)點(diǎn)時(shí),zTree 的臨時(shí)樣式
- span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
- background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
- background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard
以上部分是 zTree 拖拽節(jié)點(diǎn)時(shí)臨時(shí)箭頭的樣式
- ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
以上部分是 zTree 拖拽節(jié)點(diǎn)時(shí),跟隨鼠標(biāo)移動(dòng)的臨時(shí)節(jié)點(diǎn)的樣式
- .zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
以上部分是 zTree 拖拽節(jié)點(diǎn)時(shí),頁面上其他 iframe 的遮罩圖層的樣式
補(bǔ)充:對(duì)于想放大字體、放大圖標(biāo)的朋友,很抱歉,關(guān)鍵問題是本人美工設(shè)計(jì)能力太差,另外時(shí)間有限,所以對(duì)于 v3 版本并沒有制作其他樣式模板,不過看了以上介紹后,是不是覺得調(diào)整起來其實(shí)還是很簡單的? 大家只需要注意一下 height 的值,包括這些 height 之間的差值,注意到這些細(xì)節(jié),然后去調(diào)整就可以了, 最后別忘了更換你的大圖標(biāo)的img 圖標(biāo)。
原文鏈接:http://my.oschina.net/dyhunter/blog/97535
【編輯推薦】