Internet Explorerのdivでフロートを左右に動かせない
-
22-07-2019 - |
質問
htmlは次のとおりです。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="styles.css"/>
<title></title>
</head>
<body>
<div align="center">
<div id="main-header-content" class="content">
<div class="left">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad
minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in
vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla
facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent
luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber
tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod
mazim placerat facer possim assum.
</div>
<div class="right">
<div class="left">
<img src="http://www.mywebk9.com/images/question.png" alt="Questions"/>
</div>
<div class="right">
<span class="small-text">Lorem ipsum dolor sit amet</span>
</div>
</div>
</div>
</div>
</body>
</html>
and styles.css:
*
{
margin: 0;
padding: 0;
}
body
{
font-family: Verdana;
font-size: 8pt;
}
div.content
{
width: 585px;
}
div#header-content div
{
padding: 20px;
text-align: justify;
}
div#main-header-content > div.left
{
padding-left: 40px;
padding-right: 7px;
text-align: justify;
width: 350px;
}
div#main-header-content > div.right
{
padding-left: 7px;
padding-right: 15px;
width: 165px;
}
div#main-header-content div.right div.left
{
width: 20px;
}
div#main-header-content div.right div.right
{
text-align: left;
width: 142px;
}
div.left
{
float: left;
}
div.right
{
float: right;
}
.small-text
{
font-size: smaller;
}
これはFFおよびChromeで正常に機能します。 2列にテキストがあり、1列にアイコンと少量のテキストが含まれている必要があります。 IEでこれを機能させるにはどうすればよいですか? div clear = bothを試しましたが、それは何もしていません。
また、FF、Chrome、およびIEで機能するページの作成方法とスタイルの使用方法に関するヒントを提供できるすべての人に賛成<!> gt; = 7。
解決
Doctypeを定義しておらず、IEがQuirksmodeで標準モード(またはほぼ標準)に合わせてページを表示していることが原因である可能性があります。
詳細については、この記事をお読みください:
http://www.quirksmode.org/css/quirksmode.html
サイトを標準モードで確認しましたが、IE7では2列が正常に動作しました(FF <!> amp; Chromeなど)
他のヒント
いくつかのことを提案できますが、実際にそれらのどれかが役立つかどうかはわかりません:
- ドキュメントにDOCTYPE(例:Transitional HTML 4.01)を追加します。これにより、IEはいわゆる<!> quot; standards-compliant <!> quot;になります。 e曲的な<!> quot; quirks <!> quotではなくモード。モード;
- そのような左と右のクラスを再利用しないでください。 IE7 +のみである子セレクターを使用する必要があり、それは必要ありません。
- divにfloatのみが含まれている場合、高さは0になります。これに対処するには、<!> quot; clear:both <!> quot;で高さ0のdivをそれらの下に置きますそれまたは<!> quot; overflow:hidden <!> quot;親で;
- align = <!> quot; center <!> quot;を取り除きます。それは標準ではありません。
使用を検討するスケルトンは次のとおりです。
<div id="container">
<div id="left">Text</div>
<div id="right">
<div id="icon">(image)</div>
<div id="text">(text)</div>
</div>
</div>
組み合わせ:
html, body, div { padding: 0; margin: 0; border: 0 none; } /* or a proper reset CSS */
#container { margin: 0 auto; width: 585px; overflow: hidden; } /* center */
#left { text-align: justify; width: 350px; float: left; }
#right { width: 235px; float: right; overflow: hidden; }
#icon { float: left; width: 20px; }
#text { float: right; width: 142px; }
など。
最初にすべてスキップしました
div#main-header-content > div.left
そして置換
div#main-header-content div.left
IE6では機能しないため。
次に、使用します
div.right {
float: left;
}
さらに、廃止されたため、<div align="center">...</div>
は間違いなくスキップします。代わりに、div.contentを
div.content {
position: relative;
width: 585px;
margin-left: -292px
left: 50%;
}
中央へのトリックは、(position:relativeまたはposition:absoluteを使用して)左ポイントを幅の半分に設定し、マージンを要素の幅の半分に戻すことです(「要素」は要素です)中央に配置します)。
変更されたcss
div#main-header-content div.left
{
padding-left: 40px;
padding-right: 7px;
text-align: justify;
width: 350px;
}
div#main-header-content div.right
{
padding-left: 7px;
padding-right: 15px;
width: 165px;
}
これらのクラスのur cssの代わりに、IEおよびFirefoxでも正常に機能することを試してください。