zTree v3.5 Css 详解

开发 前端
首先要强调的就是,制作 zTree 时一定要让 ul 容器设置 className:ztree; 这个主要就是为了避免与页面上自定义的css 或者其他插件的css 冲突

马上要开始研究新版本的 zTree 结构了,所以要先把现在的情况再多分析一下,做了 v3.x 版本后也一直没有制作 css 的文档,特在此进行整理一下,一边讲结构,一边说说小技巧,希望能给大家一些帮助。

zTree 的 css 文件就是 zTreeStyle.css,其实 这里面的 css 内容并不多,熟悉 css 的应该看起来还是挺容易的。

首先要强调的就是,制作 zTree 时一定要让 ul 容器设置 className:ztree; 这个主要就是为了避免与页面上自定义的css 或者其他插件的css 冲突;但 css 内容太多了,我不可能为了100%的避免冲突,就在 css 内把所有的 css 属性都设置一遍,如果这么做的话这个 css 就太臃肿了,基本上我我对常用的这几个属性进行了重新设定。 所以,如果当你使用 zTree 时出现了样式异常的话,就请用调试工具找到冲突的原因,然后将适用于 zTree 的属性补充到 zTree 的 css 内即可。

同时,因为 zTree 的 css 都有 .ztree 做约束,所以一般情况下 zTree 的样式是不会引起页面上其他内容样式异常的。

了解 css 之前先看看 zTree 的 DOM 结构吧:

zTree 的结构就是 ul 里面包着 li ,li 里面 再包着 ul ......每一个节点都以一个 li 为主,它的子节点的 DOM 都存在于这个 li 里面的 ul 内 

每个节点 li 的 id 就是这个节点的 tId 值

父节点的 +/- 号就是 li 内的第一个 span, id 是 tId + _switch

节点的名称是 a 标签,id 是 tId + _a

节点的图标在 a 标签内,id 是 tId + _ico

节点的名称文字在 a标签内,id 是 tId + _span

子节点容器 是 ul,id 是 tId + _ul 

节点的 li、a、ul 都带有 level 的 class,这样你可以专门针对不同等级 level 设置自定义的样式

下面开始解析 css 吧:

  1. .ztree * {padding:0margin:0font-size:12pxfont-familyVerdanaArialHelvetica, AppleGothic, sans-serif}  
  2. .ztree {margin:0padding:5pxcolor:#333}  
  3. .ztree li{padding:0margin:0list-style:noneline-height:14pxtext-align:leftwhite-space:nowrapoutline:0}  
  4. .ztree li ul{ margin:0padding:0 0 0 18px}  
  5. .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;} 

以上部分是 zTree 的总体样式,看一眼就知道,真么啥好说的了....

  1. .ztree li a {padding:1px 3px 0 0margin:0cursor:pointerheight:17pxcolor:#333background-colortransparent;  
  2. text-decoration:nonevertical-align:topdisplay: inline-block}  
  3. .ztree li a:hover {text-decoration:underline

以上部分是 zTree 节点显示名称的 a 标签基本样式

  1. .ztree li a.curSelectedNode {padding-top:0pxbackground-color:#FFE6B0color:blackheight:16pxborder:1px #FFB951 solid; opacity:0.8;}  
  2. .ztree li a.curSelectedNode_Edit {padding-top:0pxbackground-color:#FFE6B0color:blackheight:16pxborder:1px #FFB951 solid; opacity:0.8;} 

以上部分是 zTree 节点当前被选中时的样式,有 Edit 的是处于编辑模式时的样式

  1. .ztree li a.tmpTargetNode_inner {padding-top:0pxbackground-color:#316AC5color:whiteheight:16pxborder:1px #316AC5 solid;  
  2. opacity:0.8; filter:alpha(opacity=80)}  
  3. .ztree li a.tmpTargetNode_prev {}  
  4. .ztree li a.tmpTargetNode_next {} 

以上部分是 zTree 节点拖拽时,目标节点根据 inner 、prev、next 不同状态时的样式

  1. .ztree li a input.rename {height:14pxwidth:80pxpadding:0margin:0;  
  2.         font-size:12pxborder:1px #7EC4CC solid; *border:0px

以上部分是 zTree 节点编辑名称时的 input 的样式

  1. .ztree li span {line-height:16pxmargin-right:2px

以上部分是 zTree 节点内 span 的基础样式

  1. .ztree li span.button {line-height:0margin:0width:16pxheight:16pxdisplay: inline-blockvertical-align:middle;  
  2.         border:0 nonecursorpointer;outline:none;  
  3.         background-color:transparentbackground-repeat:no-repeatbackground-attachmentscroll;  
  4.         background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} 

以上部分是 zTree 节点 +/- 号、checkbox、radio、图标 的基础样式

  1. .ztree li span.button.chk {width:13pxheight:13pxmargin:0 3px 0 0cursorauto}  
  2.     .ztree li span.button.chk.checkbox_false_full {background-position:0 0}  
  3.     .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}  
  4.     .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}  
  5.     .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}  
  6.     .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}  
  7.     .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}  
  8.     .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}  
  9.     .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}  
  10.     .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}  
  11.     .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}  
  12.     .ztree li span.button.chk.radio_false_full {background-position:-28px 0}  
  13.     .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}  
  14.     .ztree li span.button.chk.radio_false_part {background-position:-28px -28px}  
  15.     .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}  
  16.     .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}  
  17.     .ztree li span.button.chk.radio_true_full {background-position:-42px 0}  
  18.     .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}  
  19.     .ztree li span.button.chk.radio_true_part {background-position:-42px -28px}  
  20.     .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}  
  21.     .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px

以上部分是 checkbox、radio 所有状态时的样式。

提醒:有不少朋友希望使用 checkbox 但还需要单选功能,你只需要修改一下这部分的 css 让 radio 的图标都换成对应的 checkbox 的图标,同时使用 zTree 时设置为 radio 模式就可以了! 

  1. .ztree li span.button.switch {width:18pxheight:18px}  
  2.     .ztree li span.button.root_open{background-position:-92px -54px}  
  3.     .ztree li span.button.root_close{background-position:-74px -54px}  
  4.     .ztree li span.button.roots_open{background-position:-92px 0}  
  5.     .ztree li span.button.roots_close{background-position:-74px 0}  
  6.     .ztree li span.button.center_open{background-position:-92px -18px}  
  7.     .ztree li span.button.center_close{background-position:-74px -18px}  
  8.     .ztree li span.button.bottom_open{background-position:-92px -36px}  
  9.     .ztree li span.button.bottom_close{background-position:-74px -36px}  
  10.     .ztree li span.button.noline_open{background-position:-92px -72px}  
  11.     .ztree li span.button.noline_close{background-position:-74px -72px}  
  12.     .ztree li span.button.root_docu{ background:none;}  
  13.     .ztree li span.button.roots_docu{background-position:-56px 0}  
  14.     .ztree li span.button.center_docu{background-position:-56px -18px}  
  15.     .ztree li span.button.bottom_docu{background-position:-56px -36px}  
  16.     .ztree li span.button.noline_docu{ background:none;} 

以上部分是 zTree 节点的 +/- 号部分的样式

  1. .ztree li span.button.ico_open{margin-right:2pxbackground-position:-110px -16pxvertical-align:top; *vertical-align:middle}  
  2. .ztree li span.button.ico_close{margin-right:2pxbackground-position:-110px 0vertical-align:top; *vertical-align:middle}  
  3. .ztree li span.button.ico_docu{margin-right:2pxbackground-position:-110px -32pxvertical-align:top; *vertical-align:middle

以上部分是 zTree 节点默认图标的样式

  1. .ztree li span.button.edit {margin-right:2pxbackground-position:-110px -48pxvertical-align:top; *vertical-align:middle}  
  2. .ztree li span.button.remove {margin-right:2pxbackground-position:-110px -64pxvertical-align:top; *vertical-align:middle

以上部分是 zTree 节点默认的编辑、删除按钮的样式

  1. .ztree li span.button.ico_loading{margin-right:2pxbackground:url(./img/loading.gif) no-repeat scroll 0 0 transparentvertical-align:top; *vertical-align:middle

以上部分是 zTree 节点异步加载时 loading 图标的样式

  1. ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)} 

以上部分是 zTree 拖拽节点成为 根节点时,zTree 的临时样式

  1. span.tmpzTreeMove_arrow {width:16pxheight:16pxdisplay: inline-blockpadding:0margin:2px 0 0 1pxborder:0 noneposition:absolute;  
  2. background-color:transparentbackground-repeat:no-repeatbackground-attachmentscroll;  
  3. background-position:-110px -80pxbackground-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard 

以上部分是 zTree 拖拽节点时临时箭头的样式

  1. ul.ztree.zTreeDragUL {margin:0padding:0position:absolutewidth:autoheight:auto;overflow:hiddenbackground-color:#cfcfcfborder:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)} 

以上部分是 zTree 拖拽节点时,跟随鼠标移动的临时节点的样式

  1. .zTreeMask {z-index:10000background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute

以上部分是 zTree 拖拽节点时,页面上其他 iframe 的遮罩图层的样式

补充:对于想放大字体、放大图标的朋友,很抱歉,关键问题是本人美工设计能力太差,另外时间有限,所以对于 v3 版本并没有制作其他样式模板,不过看了以上介绍后,是不是觉得调整起来其实还是很简单的? 大家只需要注意一下 height 的值,包括这些 height 之间的差值,注意到这些细节,然后去调整就可以了, 最后别忘了更换你的大图标的img 图标。

原文链接:http://my.oschina.net/dyhunter/blog/97535

【编辑推荐】

  1. JQuery Tree插件——zTree v3.5.01版发布
  2. 挑选的在线CSS3代码生成工具
  3. CSS深入研究:display的恐怖故事解密(2)
  4. CSS深入研究:display的恐怖故事解密(1)
  5. 如何才能编写出兼容各浏览器的CSS
责任编辑:张伟 来源: oschina
相关推荐

2011-08-01 18:02:33

2011-08-31 14:27:14

2014-07-22 10:13:26

Netsparker漏洞扫描工具漏洞扫描

2017-09-08 15:49:42

互联网

2009-12-28 11:41:04

WPF 3.5特点

2011-09-06 10:18:52

jQuery

2009-06-03 09:16:54

FirefoxMozilla浏览器

2024-05-31 14:22:48

2012-07-16 13:25:35

jQuery

2010-08-25 15:56:10

CSSPositioning定位

2010-08-24 08:47:20

paddingCSS

2009-07-27 14:50:24

ChartAreas控ASP.NET 3.5

2010-09-03 12:46:28

CSSexpression

2010-09-06 13:15:48

CSS定位

2010-08-23 15:33:47

CSSpadding

2010-09-01 13:37:58

CSSclip属性

2010-08-23 08:45:08

CSSpadding内边距

2010-09-07 16:46:59

CSSexpression

2010-09-08 13:01:20

atCSS

2010-09-08 16:22:32

PositionCSS
点赞
收藏

51CTO技术栈公众号