IE私のコードは
CSS:
div {
display: inline-block;
margin-right:40px;
border: 1px solid;
}
HTML:
<div>element</div>
<div>element</div>
<div>element</div>
<div>element</div>
<div>element</div>
これは、Firefox/Chromeでの表示です(予想される表示)。
これはIEでの表示です
IEがdisplay:inline-blockをサポートしている場合、私はグーグルしました、そして明らかにそうです。
実用的なソリューション
以下は正しく動作するようです:
<!DOCTYPE html>
<html>
<head>
<style>
DIV {
display: inline-block;
*display: inline; /* leading asterisk IS correct */
margin-right:40px;
border: 1px solid;
zoom: 1; /* seems to fix drawing bug on border in IE 7 */
}
</style>
</head>
<body>
<div>element</div>
<div>element</div>
<div>element</div>
<div>element</div>
<div>element</div>
</body>
</html>
回答履歴
IE9標準モードでうまく動作します。 Quirksモードでは(説明したとおり)正しく表示されません。
IE9でのテスト:
IE7をだますには:
div {
display: inline-block;
*display: inline; /* leading asterisk IS correct */
margin-right:40px;
border: 1px solid;
}
この記事 から取得。 IE 7エミュレーションモードで動作します。
Doctypeに関する@SKSコメントに従って、Doctypeを指定して完全なソリューションを追加しました。
私はこのコードを追加して働いた:
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
ヘッダー情報に。
IEには有効なCSSハックがありますが、かなりの数があります。
hasLayout
hasLayout: true;
---どうやら、IE7(?)レンダリングに、グローバルルールではなく要素のCSSレイアウトルールを強制する
* 表示
*display: inline;
zoom: 1;
-スターハック。これは、divをインライン要素として整列させるレンダリングエンジンを「トリック」しているようです。
float
float:left;
-古き良きフロート、IE6でもサポートする必要がありますが、なぜIE6を心配する必要があるのかはわかりませんが、中国のブラウザの統計では、IE6がまだ中国でかなり人気があることを示しているようです。去年のいつか。個人的には、北朝鮮は心配するべきではないと思いますが、それは私だけです。
ただし、これらすべてのハックを回避して、HTML Shim(Shiv)と呼ばれるGoogleオンラインコードプロジェクトを支持する別の方法があるようです。これを含める目的は、HTML9をサポートするためにすべてのIE v9より前のバージョンを作成することです。インラインブロックを機能させるために、上記のすべてを使用する必要がないことに気付きました。 。これは、JavaScriptを追加してもかまわない場合にのみ有効です。一方で、最近JavaScriptを使用しない人はいますか?
もちろん、quirksモード(互換性)または標準モードもありますので、最初に有効なdoctypeを追加してください。 HTML5の場合、より簡単です。
<?DOCTYPE html>
(?)どのバージョンかわからないが、互換モードで7を読んだと思う
div {
display: block;
margin-right: 40px;
float: left;
border: 1px solid;
}
問題はIE7以前でのみ発生しますが、これで解決します。