特定の DOCTYPE 宣言により、高さ 100% のテーブルと div が動作しなくなるのはなぜですか?
-
22-09-2019 - |
質問
いくつかあるように私には思えます DOCTYPE
IE (6-8) での宣言により、ブラウザが無視する可能性があります。 height="100%"
テーブルと div について (style="height:100%"
)
例えば
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test1</title>
</head>
<body>
<div style="border: 2px solid red; height: 100%">
Hello World
</div>
</body>
</html>
をレンダリングします DIV
テキストの高さによっては伸びません。の削除 DOCTYPE
宣言により、 DIV
必要に応じて垂直方向に伸縮します。
そこで私の質問は次のとおりです。
- なぜそれが起こるのでしょうか?
- どうやって保管していますか
DOCTYPE
そして まだ テーブルが伸びることを許可しますか? - それはあなたに起こりましたか?
- ご存知ですか?、よく知られていますか?
解決
古代のブラウザは奇妙で一貫性のない動作をしており、ブラウザは Doctype を次のように扱っていたためです。 知能検査 作者が標準に準拠してコードを作成しているのか、それとも 10 年前に W3Schools から学んだことに準拠してコードを作成しているのかを確認するためです。あなたが持っている場合
height: 100%
親要素の高さはauto
それから100%
手段auto
.一般的にはそうではありません。それは叫びます」レイアウトテーブル」。ただし、html 要素と body 要素で高さまたは最小の高さを設定します。他にもテクニックはありますが、奇妙なことに、私はそのテクニックを必要とする立場に一度も行ったことがないので、現時点では便利なリンクを持っていません。
それはブラウザが行うべきことなので…
さて、私はこの質問に答えています…
他のヒント
この「問題」への真の解決策は、以下のCSSを使用したことになります
html, body {
margin: 0;
padding: 0;
border: none;
height: 100%;
}
#mydiv {
height: 100%;
}
しかし境界は高さを追加することを覚えています。
ブラウザは、ヘルプを別々に正しくレンダリングするために検証されていない古いコードをのことを行い癖モードになります。
あなたはコンテナ要素の上に高さを設定する必要があり、100%の高さを持つdiv要素がないので、継承の高さ:自動;
あなたは厳密に移行からの切り替えを試みることができるが、私は、これはあなたの問題を解決しないだろう。