div+css は、ie6、ie7、ie8、ie9、FireFox Chrome、およびその他のブラウザーと互換性があります。method_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 12:30:10
オリジナル
1200 人が閲覧しました

div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法



1.DOCTYPE 影响 CSS 处理

2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行

3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中

4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width

5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式

6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行

7.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以

8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。

9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法: div{margin:30px!important;margin:28px;}注意这两个margin的顺序一定不能写反,据阿捷的说法! important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样: div{maring:30px;margin:28px}重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx! important;

11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义 ul{margin:0;padding:0;}就能解决大部分问题


注意事项:


1、float的div一定要闭合。

例如:(其中floatA、floatB的属性已经设置为float:left;) 


这里的NOTfloatC并不希望继续平移,而是希望往下排。

这段代码在IE中毫无问题,问题出在FF。原因是NOTfloatC并非float标签,必须将float标签闭合。


之间加上


这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。

并且将clear这种样式定义为为如下即可:

.clear{

clear:both;

}

此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;

当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE)用zoom:1;可以做到,这样就达到了兼容。

例如某一个wrapper如下定义:



.colwrapper{

overflow:hidden;

zoom:1;

margin:5px auto;}


2、margin加倍的问题

设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。

解决方案是在这个div里面加上display:inline;

例如:



対応する CSS は



#IamFloat{

float:left;/*IE は 10px として認識します*/

display:inline;/* IE では、5px*/} として理解されます

3. コンテナの包含関係について

多くの場合、特にコンテナ内に 2 つまたは 3 つの float div がある場合、幅は問題が発生しやすいです。 IE では、外側の層の幅は、より広い内側の div によって圧迫されます。ピクセルレベルの精度で測定するには、必ず Photoshop または Firework を使用してください。

4. 高さに関する質問

コンテンツが動的に追加される場合は、高さを定義しないことが最善です。ブラウザは自動的に拡大縮小できますが、静的コンテンツの場合は高さを設定するのが最善です。 (時々自動的に開かないようです。何が起こっているのかわかりません。)

5. 最も無慈悲な方法 - !重要

いくつかの詳細な問題を解決する方法が本当にない場合は、次の方法があります。このメソッドを使用します。「!重要」の FF は最初に自動的に解析されますが、IE はそれを無視します。次のようになります。 gif) no-repeat 0px 0px ! important ; /*FF のスタイル*/

background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* IE のスタイル */}

注意すべき点は、文 xxxx !重要な文を別の文の上に配置することについては、上で説明したとおりです


IE7.0 の CSS サポートには新たな問題があります。ブラウザの数が増え、Web ページの互換性も悪くなっています。IE7.0 の互換性の問題を解決するために、次の記事を見つけました。今はそれを使用しています。ほとんど! important はハッキングするため、ie6 と Firefox のテストでは正常に表示されますが、ie7 では ! important を正しく解釈できるため、ページが必要に応じて表示されなくなります。検索した結果、「*+html」を使用するという IE7 用の良いハックを見つけました。これで IE7 で閲覧できるようになりました。問題はありません。

これで次のような CSS を書くことができます:

#example { color: #333; } /* Moz */


* html #example { color: #666; } /* IE6 * /

*+html #example { color: #999; } /* IE7 */


すると、フォントの色は、Firefox では #333、IE6 では #666、IE7 では #999 と表示されます。



CSS のさまざまなブラウザとの互換性については、インターネット上にチュートリアルが存在します。以下の内容は、あまり目新しいものではなく、純粋に個人的なまとめです。初心者向けのヘルプがあります

1. CSS HACK

1、! important


IE7 の ! important メソッドのサポートにより、次の 2 つの方法で解決できます。現在は IE6 HACK のみです (記述に注意してください。宣言位置は事前に指定する必要があることに注意してください)。 * IE7+FF */

width: 80px; /* IE6 */

}



2、IE6/IE77 対 Firefox


*+htmlと *html は IE タグに固有であり、Firefox はまだサポートしていません。また、*+html は IE7 に固有のタグです。 120px; } /* FireFox */

*html #wrapper { width: 80px;} /* ie6 修正 */

*+html #wrapper { width: 60px;} /* ie7 修正、順序に注意 * /

}


注: IE7 の

*+html HACK では、HTML の先頭に次のステートメントが必ず含まれるようにする必要があります。

2.

フロートをクリアする原理については、[構造マークアップを使用せずにフロートをクリアする方法]を参照してください。

グローバルCSSに次のコードを追加し、閉じる必要があるdivにclass="clearfix"を追加します。
これは毎回機能します。