火狐とIEの互換性の総括

37711 ワード

from:http://www.okajax.com/a/200909/ff_ie.
 
互換性は常に頭を悩ます問題です.以下、簡単に火狐とIEの互換性の問題をまとめます.
1.ハイパーリンクで訪問したら、ホバーのスタイルには問題が発生しません.     クリックして訪問されたハイパーリンクのスタイルはホームバーとactiveを持っていません.多くの人がこの問題に遭遇したはずです.解決方法はCSS属性を変える順序です. 

  
  
  
  
  1. <style type="text/css">  
  2.     <!--   
  3.         a:link {}  
  4.         a:visited {}  
  5.         a:hover {}  
  6.         a:active {}  
  7.     -->      
  8. </style> 
2.FireFoxで連続フィールドを自動的に改行するにはどうすればいいですか?    周知のようにIEで直接word-wrap:break-wordを使えばいいです.FFではJS挿入の方法を使って解決します. 

  
  
  
  
  1. <style type="text/css"> 
  2. <!--   
  3.     div {  
  4.         width:300px;  
  5.         word-wrap:break-word;  
  6.         border:1px solid red;  
  7.     }  
  8. --> 
  9. </style> 
  10. <div id="ff">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  11. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  12. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  
  13. aaaaaaaaaaaaaaaaaaaaaaaaaaa</div> 
    Jsコード

  
  
  
  
  1.     <scrīpt type="text/javascrīpt">      
  2.     /* <![CDATA[ */     
  3.         function toBreakWord(el, intLen){      
  4.             var ōbj=document.getElementById(el);      
  5.             var strContent=obj.innerHTML;        
  6.             var strTemp="";      
  7.             while(strContent.length>intLen){      
  8.                 strTemp+=strContent.substr(0,intLen)+"      
  9. ";  
  10.                 strContent=strContent.substr(intLen,strContent.length);        
  11.             }  
  12.             strTemp+="  
  13. "+strContent;  
  14.             obj.innerHTML=strTemp;      
  15.         }      
  16.         if(document.getElementById  &&  !document.all)  toBreakWord("ff", 37);      
  17.     /* ]]> */     
  18.     </script> 
3.ffの下でなぜ父の容器の高さが適応できないのですか?   サブコンテナに浮動特性を付加すると、コンテナは自動的に開けられなくなります.解決方法はラベルが終わった後に浮動を取り除く要素を加えます. 

  
  
  
  
  1. clear:both
4.IE 6のダブルサイドBUG  フロート後、本来は外から10 px離れていますが、IEは20 pxと解釈しています.解決方法はプラスです.

  
  
  
  
  1. displayinline 
5.IE 6で絶対的に位置決めされたコンテナ内のテキストは正常に選択できません.   この問題はIE 6、7に存在し、問題を解決する方法はIEをqurks modeに入らせることである.qurks modeに関する知識については、参考してください.    http://www.microsoft.com/..
6.IE 6下の写真の下に隙間ができています.    このバグを解決する方法もたくさんあります.これはhtmlのレイアウトを変えたり、display:blockに設定したりできます.   またはvertical-align属性を設定してもvertical-align:top bottom middle text-bottomで解決できます.
7.IE 6の下の2つの層の中間に隙間がある    このIEの3 PX BUGもよく現れます.解決の方法はElightも同様にfloat:leftまたは相対IE 6定義です.left magin-right:-3 pxです.
8.list-style-mageが正確に位置決めできない   list-style-inageの位置付け問題もよく聞かれます.解決方法は普通liの背景シミュレーションを使っています.ここでは相対的な位置付けの方法を採用しても解決できます.
9.LI中の内容が長さを超えたら省略して表示する方法    この方法はIEとOPブラウザを適用します. 

  
  
  
  
  1. <style type="text/css">      
  2.  <! --       
  3.   li {      
  4.     width: 200px;      
  5.     white-space:nowrap;      
  6.     text-overflow:ellipsis;       
  7.     -o-text-overflow:ellipsis;       
  8.     overflow: hidden;      
  9.     }      
  10.  -->      
  11. </style> 
10.web標準でidとクラスを定義していますが、何か違いがありますか?    一.web標準ではIDの重複は許されません.例えばdiv id=「aa」は2回繰り返してはいけません.classはクラスを定義しています.理論的には無限に繰り返してもいいです.これは何回か引用して定義すればいいです.  彼を使う?遣う    二.属性の優先度の問題       IDの優先度はクラスより高いです.上の例を見てください.    三.JSなどのクライアントのスクリプトを便利にして、もしページの中であるオブジェクトをスクリプト操作するなら、彼にIDを定義してもいいです.そうでなければ、ページ要素を遍歴して特定の属性を指定して見つけるしかないです.これは相対的に時間の浪費で、IDよりはるかに簡単です.
11.テキストを縦方向に中央揃えするにはどうすればいいですか?    要素の高さと行の高さを一致させます. 

  
  
  
  
  1. <style type="text/css">  
  2.  <!--   
  3.   div{  
  4.    height:30px;  
  5.    line-height:30px;  
  6.    border:1px solid red 
  7.   }  
  8.  -->  
  9. </style> 
12.テキストとテキスト入力ボックスの配置方法  vertical-alignを加えます. 

  
  
  
  
  1. <style type="text/css">  
  2.   <!--   
  3.    input {  
  4.      width:200px;  
  5.      height:30px;  
  6.      border:1px solid red;  
  7.      vertical-align:middle;  
  8.    }   
  9.   -->  
  10. </style>  
 
13.FF以下は水平に真ん中に置いてはいけません.    FFの下には容器の左右外パッチをセットしてautであれば大丈夫です.

   
   
   
   
  1. <style type="text/css">  
  2.   <!--   
  3.    div{  
  4.        margin:0 auto;  
  5.    }  
  6.   -->  
  7. </style>  
.FFの下のテキストは容器の高さを開けられません.    標準ブラウザで高さ値を固定している容器はIE 6のように開けられません.高さを固定したいですが、開けたいです.どのように設定すればいいですか?方法はheightを除いてmin-heightを設置することです.200 pxです.ここでは、min-heightを知らないIE 6を配慮するために、このように定義することができる. 

   
   
   
   
  1. {  
  2.    height:auto!important;  
  3.    height:200px;  
  4.    min-height:200px;  
  5.  } 
15.IE 6の容器の幅はFFの解釈と違います. 

   
   
   
   
  1. <?xml version="1.0" encoding="gb2312"?> 
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  4.     <style type="text/css"> 
  5.     <!--  
  6.     div{  
  7.         cursor:pointer;  
  8.         width:200px;  
  9.         height:200px;  
  10.         border:10px solid red  
  11.     }  
  12.     --> 
  13.     </style> 
  14. <div ōnclick="alert(this.offsetWidth)">web </div> 
の問題の違いは容器の全体幅が枠線の幅を計算しているかどうかです.ここではIE 6は200 PXと解釈していますが、FFは220 PXと解釈します.容器上部のxmlを取り除くと元の問題が発見されます.上部の申明はIEのqurks modeを触発しました.qurks mode、standars modeについての知識を参考にしてください.     http://www.microsoft.com/.. 16.    なぜweb標準でIEがスクロールバーの色を設定できないのですか?    解決策はbodyをhtmlに換えることです. 

   
   
   
   
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  2. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  3. <style type="text/css"> 
  4. <!--   
  5. html {  
  6.         scrollbar-face-color:#f6f6f6;  
  7.         scrollbar-highlight-color:#fff;  
  8.         scrollbar-shadow-color:#eeeeee;  
  9.         scrollbar-3dlight-color:#eeeeee;  
  10.         scrollbar-arrow-color:#000;  
  11.         scrollbar-track-color:#fff;  
  12.         scrollbar-darkshadow-color:#fff;  
  13.     }  
  14. --> 
  15. </style> 
.    なぜ私が定義したスタイルが機能しないですか?     ここでは使えません.aはliがこのような状況に遭遇したらどう解決しますか?答えは高くなります.aaの優先権は例えば〓a ul li.aaです. 

   
   
   
   
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  2. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  3. <style type="text/css"> 
  4.     <!--  
  5.     #aa ul li {  
  6.             color:red  
  7.         }  
  8.     .aa {  
  9.             color:blue  
  10.         }  
  11.     --> 
  12. </style>      
  13. <div id="aa">      
  14. <ul> 
  15. <li class="aa">      
  16.     web  
  17. </li> 
  18. </ul> 
  19. </div> 
.    IE 6 1 px程度の高さを定義できない容器     IE 6のこの問題は、デフォルトの行の高さによるものであり、解決の方法も多い.例えば、

   
   
   
   
  1. overflow:hidden zoom:0.08 line-height:1px 
.    背景色が表示されません. 

   
   
   
   
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  2. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  3. <style type="text/css"> 
  4. <!--   
  5. ul {  
  6.         background:red  
  7.     }  
  8. li {  
  9.         float:left;  
  10.         width:180px;  
  11.     }  
  12. --> 
  13. </style> 
  14. <!--[if lte IE 6]> 
  15. <style> 
  16. .gainlayout { height: 1px; }  
  17. </style> 
  18. <![endif]-->    
  19. <ul class="gainlayout"> 
  20. <li>web </li> 
  21. <li>web </li> 
  22. <li>web </li> 
  23. <li>web </li> 
  24. <li>web </li> 
  25. <div style="clear:both"></div> 
  26. </ul> 
IEに背景色が設定されているulは表示されていません.これはハスキーアウトの問題です.解決方法も参考になります.http://www.satzansatz.de/cssd/onhavinglayout.htm     解決方法の一つ: 

   
   
   
   
  1. <!--[if lte IE 6]> 
  2. <style>      
  3. .gainlayout { height: 1px; }      
  4. </style>      
  5. <![endif]-->       
  6. <!--[if lte IE 6]> 
  7. <style> 
  8. .gainlayout { height: 1px; }  
  9. </style> 
  10. <![endif]--> 
.    どうやってレイヤーをFLASHに表示することができますか?    解決策はFLASHに透明を設定することです. 

   
   
   
   
  1. <param name="wmode" value="transparent" />  
.    どのように1階をブラウザの中に垂直に置くか?    ここではパーセンテージの絶対位置付けを使って、外部パッチとの負の値の方法で、負の値の大きさはその幅の高さを2で割っています. 

   
   
   
   
  1. <style type="text/css">      
  2. <!--       
  3. div {      
  4.         position:absolute;      
  5.         top:50%;      
  6.         left:50%;      
  7.         margin:-100px 0 0 -100px;      
  8.         width:200px;      
  9.         height:200px;      
  10.         border:1px solid red;      
  11.     }      
  12. -->      
  13. </style>  
.    画像は垂直とコンテナ内にあります. 

   
   
   
   
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  2. <style type="text/css"> 
  3. <!--   
  4. * {margin:0;padding:0}  
  5. div {  
  6.         width:500px;  
  7.         height:500px;  
  8.         border:1px solid #ccc;  
  9.         overflow:hidden;  
  10.         position:relative;  
  11.         display:table-cell;  
  12.         text-align:center;  
  13.         vertical-align:middle  
  14.     }  
  15. div p {  
  16.         position:static;  
  17.         +position:absolute;  
  18.         top:50%  
  19.     }  
  20. img {  
  21.         position:static;  
  22.         +position:relative;  
  23.         top:-50%;left:-50%;  
  24.         width:276px;  
  25.         height:110px  
  26.     }  
  27. --> 
  28. </style> 
  29. <div><p><img src="logo.gif" /></p></div> 
または背景図を使用する方法: 

   
   
   
   
  1. background:url("logo.gif"center no-repeat
.    どのようにdivを横に並べますか?    横に並べたDIVは、float:leftなどのフロート方式を使ってもいいし、オブジェクトをインラインに設定したり、オブジェクトを絶対的に位置決めしたりすることもできます. 

   
   
   
   
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">      
  2. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />      
  3. <style type="text/css">      
  4. <!--       
  5. div {      
  6.         float:left;  
  7.         width:200px;  
  8.         height:200px;  
  9.         border:1px solid red  
  10.     }  
  11. --> 
  12. </style> 
  13. <div>web </div> 
  14. <div>web </div> 
  15.  
  16.  
  17. <div>web </div> 
  Firefox DIV高さに関して適応できない二つの解決    DIVの高さを設定したら、DIVの中で実際の内容が設定された高さより大きい場合、ieは自動的に引張り、DIV容器の大きさに適応します.    下の内容と重なる現象があります.DIVに高さを設定しないと、Firefoxの中でバックしないで中身のために開けて、IEの中で自動的に内容によって開けます.    ソリューション:    1、DIV内部の最後にclear:bothスタイル

   
   
   
   
  1. <div style="background-color:#FF0000;"> 
  2.     <div style="float:left; height:200px">Jmedia Design</div> 
  3.     <div style="float:right; height:800px">www.jmedia.cn</div> 
  4.     <div style="clear:both"></div> 
  5. </div> 
を追加します.    2、DIVにoverflow:atotを使う.

   
   
   
   
  1. <div style="overflow:auto;"> 
  2.     <div style="float:left; background-color:#000000;height:200px">1111111111</div> 
  3.     <div style="float:right;background-color:#000000; height:300px"">2222222222</div> 
  4. </div>