CSS 注意事项

本节列出了在使用 CSS 时尽量避免使用的技术。

Internet Explorer Behaviors

它是什么?Internet Explorer 5 引入了行为 (behaviors)。behaviors 是一种通过使用 CSS 向 HTML 元素添加行为的方法。

为什么要避免它?只有 Internet Explorer 支持 behavior 属性。

用什么代替?请使用 JavaScriptHTML DOM 取而代之。

例子 1 - Mouseover Highlight

下面的 HTML 文件中有一个 <style> 元素,它为 <h1> 元素定义了一个行为:

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. h1 { behavior: url(behave.htc) }
  5. </style>
  6. </head>
  7.  
  8. <body>
  9. <h1>Mouse over me!!!</h1>
  10. </body>
  11. </html>

下面是 XML 文档 "behave.htc":

  1. <attach for="element" event="onmouseover" handler="hig_lite" />
  2. <attach for="element" event="onmouseout" handler="low_lite" />
  3.  
  4. <script type="text/javascript">
  5. function hig_lite()
  6. {
  7. element.style.color='red';
  8. }
  9.  
  10. function low_lite()
  11. {
  12. element.style.color='blue';
  13. }
  14. </script>

behavior 文件包含了针对元素的 JavaScript 和 事件句柄。

例子 2 - Typewriter Simulation

下面的 HTML 文件中有一个 <style> 元素,它为 id 为 "typing" 的元素定义了一个行为:

  1. <html>
  2. <head>
  3. <style type="text/css">
  4. #typing
  5. {
  6. behavior:url(behave_typing.htc);
  7. font-family:'courier new';
  8. }
  9. </style>
  10. </head>
  11.  
  12. <body>
  13. <span id="typing" speed="100">IE5 introduced DHTML behaviors.
  14. Behaviors are a way to add DHTML functionality to HTML elements
  15. with the ease of CSS.<br /><br />How do behaviors work?<br />
  16. By using XML we can link behaviors to any element in a web page
  17. and manipulate that element.</p>
  18. </span>
  19. </body>
  20. </html>

下面是 XML 文档 "behave.htc":

  1. <attach for="window" event="onload" handler="beginTyping" />
  2. <method name="type" />
  3.  
  4. <script type="text/javascript">
  5. var i,text1,text2,textLength,t;
  6.  
  7. function beginTyping()
  8. {
  9. i=0;
  10. text1=element.innerText;
  11. textLength=text1.length;
  12. element.innerText="";
  13. text2="";
  14. t=window.setInterval(element.id+".type()",speed);
  15. }
  16.  
  17. function type()
  18. {
  19. text2=text2+text1.substring(i,i+1);
  20. element.innerText=text2;
  21. i=i+1;
  22. if (i==textLength)
  23. {
  24. clearInterval(t);
  25. }
  26. }
  27. </script>