検索
ホームページウェブフロントエンドhtmlチュートリアルよくあるブラウザの互換性問題、ボックスモデルの2つのモードとCSSハックの知識解説_html/css_WEB-ITnose

什么是浏览器兼容问题?所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。

总结一下我编写代码的时候遇到的浏览器兼容问题,跟大家学习。

一、解决无法在IE6下面设置1px高的容器(div)的问题。

  大家看看这一段代码:

  

  当然,这段代码在非IE6下是能够设置1px高度的div的(如左图),但是在IE6中的效果如右图:

  非IE6下: IE6下:

  解决方案:在div里面添加一个空格符( )以创建内容;再设置line-height:1px;即可。

  

 

二、透明度opacity不兼容的问题,opacity是属于css2.1的内容,在IE6中并不支持(另外position:fixed;也是css2.1的内容,并不支持IE6)。

  创建一个宽高100px的div,设置透明度为0.5,背景色黑色如下:

  

    div{

    height: 100px;

    width: 100px;

    opacity:.5;

    background: #000;

    }

  

  

  效果图分别如下:左边为非IE6,右边是IE6

  非IE6:  IE6:

  会看到在IE6中并不支持该属性,解决方案:

  

    div{

    height: 100px;

    width: 100px;

    opacity:.5;

    filter:alpha(opacity=50);   //解决IE6问题

    background: #000;

    }

  

  

3. IE6 での水平方向の二重マージンのバグ。 float に設定された div に設定されたマージンは、IE では 2 倍になります。これはie6に存在するバグです。

このようなバグを最初に引き起こすには、次の条件が満たされている必要があります:

1. 要素は float である必要があります;

2. 要素は水平マージン、マージン左、マージン右を持つ必要があります

3. 要素ブロック要素である必要があります

4. ブラウザは IE6 である必要があります。

上記の条件は必須なのでIE6でない限りこの問題は存在しません。解決策は簡単で、条件の 1 つを破棄するだけです。

例:

<head>    <meta charset="UTF-8">    <title>测试浏览器兼容问题</title>    <style>        body{            background: #fff;        }        .wrap{            width: 300px;            height: 150px;            margin:50px auto;            border: 2px solid #333;            overflow: hidden;        }        .wrap div{            height: 100px;            width: 100px;            background: #333;            float: left;             margin-left: 20px;        }    </style></head><body>    <div class="wrap">        <div></div>        <div></div>    </div></body>

レンダリングは次のとおりです: 左が非IE6、右がIE6です

IE6では、左側のmargin-leftの値が40pxであることがわかります。 、解決策は、display:inline を row 属性に変換することです。

4. IE6 では、画像に a タグを追加すると、デフォルトで枠線が表示されます。

img{

幅: 100px;

高さ: 100px;

}

レンダリングは次のとおりです: 左が非 IE6、右が IE6

この問題は比較的簡単に解決できます。画像の border:none; を設定するだけです。なお、aタグのborder値は設定されていませんが、画像が設定されています。

5. IE6 は、png 形式の画像の透明効果をサポートしていません。

解決策: プラグインを使用します: DD_belatedPNG.js プラグイン (このプラグインが必要な場合は、自分で Baidu を使用できます:))

使用方法の説明: 次のコードを貼り付けるだけです

<!--[if IE 6]>    <script src="js/DD_belatedPNG_0.0.8a.js"></script>    <script>    DD_belatedPNG.fix('*');    </script>    <![endif]-->

6. 所有権レイアウト haslayout について言及します。ブラウザの互換性の問題について話すときは、haslayout について言及する必要があります。

IE6と7では、レイアウトを持っていることがトリガーされない場合があります。ハレイアウトとは何ですか?私の理解では、要素 (タグ) にレイアウトがある場合、その要素は独自のデフォルト スタイルを取得し、すべてのレイアウトはこのデフォルト標準に従ってレイアウトされます。つまり、このレイアウトは正常であるということです。しかし、要素にデフォルトのレイアウトがない場合、レイアウトが乱雑になるでしょうか? (指定するスタイルは要素のレイアウト [デフォルト スタイル] に基づいているため)。したがって、この場合は、この所有レイアウトをトリガーし、haslayout をトリガーする必要があります。

haslayout をトリガーするには多くの方法があります:

1. 最も一般的で最も安全な方法: haslayout のない要素にzoom:1; を設定します (実際には、それが 1 であるかどうかは問題ではありません。なし)。他のブラウザではまったく認識されないため、最も安全であると言われています。

2. 高さを設定します: auto を除く任意の値。

3. フロートを設定します。

4. 幅を設定: auto 以外の任意の値。

7. ボックスモデルの 2 つのモードを紹介します。

皆さんはボックスモデルに精通しているはずです。ここでは、標準モードと奇妙なモードの2つのモードを紹介します

標準モード:通常、IE以外のブラウザで使用されます。計算方法:占有スペースの幅=コンテンツの幅+左右の内マージンの幅+左右のボーダーの幅+左右のマージンの幅(マージン+パディング+ボーダー+ content)

奇妙なモード:IE6を指す IE以前のバージョンの下側ボックスモデルの計算方法:占有領域の幅の合計=コンテンツ+マージン(コンテンツ+マージン)

類似点それらの違いは実際に簡単に確認できます:

同じ点: それらはすべてマージン、ボーダー、パディング、コンテンツで構成されます

違い: 標準モードのボックスの幅と高さの合計の計算方法が異なります。マージン、パディング、ボーダー、およびコンテンツの合計です。奇妙なモードでは、合計の幅はコンテンツからパディングとボーダーを差し引くことによって取得されます。

8. ブラウザの互換性には他にも問題があります。時間に限りがあるため、以下で一つ一つ説明しません:

①: さまざまなブラウザで img にギャップがあります (理由は次のとおりです)。 )

②: Ie6 では、最大幅、高さ、最小幅と高さが認識されず、min-width/height と Max-width/height は Ie6 では効果がありません、

③: 3 ピクセルの問題: 以下IE6、フローティング要素とフロー要素を並べて表示すると、それらの間に 3 ピクセルの問題が発生します。 (解決にはハックを使用します)

④:インライン要素を包含ボックスとして定義し、その包含ボックスに含まれる絶対配置要素をパーセント単位で配置すると混乱が生じます(ズーム:1)

⑤ : 複数ある場合 フローティング要素の途中にHTMLのコメント文がある場合、フローティング要素の幅が100%の場合、前の行の最後の文字が次の行に表示されます。

⑥: 2 つのブロック要素の場合、垂直マージン値は増加せず、それらの間の距離が最大マージン値になります。

  ⑦:优先级:被!important 注明的css属性具有最高优先级(.abc{color:red !important;})。但在ie6中!important具有一个bug:在同一组css属性中,!important不起作用。

  ⑧:火狐不识别background-position-y 或background-position-x;

  ⑨:ie6 不支持 fixed(前面有提到)

  ⑩:解决 ie6 最大、最小宽高 hack方法(这个说明一下)

  

/* 最小宽度 */.min_width{    min-width:300px;    _width:expression(parseInt(this.clientWidth) < 300 ? "300px" : this.clientWidth);}/* 最大宽度 */.max_width{   max-width:600px;   _width:expression(parseInt(this.clientWidth) > 600 ? "600px" : this.clientWidth);}/* 最小高度 */.min_height{   min-height:200px;   _height:expression(parseInt(this.clientHeight) < 200 ? "200px" : this.clientHeight);}/* 最大高度 */.max_height{   max-height:400px;   _height:expression(parseInt(this.clientHeight) > 400 ? "400px" : this.clientHeight);}

 

   ①①:z-index不起作用的 bug

九、css hack:前端开发人员根据不同的浏览器以及不同的版本而分别编写的特定的CSS样式,通俗理解就是专门为不同浏览器设置自己的样式。

  各版本IE的hark,代码表示:

  .bb{

    height:32px;

    background-color:#f1ee18;       /*所有识别*/

    .background-color:#00deff\9;   /*IE6、7、8识别*/

    +background-color:#f1ee18;    /*IE6、7识别*/

    _background-color:#f1ee18;    /*IE6识别*/

 

    }

   div >

 

  像刚刚png图片不支持插入的代码一样,这种hack用在专门浏览器下,用法如下:下面还有很多类。

    <!--[if IE 6]>        <script src="js/DD_belatedPNG_0.0.8a.js"></script>        <script>        DD_belatedPNG.fix('*');        </script>        <![endif]-->

符号

含义

示例

非运算符

 除IE外都可识别 

lt

Less than小于

gt

greater than大于

lte

less than或equal小于等于

gte

greater than或equal大于等于

|

或运算符

&

与运算符

 

/*类内部hack:*/    .header {_width:100px;}            /* IE6专用*/    .header {*+width:100px;}        /* IE7专用*/    .header {*width:100px;}            /* IE6、IE7共用*/    .header {width:100px\0;}        /* IE8、IE9共用*/    .header {width:100px\9;}        /* IE6、IE7、IE8、IE9共用*/    .header {width:330px\9\0;}    /* IE9专用*//*选择器Hack:*/    *html .header{}        /*IE6*/     *+html .header{}    /*IE7*/

 

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

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

HTML:それはプログラミング言語か何か他のものですか?HTML:それはプログラミング言語か何か他のものですか?Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

HTML:Webページの構造の構築HTML:Webページの構造の構築Apr 14, 2025 am 12:14 AM

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

テキストからウェブサイトへ:HTMLの力テキストからウェブサイトへ:HTMLの力Apr 13, 2025 am 12:07 AM

HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

HTML、CSS、およびJavaScriptの理解:初心者向けガイドHTML、CSS、およびJavaScriptの理解:初心者向けガイドApr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

htmlisaspecifictypeofcodefocuseduructuringwebcontent

HTML、CSS、およびJavaScript:Web開発者に不可欠なツールHTML、CSS、およびJavaScript:Web開発者に不可欠なツールApr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール