剖析EXT的CSS渲染过程——EXT.Window

标签:, ,

一直没有时间来搞EXT的CSS,一方面没有这么多时间,一方面国内关于EXT的CSS资料几乎没有,即使国外一些网站也非常难找到关于EXT的CSS资料,倒是有很多皮肤下载,新手们可以照着皮肤来进行修改,也是不错的选择。
废话少说,我先从EXT.Window下手,来剖析每个CSS类的用途!

上图是一个Window最普通的组件

通常我们使用的是ext-all.css,其实它是由许多个组件css组成的一个大css而已,见下图:

对于一个window的窗口,其实只有引入window.css就足够了,我们来看window.css的一个片段

  1. .x-window-tc {
  2. background: transparent url(../images/default/window/top-bottom.png) repeat-x 0 0;
  3. overflow:hidden;
  4. zoom:1;
  5. }
  6. .x-window-tl {
  7. background: transparent url(../images/default/window/left-corners.png) no-repeat 0 0;
  8. padding-left:6px;
  9. zoom:1;
  10. z-index:1;
  11. position:relative;
  12. }
  13. .x-window-tr {
  14. background: transparent url(../images/default/window/right-corners.png) no-repeat right 0;
  15. padding-right:6px;
  16. }
  17. .x-window-bc {
  18. background: transparent url(../images/default/window/top-bottom.png) repeat-x 0 bottom;
  19. zoom:1;
  20. }
  21. .x-window-bc .x-window-footer {
  22. padding-bottom:6px;
  23. zoom:1;
  24. font-size:0;
  25. line-height:0;
  26. }
  27. .x-window-bl {
  28. background: transparent url(../images/default/window/left-corners.png) no-repeat 0 bottom;
  29. padding-left:6px;
  30. zoom:1;
  31. }
  32. .x-window-br {
  33. background: transparent url(../images/default/window/right-corners.png) no-repeat right bottom;
  34. padding-right:6px;
  35. zoom:1;
  36. }
  37. .x-window-mc {
  38. border:1px solid #99bbe8;
  39. padding:0;
  40. margin:0;
  41. font: normal 11px tahoma,arial,helvetica,sans-serif;
  42. background:#dfe8f6;
  43. }
  44.  
  45. .x-window-ml {
  46. background: transparent url(../images/default/window/left-right.png) repeat-y 0 0;
  47. padding-left:6px;
  48. zoom:1;
  49. }
  50. .x-window-mr {
  51. background: transparent url(../images/default/window/left-right.png) repeat-y right 0;
  52. padding-right:6px;
  53. zoom:1;
  54. }

注意其中的 tl tc tr ml mc mr bl bc br 分别是上中下的意思,画个草图看下

x-window-tl tc tr
ml mc mr
bl bc br

比如,我们拿掉了x-window-tl这个类,那么左上角的图片就会消失

明白了吧?

那么x-window-bc x-window-tc 这些类在js文件里面是如何组织起来的呢?和一个很重要baseCls密切联系,在Ext.Window类里面,这个属性的值是”x-window”。在EXT里面CSS类的命名不能自己乱改的,tl tc tr ml mc mr bl bc br 都是写死在代码里的(当然你可以修改源码),我们只能改baseCls的属性值,并且修改相应的css类。比如我们自定义baseCls=”myWindow”,那么EXT会去CSS里面找 myWindow-tl,明白了吧?下面摘录源代码里面,这9个类的组织形式!

  1. <div class="{0}-tl">
  2.             <div class="{0}-tr">
  3.                 <div class="{0}-tc">
  4.                 </div>
  5.             </div>
  6.         </div>
  7.        
  8.         <div class="{0}-ml">
  9.             <div class="{0}-mr">
  10.                 <div class="{0}-mc">
  11.                 </div>
  12.             </div>
  13.         </div>
  14.        
  15.         <div class="{0}-bl">
  16.             <div class="{0}-br">
  17.                 <div class="{0}-bc">
  18.                 </div>
  19.             </div>
  20.         </div>

我这番讲解再结合你的CSS基本功,EXT的CSS就可以轻松玩转啦。其他重要的CSS类继续挖掘中







留言