ホームページ >ウェブフロントエンド >htmlチュートリアル >div+CSS ブラウザの互換性問題の整理 (IE6.0、IE7.0、ie8、FireFox...) 3_html/css_WEB-ITnose

div+CSS ブラウザの互換性問題の整理 (IE6.0、IE7.0、ie8、FireFox...) 3_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 12:29:431049ブラウズ

IE7.0 出来了,对CSS的支持又有新问题。浏览器多了,网页兼容性更差了,疲于奔命的还是我们 ,为解决IE7.0的兼容问题,找来了下面这篇文章: 现在我大 部分都是用!important来hack,对于ie6和firefox测试可以正常显示,但是ie7对!important可以正确解释,会导致页面没 按要求显示!下面是三个浏览器的兼容性收集.  

第一种,是CSS HACK的方法   

height:20px; /*For Firefox*/   
*height:25px; /*For IE7 & IE6*/   
_height:20px; /*For IE6*/   

注意顺序。   

这样也属于CSS HACK,不过没有上面这样简洁。   
#example { color: #333; } /* Moz */   
* html #example { color: #666; } /* IE6 */   
*+html #example { color: #999; } /* IE7 */   


第二种,是使用IE专用的条件注释   

   
   

   
   
   

   
   
   

第三种,css filter的办法,以下为经典从国外网站翻译过来的。.   

新建一个css样式如下:   
#item {   
     width: 200px;   
     height: 200px;   
     background: red;   
}    

新建一个div,并使用前面定义的css的样式:   

some text here


ボディ式に lang 属性を追加します (中国語は zh):
次に、div 要素の別のスタイルを定義します:
*:lang(en) #item{
background : green ! important;
}

これは、元の CSS スタイルを ! important で上書きするために行われます。 :lang セレクター ie7.0 はサポートしていないため、この文には影響しません。 ie6.0 でも同じ効果がありますが、残念ながら Safari はこの属性をサポートしていないため、次の CSS スタイルを追加する必要があります:
#item:empty {
background: green ! important
}
:empty selector は css3 の仕様です。 , Safari はこの仕様をサポートしていませんが、この要素が存在するかどうかに関係なく、この要素は引き続き選択され、IE バージョン以外のブラウザでは緑色が表示されるようになります。

IE6とFFとの互換性については、前のバージョンを検討してください!重要 個人的には、シンプルで互換性が高い最初のバージョンの方が好きです

ブラウザ HACK とは: 異なるブラウザ (Firefox IE7 IE6) を使用して同じ Web サイトやページにアクセスすると、正常に表示されるものもあれば、異常に表示されるものもあり、非常にイライラします。あるブラウザの問題を修正しましたが、別のブラウザには新たな問題が発生しています。 HACK は、CSS 内でさまざまなブラウザをサポートするスタイルを個別に記述することができる方法です。今では調和が生まれています。ふふ! powered by 25175.net

Microsoft が最近リリースした IE7 ブラウザの互換性は、確かに一部の Web ページ作成者にとって大きな負担となっています。IE7 は標準化されましたが、FF とはまだ多くの違いがあるため、IE7 を使用する必要があります。 HACK 多くの友人が IE7 の HACK とは何なのかと尋ねましたが、私も実は知りません。 IE7 用の特定の HACK はまだ見つかりません。前回の記事に加えて、「CSS Style for Firefox IE6 IE7」のハック方法も非常に役立ちます。

少し論理的思考ができる人なら、IE と FF の HACK を一緒に使用できることを知っているでしょう。たとえば、次の 3 つの HACK があります: (初心者に適しています。笑、専門家はここを通り過ぎます。)

プログラム コード

いいえ、1 つの HACK、IE FF はすべてのブラウザーに共通です (実際には HACK ではありません)
height:100px;
2 つ目の HACK は IE6 専用です
_height:100px;
3 つ目の HACK は IE6 と IE7 に共通です
* height:100px;

これら 3 つの HACK を紹介したので、スタイル内の各属性に対して IE6 IE7 FF 固有の HACK を定義する方法を見てみましょう。次のコードを見てください。順序は間違っていません。プログラムコード

height:100px;
*height:120px;
_height:150px;

各ブラウザがこれら 3 つの属性をどのように理解するかを簡単に説明します:

FF では 2 番目と 3 番目の属性が認識されないため、 reads height :100px;

IE7 では、IE7 は 3 番目の属性を認識しないため、1 番目と 2 番目の属性を読み取ります。また、2 番目の属性が最初の属性を上書きするため、IE7 は最終的に 2 番目の属性 *height:120px; を読み取ります。

IE6 では、3 つの属性すべてを読み取ることができ、3 番目の属性は最初の 2 つの属性を上書きするため、IE6 は最終的に 3 番目の属性を読み取ります。





1 Firefox ie6 ie7 の CSS スタイルについて

現在、ほとんどの場合、ハッキングに ! important が使用されています。ie6 および Firefox のテストでは、正常に表示できますが、ie7 は ! important を正しく解釈できます。このページをクリックしないでください。 「*+html」を使用する IE7 用の良いハックを見つけました。IE7 で参照すると、次のような CSS を書くことができます。

#1 { color: #333; /* Moz */
* html #1 { color: #666; } /* IE6 */
*+html #1 { color: #999; } /* IE7 */


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

2 CSS レイアウトのセンタリングの問題

主なスタイル定義は次のとおりです:

body {TEXT-ALIGN: center;}
#center { MARGIN-RIGHT: auto; }

説明:

まず、親要素の TEXT-ALIGN: center を定義します。これは、IE の場合、親要素のコンテンツが中央に配置されることを意味します。

しかし、mozilla の中心に置くことはできません。解決策は、子要素を定義するときに「MARGIN-RIGHT: auto;MARGIN-LEFT: auto;」を追加することです。この方法を使用してページ全体を中央に配置したい場合は、使用しないことをお勧めします。 DIV では、分割された各 div で MARGIN-RIGHT: auto;MARGIN-LEFT: auto; を定義するだけで、複数の div を順番に分割できます。

3 ボックス モデルのさまざまな解釈。

#box{
width:600px;
//ie6.0 の場合 - width:500px;
//ff+ie6.0 の場合
}
#box{
width: 600px! 重要
//for ff
width:600px;
//for ff+ie6.0
width /**/:500px;
//for ie6.0-
}

4 浮動IEによって生成される2倍の距離

#box{ float:left; width:100px; margin:0 0 0 100px; この場合、IE は 200px の距離を生成します。 // float を無視します。詳細、Block要素の特徴は、常に改行で始まり、高さ、幅、行の高さ、余白をすべて制御できることです(Inline要素)。それは他の要素と同じ行にあるということです ...Uncontrollable (embedded elements);

#box{ //インライン要素をブロック要素としてシミュレートできます。 //配置の効果を実現します。同じ行に diplay:table;

5 IE 幅と高さに関する問題

IE は min- の定義を認識しませんが、実際には通常の幅と高さを min があるかのように扱います。これは大きな問題です。通常のブラウザでは幅と高さだけを使用すると、幅と高さは変化しません。 IEではすべて設定されています。たとえば、背景画像を設定する場合は、この幅がより重要になります。この問題を解決するには、次のようにします:

#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}

6 页面的最小宽度

min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把 width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个

放到 标签下,然后为div指定一个类:
然后CSS这样设计:

#container{
min-width: 600px;
width:e¬xpression(document.body.clientWidth < 600? “600px”: “auto” );
}

第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。

7 清除浮动

.hackbox{
display:table;
//将对象作为块元素级的表格显示
}

或者

.hackbox{
clear:both;
}

或者加入:after(伪对象),设置在对象后发生的内容,通常和content配合使用,IE不支持此伪对象,非Ie 浏览器支持,所以并不影响到IE/WIN浏览器。这种的最麻烦的

……#box:after{
content: “.”;
display: block;
height: 0;
clear: both;
visibility: hidden;
}

8 DIV浮动IE文本产生3象素的bug

左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.

#box{
float:left;
width:800px;}
#left{
float:left;
width:50%;}
#right{
width:50%;
}
*html #left{
margin-right:-3px;
//这句是关键
}
HTML代码





9 属性选择器(这个不能算是兼容,是隐藏css的一个bug)

p[id]{}div[id]{}
p[id]{}div[id]{}

这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用

属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的.

10 IE捉迷藏的问题

当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。
有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。
解决办法:对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。

11 高度不适应

高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用
margin 或paddign 时。例:


p对象中的内容




CSS:

#box {background-color:#eee; }
#box p {margin-top: 20px; margin-bottom: 20px; }

解決策: P オブジェクト内空の div オブジェクトの CSS コードを上下に 2 つ追加します: .1{height:0px;overflow:hidden;} または、div に border 属性を追加します。





IE ブラウザをブロックします (つまり、IE では表示されません)
*:lang(zh) select {font:12px ! important;} /*FF, OP 表示*/
select:empty { font:12px ! important;} /*safari で表示*/
ここでの select はセレクターで、状況に応じて変更できます。 2 番目の文は、MAC 上の Safari ブラウザに固有のものです。

IE7 でのみ認識
*+html {…}
この HACK は、IE7 専用のスタイルを作成する必要がある場合に使用できます。

IE6 以下の識別
* html {…}
この場所には特に注意してください。実際、IE5.x もこの HACK を認識できます。他のブラウザでは認識されません。
html/**/ >body select {……}
この文は前の文と同じ効果があります。

IE6のみ認識しません
select { display /*IE6は認識しません*/:none;}
ここでの主な目的は、コロンの前に解放される CSS コメントを通じて属性と値を分離することです。

IE6 と IE5 のみ
select/**/ { 表示 /*IE6、IE5は認識しません*/:none;}
上記の文との違いは、セレクターと中括弧の間に追加の CSS コメントがあることです。

IE5のみ認識しません
select/*IE5は認識しません*/ { display:none;}
この文は、前の文から属性領域のコメントを削除したものです。 IE5 のみが

Box モデル ソリューション
selct {width:IE5 を認識しません。!重要です。これは明確にする必要があります。

float をクリアします
select:after {content:"."; display:block; height:0; clear:both; Visibility:hidden;}
子がすべてフローティングになっている場合、親の高さは子全体を完全にラップすることは不可能です。その後、このフローティング HACK を使用して親を 1 回定義すると、この問題は解決できます。

切り捨て省略
select { -o-text-overflow:ellipsis; text-overflow:nowrap; overflow:hidden; }
長さを超えた部分を自動的に切り捨てる省略記号を使用します。これは良いテクニックです。 Firefox が現在サポートしていないだけです。

Operaのみで認識
@media all and (min-width: 0px){ select {……} }
Operaブラウザは別途設定してください。

上記は CSS を記述する際のいくつかのハックです。正しいタグのネスト (div ul li ネストされた構造関係) に従うことをお勧めします。これにより、ハックの使用頻度が減り、1 つのページを維持するために多くのハックが必要なくなります。マルチブラウザ互換性)。多くの場合、ブラウザはハックを使用しなくても非常にうまく動作します。これらは、互換性コンテンツを分離したい場合に、いくつかのフィルタを試してみることをお勧めします。下に。これらのフィルターの一部は CSS で作成され、フィルターを通じて特別なスタイルをインポートします。また、一部は HTML で作成され、条件を通じて必要なパッチ スタイルをリンクまたはインポートします。

IE5.x 用のフィルター。IE5.x のみが表示されます
@media tty {
i{content:"";/*" "*/}} @import 'ie5win.css' /*";}
} /* */

IE5/MACのフィルターは基本的に不要です
/**//*/
@import "ie5mac.css";
/**/

以下はIEの条件コメントです。個人的には、条件付きコメントを使用して対応する Hack を呼び出すのが、複数のブラウザーと互換性のある完璧なソリューションだと思います。非常に便利なだけでなく、CSS自体を作成する際に、Hackを含めたコードをすべて記述すると、より厳密にHackを使用する必要があるかどうかを確認できます。 CSS ファイルをハックするのは非常にカジュアルです。自分で書いていると、最初に CSS をハックする必要があるのか​​、それともメインの CSS を調整する必要があるのか​​を無意識に考えてしまいます。いくつかのハックを使用するだけで、多くのブラウザが正常に動作するようになると達成感を感じますか? 使用方法については、この IE 条件ノートを参照してください。すべての IE が認識できます

IE5.0 のみが認識できます
IE 5.0 以降のみが認識できます
IE5.0 は IE5.5 を置き換えることができます

IE6 のみが認識できます
IE 7/- のみ
IE6 と IE5 で認識できます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。