新しい(ばかげた)HTML変更ソリューション(しかし機能します!)
奇妙な最初の行の障害のため、解決策は重要でない最初の行を生成し、それを受け入れることに依存していました。このフィドルは、IE9の現在の「バグのない」ソリューションのように見えるものを示しています(以前のIEバージョンでは、疑似要素/クラスの使用を考慮して微調整する必要があります)。
HTMLでは、テキストの各セクションが「二重に折り返される」ように、過度の折り返しが必要です。デモには、ブロックレベルのラップを取得するための3つの異なる手段がありますが、すべて同じ修正を使用します。
エッセンシャルHTML
<div id="cnt">
<p class="ieFixBlockWrap">
<span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tincidunt consectetur tortor, sed vestibulum lectus hendrerit at. Praesent fermentum augue molestie lectus pharetra eget cursus erat cursus.
</span>
</p>
<span class="ieFixBlockWrap">
<span>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent fringilla nisl posuere tortor rutrum lobortis.
</span>
</span>
<div class="ieFixBlockWrap">
<span>In risus libero, faucibus ac congue et, imperdiet ac purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi aliquam lobortis ullamcorper. Proin risus sapien, pulvinar in adipiscing non, rutrum hendrerit magna. Praesent interdum pharetra vehicula. Integer molestie mi neque.
</span>
</div>
</div>
CSS
#cnt {
white-space: pre-wrap;
border:1px solid black;
line-height: 1.2em; /* set explicitly, see below */
/* prevent shifted :before from interfering with elements preceeding #cnt */
overflow: hidden;
}
.ieFixBlockWrap:before { /* this becomes the first line, but also an extra line gap */
content:'';
display: inline-block;
width: 100%;
}
.ieFixBlockWrap {
display: block; /* just to demo span as block level */
margin: -1.2em 0; /* offset by line-height to remove gaps from :before*/
}
.ieFixBlockWrap:last-child {
margin-bottom: 0; /* last one does not need the bottom margin adjusted */
}
元のHTML変更ソリューション(まだ最初の行で失敗しました)
セットspan
内のすべてのテキストを1つにまとめると、このフィドルで動作するように見えました。div
pre-wrap