これはヘッドスクラッチャーです。
Twitter の Bootstrap フレームワークを使用していくつかのドロップダウン ボタンを作成しているときに最近遭遇した現象を示すために、コメント付きの jsFiddle を作成しました。
http://jsfiddle.net/jackwanders/WKvPv/
基本的に、HTML5、HTML 4 Strict、または XHTML Strict DOCTYPE を使用すると、ボタンは設計どおりにレンダリングされます。ただし、HTML4 または XHTML Transitional DOCTYPE を使用する場合、キャレット ボタンはより短い高さでレンダリングされます。関連する Bootstrap の CSS は次の<span class="caret">
とおりです (色やグラデーションなど、重要でないスタイルは削除しました)。
.caret {
display: inline-block;
width: 0;
height: 0;
vertical-align: top;
border-top: 4px solid #000000;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
content: "";
}
.btn .caret {
margin-top: 7px;
margin-left: 0;
}
.btn {
display: inline-block;
*display: inline;
padding: 4px 10px 4px;
margin-bottom: 0;
*margin-left: .3em;
line-height: 18px;
*line-height: 20px;
text-align: center;
vertical-align: middle;
}
DOCTYPE がボタンの高さに影響するのはなぜですか? が 18px に設定されている場合line-height
、高さが 18px 未満になるのはなぜですか?
PS - はい、Bootstrap には HTML5 が必要であることは承知していますが、これは、DOCTYPE が CSS スタイルをレンダリングする方法ではなく、使用される HTML5 機能に関するものだと思います。