PageRenderTime 85ms CodeModel.GetById 48ms RepoModel.GetById 0ms app.codeStats 0ms

/src/dom/test-dom-style.html

https://github.com/lxmtalk/kissy
HTML | 230 lines | 184 code | 45 blank | 1 comment | 0 complexity | c08e2cd97ad8de05da3a76e2a6e9ea19 MD5 | raw file
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>dom-style Test</title>
  6. </head>
  7. <body>
  8. <script src="../test/test.js"></script>
  9. <script>
  10. KISSY.Test.Config.times = 1;
  11. </script>
  12. <h2>Test Data</h2>
  13. <script src="../../build/kissy/kissy-pkg.js"></script>
  14. <script src="../../build/ua/ua-pkg.js"></script>
  15. <script src="dom.js"></script>
  16. <script src="selector.js"></script>
  17. <script src="dom-data.js"></script>
  18. <script src="dom-class.js"></script>
  19. <script src="dom-style.js"></script>
  20. <script src="dom-style-ie.js"></script>
  21. <script src="dom-attr.js"></script>
  22. <script src="dom-create.js"></script>
  23. <script src="../../third-party/jquery/jquery-1.4.2.js"></script>
  24. <script src="../../third-party/yui2/yahoo-dom-event/yahoo-dom-event.js"></script>
  25. <script src="../../third-party/yui3/yui-min.js"></script>
  26. <script src="../../third-party/ext-core/ext-core.js"></script>
  27. <div id="test-data">
  28. <div id="test-div" style="padding-left: 2pt; background: transparent; float: left; border: 5px solid rgba(0,0,0,.201);"></div>
  29. <style>
  30. #test2 {
  31. border: 1px solid #ccc;
  32. width: 80%;
  33. height: 20px;
  34. }
  35. .shadow {
  36. background-color: #fff;
  37. -moz-box-shadow: rgba(0, 0, 0, 0.2) 2px 3px 3px;
  38. -webkit-box-shadow: rgba(0, 0, 0, 0.2) 2px 3px 3px;
  39. filter: progid:DXImageTransform.Microsoft.Shadow(direction = 155, Color = #dadada, Strength = 3), progid:DXImageTransform.Microsoft.DropShadow(Color = #22aaaaaa, OffX = -2, OffY = -2);
  40. }
  41. </style>
  42. <div id="test2"></div>
  43. <img id="test-img" src="../../docs/assets/logo.png" alt="kissy" />
  44. <div id="test-filter" class="shadow" style="height: 80px; width: 120px; border:1px solid #ccc;"></div>
  45. <table id="test-table" cellspacing="10">
  46. <tbody>
  47. <tr>
  48. <td rowspan="2" colspan="3">td</td>
  49. </tr>
  50. </tbody>
  51. </table>
  52. <select id="test-select">
  53. <option id="test-opt" value="1">0</option>
  54. <option>2</option>
  55. <option>3</option>
  56. </select>
  57. <div id="test3">for test show/hide/toggle</div>
  58. </div>
  59. <iframe src="test-dom-offset-iframe.html"
  60. id="testIframe"
  61. style="border:1px solid black; position:absolute; top:500px; left:500px; background:white;"
  62. width="200"
  63. frameborder="0"
  64. scrolling="no"
  65. ></iframe>
  66. <!-- Test Cases -->
  67. <script>
  68. var S = KISSY, DOM = S.DOM, UA = S.UA;
  69. function test_css(test) {
  70. var elem = S.get('#test-div');
  71. // getter
  72. if(DOM.css(elem, 'float') !== 'left') test.fail();
  73. if(DOM.css(elem, 'position') !== 'static') test.fail();
  74. if(DOM.css(elem, 'backgroundColor') !== 'transparent') test.fail();
  75. if(DOM.css(elem, 'backgroundPosition') !== '0% 0%') test.fail();
  76. if(DOM.css(elem, 'fontSize') !== '12px') test.fail();
  77. if(UA.ie < 9) if(DOM.css(elem, 'border-right-width') !== 'medium') test.fail(DOM.css(elem, 'border-right-width'));
  78. else if(DOM.css(elem, 'border-right-width') !== '5px') test.fail();
  79. if(DOM.css(elem, 'paddingLeft') !== '2pt') test.fail();
  80. if(DOM.css(elem, 'padding-left') !== '2pt') test.fail();
  81. if(DOM.css(elem, 'padding-right') !== '0px') test.fail();
  82. if(DOM.css(elem, 'opacity') !== '1') test.fail('opacity');
  83. // 当返回 auto 时,要将 auto 转换为 pixel
  84. if(DOM.css('#test-div', 'height') == 'auto') test.fail();
  85. // setter
  86. try {
  87. DOM.css(elem, 'height', '-20px');
  88. } catch(ex) {
  89. test.fail();
  90. }
  91. DOM.css(elem, 'float', 'right');
  92. if(DOM.css(elem, 'float') !== 'right') test.fail();
  93. DOM.css(elem.parentNode, 'font-size', '100%');
  94. if(DOM.css(elem, 'font-size') !== '12px') test.fail();
  95. DOM.css(elem, 'opacity', '0.2');
  96. if(DOM.css(elem, 'opacity') !== '0.2') test.fail('opacity 0.2');
  97. DOM.css(elem, 'border', '2px dashed red');
  98. if(DOM.css(elem, 'borderWidth') !== '2px') test.fail();
  99. DOM.css(elem, {
  100. marginLeft: '20px',
  101. opacity: '0.8',
  102. border: '2px solid #ccc'
  103. });
  104. if(DOM.css(elem, 'opacity') !== '0.8') test.fail('opacity 0.8');
  105. // test filter #issue5
  106. //jQuery('#test-filter').css('opacity', .5);
  107. DOM.css('#test-filter', 'opacity', .5);
  108. //S.log(S.get('#test-filter').style.filter);
  109. }
  110. function test_width(test) {
  111. var elem = S.get('#test2');
  112. //if(DOM.width(elem) !== $(elem).width()) test.fail();
  113. }
  114. function test_height(test) {
  115. var elem = S.get('#test2');
  116. //if(DOM.height(elem) !== $(elem).height()) test.fail();
  117. }
  118. function test_show(test) {
  119. var elem = S.get('#test3');
  120. DOM.css(elem, 'display', 'none');
  121. DOM.show(elem);
  122. if(DOM.css(elem, 'display') === 'none') test.fail();
  123. DOM.removeAttr(elem, 'style');
  124. }
  125. function test_hide(test) {
  126. var elem = S.get('#test3');
  127. DOM.hide(elem);
  128. if(DOM.css(elem, 'display') !== 'none') test.fail();
  129. DOM.removeAttr(elem, 'style');
  130. }
  131. function test_toggle(test) {
  132. var elem = S.get('#test3');
  133. DOM.toggle(elem);
  134. if(DOM.css(elem, 'display') !== 'none') test.fail(DOM.css(elem, 'display'));
  135. DOM.toggle(elem);
  136. if(DOM.css(elem, 'display') === 'none') test.fail(DOM.css(elem, 'display'));
  137. DOM.removeAttr(elem, 'style');
  138. }
  139. function test_addStyleSheet(test) {
  140. DOM.addStyleSheet('#test-div { padding: 100px; color: blue }');
  141. DOM.addStyleSheet('#test-div { padding: 100px; color: blue }', 'test-style');
  142. DOM.addStyleSheet('#test-div { padding: 100px; color: blue }', '#test-style');
  143. if (UA.opera) {
  144. if (DOM.css('#test-div', 'color') !== '#0000ff') test.fail();
  145. } else {
  146. if (UA.ie < 9) {
  147. if (DOM.css('#test-div', 'color') !== 'blue') test.fail();
  148. } else {
  149. if (DOM.css('#test-div', 'color') !== 'rgb(0, 0, 255)') test.fail();
  150. }
  151. }
  152. }
  153. // temp code
  154. //alert(!(document.defaultView || { }).getComputedStyle && document.documentElement.currentStyle);
  155. var t = S.get('#test-div');
  156. //alert(document.defaultView.getComputedStyle(t, null)['paddingLeft']);
  157. //alert(jQuery(t).css('paddingLeft'));
  158. //alert(jQuery(t).css('padding-left'));
  159. //alert(DOM.css(t, 'borderWidth'));
  160. //alert(jQuery(t).css('borderWidth'));
  161. // kissy 会将 auto 转换为绝对数值,和 yui3 保持一致,让 ie 与其它浏览器一致
  162. //alert(t.style.height);
  163. //alert(DOM.css(t, 'height'));
  164. //alert(jQuery(t).css('height'));
  165. //alert(Ext.get(t).getStyle('height'));
  166. // 测试百分比
  167. //YUI().use('node', function(Y) {
  168. //t = S.get('#test2');
  169. // ext 返回 80%
  170. // jquery 多 4px
  171. // yui3 是对的
  172. // alert('kissy: ' + DOM.css(t, 'width') +
  173. // ' jquery: ' + jQuery(t).css('width') +
  174. // ' ext: ' + Ext.get(t).getStyle('width') +
  175. // //' ext: ' + Ext.get(t).getWidth(true) +
  176. // ' yui3: ' + Y.one(t).getStyle('width')
  177. // );
  178. // alert('KISSY.DOM.width = ' + DOM.width(t));
  179. //});
  180. // 测试 DOM.height(iframe)
  181. //alert(jQuery('#testIframe').height());
  182. //alert(DOM.height('#testIframe'));
  183. </script>
  184. </body>
  185. </html>