以下の「将来」のソリューション情報を更新しました。まだ完全にはサポートされていません。
現在の回避策(IE8 +、FF、Chromeテスト済み)
このフィドルを参照してください。
関連するCSS
.prevNext {
text-align: justify;
}
.prevNext a {
display: inline-block;
position: relative;
top: 1.2em; /* your line-height */
}
.prevNext:before{
content: '';
display: block;
width: 100%;
margin-bottom: -1.2em; /* your line-height */
}
.prevNext:after {
content: '';
display: inline-block;
width: 100%;
}
説明
下マージンが負の要素のdisplay: block
onは:before
、テキストの行を1行の高さまで引き上げ、余分な行を削除しますが、テキストを置き換えます。次にposition: relative
、要素をオンにするとinline-block
、変位が打ち消されますが、追加の行を追加することはありません。
cssline-height
自体は「ユニット」自体に直接アクセスすることはできませんem
が、margin-bottom
および設定での使用は、乗数値の1つとして指定されたものにtop
簡単に対応します。したがって、、、またはは、に関して計算ですべて等しくなります。これは、が設定されている場合でも、ここで適切な選択を使用します。サイトの外観を正規化するための適切なコーディングは、ある時点で明示的に定義する必要があることを意味します。したがって、乗数法のいずれかを使用すると、同等の単位はと同じ値になります。そして、line-height
1.2
120%
1.2em
line-height
em
line-height: 1.2
1.2em
margin-bottom
top
line-height
em
line-height
line-height
em
px
代わりに設定できる、などの長さ。
LESSやSCSSなどのcssプリプロセッサを使用して変数またはミックスインを使用すると、これらの値を適切な値と一致させるのに役立ちますline-height
。または、JavaScriptを使用して動的に読み取ることができますが、実際にはline-height
、これが使用されている場所のコンテキストで知っておく必要があります。 、およびここで行われた適切な設定。
縮小されたテキスト(スペースなし)の問題の更新
Kubiのコメントは、<a>
要素間のスペースを削除するhtmlの縮小により、正当化が失敗することを指摘しています。タグ内の疑似スペース<a>
は役に立ちませんinline-block
(ただし、スペースが要素内で発生しているため、これは予想されます)、タグ<wbr>
間に追加<a>
しても役に立ちません(おそらく次の行にブレークが必要ないため)。縮小化が望まれる場合、解決策はハードコードされたノーブレーク
スペース文字です。シンスペースやエンスペースなどの他のスペース文字は(驚くべきことに)機能しませんでした。
未来のクリーンソリューションに近づいています
(これを最初に書いた時点で)時代遅れだっwebkit
た解決策は次のとおりです。
.prevNext {
text-align: justify;
-moz-text-align-last: justify;
-webkit-text-align-last: justify; /* not implemented yet, and will not be */
text-align-last: justify; /* IE */
}
FF12.0+およびIE8+(IE7ではバギー)で動作します。
Webkitの場合、バージョン39の時点で(少なくとも以前は忍び寄っていた可能性があります)、拡張機能なしでサポートされますが、ユーザーが実験的な機能を有効にしている場合に限ります(で実行できます)。噂によると、バージョン41または42は完全にサポートされるはずです。まだシームレスにサポートされていないため、まだ部分的な解決策にすぎません。ただ、役に立つ人もいるので投稿したほうがいいと思いました。-webkit-
chrome://flags/#enable-experimental-web-platform-features
webkit