cssのtext-box-trim
およびtext-box-edge
プロパティにより、開発者はテキストの最初の行の上からテキストボックスの最後のテキスト行の下にある空白のスペースの量を正確に制御できます。これらのブランクは、テキストボックスの垂直高さをそのコンテンツの高さよりも大きくします。
leading (線間隔)と呼ばれ、すべてのテキスト行(実際には2行半間隔)の上と下に表示され、テキストの読みやすさが向上します。しかし、私たちはそれがテキストの行の間に表示されたいだけですよね?マージン、塗りつぶし、ギャップ、その他の間隔に影響を与えるため、テキストボックスの上部と下のエッジに表示されたくありません。
たとえば、50pxのマージンを実装すると、ライン間隔が37px増加すると、合計87pxスペースがあります。次に、マージンを13pxに調整して、実際にスペースを50pxにする必要があります。
設計システムの男として、私はできるだけ一貫性を維持し、できるだけ少ないマーカーを使用しようとしています。
/* 当 <element> 后面跟着 <h1> 时 */ <element> + h1 { margin-bottom: 13px; /* 而不是 margin-bottom: 50px; */ }</element> </h1></element>
およびtext-box-trim
text-box-edge
免責事項:
およびは、Chrome 128とSafari 16.4の機能フラグと、機能フラグなしのSafariテクノロジープレビューからのみアクセスできます。最新のブラウザのサポート情報については、Caniuseを参照してください。
text-box-trim
text-box-edge
から始めます
text-box-trim
メモ:text-box-trim
値の代わりに古い
text-box-trim: trim-start; text-box-trim: trim-end; text-box-trim: trim-both; text-box-trim: none;
さて、どこに剪定したいですか?
start/end/both
あなたは私が何を意味するのか知りたいかもしれません。タイポグラフィの文字には複数のピークがあることを考えてください。 trim-start/trim-end/trim-both
top/bottom/both
文字「x」およびその他の小文字の上部(上昇または上部の拡張機能を含めない)の上部をマークするxの高さ、大文字の上部の上部(昇順または上部の拡張機能を含む)、およびほとんどの文字の下部をマークする文字ベースラインをマークする大文字の高さがあります。もちろん、持ち上げ高さと低い高さもあります。
Xの高さ、資本の高さ、または上昇の高さとテキストボックスの「上」の端(上部の筆記が始まる場所)の間の空白、および文字のベースラインまたは下の筆記の高さと「下」のエッジの間の空白(text-underline-position
がunder
に設定され、その後、階層が始まる場合)の間の空白をトリミングできます。
text-box-edge: leading
は、すべてのライン間隔が含まれていることを意味します。これは、text-box-trim: none
またはtext-box-trim
およびtext-box-edge
を完全に省略するのと同じです。また、text-box-trim: trim-start
を使用して低エッジトリミングを制限するか、text-box-trim: trim-end
を使用して上端トリミングを制限することもできます。はい、これをまったくしない方法はたくさんあります!
新しいWebブラウザーは、leading
値を削除し、「公開しないでください(まだ)」の警告(*肩をすくめている*)にもかかわらず、auto
値を削除し、
もちろん、text-box-edge
auto
2つの値(上端に関する指示、次に下端に関する指示)を受け入れます。ただし、
/* 当 <element> 后面跟着 <h1> 时 */ <element> + h1 { margin-bottom: 13px; /* 而不是 margin-bottom: 50px; */ }</element> </h1></element>
auto
すべてのシナリオが機能するすべてのシナリオを説明できますが、それらのどれも有効ではありません。私たちが望んでいるのは、上端または下のエッジをauto
に設定し、他のエッジを他の何かに設定できることだけだと思いますが、それはまさにそうではないことです。これは質問ですが、すぐに深く掘り下げます。
text
最初の値として使用すると、上記の部分がトリミングされます。 (私はあなたがそれを望んでいると思いますauto
、それはそうではありません。)
text-box-trim: trim-start; text-box-trim: trim-end; text-box-trim: trim-both; text-box-trim: none;
リフトとより低い高さの測定値がフォント自体(またはそうでない!)から来ていることは注目に値します。たとえば、Arialフォントの場合、上昇の高さにはディクリティックスが含まれ、落下の高さには低下が含まれ、Fravancesフォントの場合、秋の高さにはディクリティックスが含まれます。したがって、text
からtext
の名前の変更についての議論があります。 from-font
text-box-edge: auto; /* Works */ text-box-edge: ex auto; /* Doesn't work */ text-box-edge: auto alphabetic; /* Doesn't work */
になります。したがって、下端をトリミングしないように選択するには、text
:auto
の代わりにtrim-start
を使用する必要があります。
trim-both
text-box-edge: ex text; /* Valid */ text-box-edge: ex; /* Computed as `text-box-edge: ex text;` */ text-box-edge: text alphabetic; /* Valid */ text-box-edge: text text; /* Valid */ text-box-edge: text; /* Computed as `text-box-edge: text text;` */
/* 当 <element> 后面跟着 <h1> 时 */ <element> + h1 { margin-bottom: 13px; /* 而不是 margin-bottom: 50px; */ }</element> </h1></element>
Figmaの垂直トリム設定のキャップの高さからベースラインオプションは、まさにこれを行います。ただし、その開発モードは、廃止された属性名(leading-trim
およびtext-edge
)および時代遅れの値(top
およびbottom
)でCSSコードを生成します。
x高さの上にのみトリミングするには:
text-box-trim: trim-start; text-box-trim: trim-end; text-box-trim: trim-both; text-box-trim: none;
レターベースラインの上下のxの高さをトリミングするには:
text-box-edge: auto; /* Works */ text-box-edge: ex auto; /* Doesn't work */ text-box-edge: auto alphabetic; /* Doesn't work */
ベースラインの下にのみトリミングするために、次のは無効です(物事は非常に滑らかになりませんか?):
)text-box-edge: ex text; /* Valid */ text-box-edge: ex; /* Computed as `text-box-edge: ex text;` */ text-box-edge: text alphabetic; /* Valid */ text-box-edge: text text; /* Valid */ text-box-edge: text; /* Computed as `text-box-edge: text text;` */
が有効な上端の値ではないことを意味します。冗長な苦情とは別に、正しい構文は、alphabetic
:trim-end
で実際にキャンセルしたとしても、上端の値を宣言することができます。
trim-end
text-box-edge: cap; /* Computed as text-box-edge: cap text; */
値を使用する必要があります。両方とも現在サポートされていません。
ideographic-ink
ideographic
text-box-trim: trim-start; /* Not text-box-trim: trim-both; */ text-box-edge: cap; /* Not computed as text-box-edge: cap text; */
text-box
属性があり、それほど重要ではありません。すべて同じルールが適用されます。
text-box
最終的な考え
text-box-trim: trim-both; text-box-edge: cap alphabetic;
とtext-box-trim
はより理にかなっていると思いますが、text-box-edge
は略語属性として使用され、
text-box-trim-start
他にもいくつかの懸念があります。たとえば、アンダースコア、オーバースコア、句読点のぶら下がっているマーク、またはディアティックマークを含めるオプションがある必要がありますか?特にtext-box-trim-end
または特に厚いtext-box-trim
を使用している場合は、はいと言います。 text-box-edge
以上がテキストボックスのホワイトスペースをトリミングするための2つのCSSプロパティの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。