私は Safari 5.1.7 (Windows 上) でテストしていますが、驚くべきことに、Chrome では同じ問題は発生しません。FF19とIE9でも動作します。
内の単語の上下に 2 つのテキストを揃えようとしています<span>
。それは機能しますが、 my に他のインライン要素が含まれるとすぐに<span>
、それらは別々の行に分割されます。
コードは次のとおりです。
.c { display: inline-table; vertical-align: middle; }
.c:before { content: 'above'; display: table-header-group; }
.c:after { content: 'below'; display: table-footer-group; }
正常に動作します: 、
上記の
単語の
下のよう<span class="c">word</span>
にレンダリングされます
動作しません:
上記のよう<span class="c"><b>word1</b><b>word2</b></span>
にレンダリングされますword1 word2
以下
代わりに (他のすべてのブラウザと同様):
上
word1 word2
下
ここにデモがあります:http://jsfiddle.net/3LuHx/11/
私が試してみました
table-row
table-header-group
/の代わりにtable-footer-group
、<b>
を明示的に としてマークするにはinline !important
、- を+
<b>
としてマークするには、display:inline-block
float:left
- に設定
.c
するにwhite-space:nobreak
は、
しかし、すべて同じ結果になります。
をさらに別のものでラップしてに設定すると機能しますが、そもそもandによって DOM スクリプトが非常に簡単になったので、新しい要素を導入したくありません。<b>
<span>
display:table-row
:before
:after
誰かが以前にこの問題を抱えていて、修正を思いつきましたか?