私はここでこのトピックを見ました: 最初にテキストを小文字にし、それを大文字にします。CSSでそれは可能ですか?
しかし、それは純粋なCSSではありませんでした。このテキストを含むdivがあります。
<div>
RaWr rAwR
</div>
Cssを使用して「Rawr Rawr」のように見せたいです。大文字でテキスト変換するだけで「RaWr RAwR」になる場合は、カットしてください。すでに大文字になっている文字は大文字のままです。だから私はそれをすべて小文字にしてから大文字にする必要があります、それをdivでラップする解決策はありますか?
別のdivでラップしてみましたが、うまくいきませんでした:
<style>
#test3 { text-transform: lowercase; }
#test3 div { text-transform: capitalize; }
</style>
<div id="test3"><div>RaWr rAwR</div></div>
残念ながら、純粋なCSSではこれを行うことはできません。現時点では、中央/最終的な大文字を回避するためにテキストを書き直すか、JavaScriptを使用することをお勧めします。 (はい、私の目も回転しています。)
一度に1つの要素に適用されるtext-transform
プロパティ値は1つだけなので、提案されたアプローチは機能しません。次のようなものを指定すると…
#parent { text-transform: lowercase; }
#parent #child { text-transform: capitalize; }
…子要素のtext-transform
の値はcapitalize
になりました。これがその要素に適用される唯一の変換です。
作成者が @text-transform
ルールを使用してカスタムマッピングテーブルを定義することを許可するドラフトの提案があります 現状では、このシナリオではうまくいくとは思えません。問題は、 scope
記述子 (Wordで変換が適用される場所)が1つの値しかとらないことです。Word全体、または開始、終了、またはWordの中間部分ですが、部分ごとに異なる変換を行うことができるかどうかは明らかではありません。
これはwikiドラフトの提案のIssue 8で認められているようで、 複数の変換が2、3年前にwww-styleで議論されました 。そのスレッドでは、単一のtext-transform
値のみが要素で許可されるべきであり、その結合は@text-transform
ルールで行われるべきであることが提案されています。ただし、仕様草案には次のように記載されています。
参照されるテキスト変換のスコープが、それらを参照するテキスト変換で指定されたスコープと異なる場合、2つのスコープの共通部分に適用されます。
したがって、このようなルールは機能しません:
@text-transform lowercase-then-capitalize {
transformation: lowercase, "a-z" to "A-Z" single;
scope: initial;
}
私は3つの明白な解決策を見ることができます:
@text-transform
ルールで複数のscope
値を指定できるようにします。text-transform
値を許可します。www-スタイルのメーリングリスト は、この質問に対する純粋なCSSソリューションを見たい場合、これを行うのに適した場所です。
これは、異なるdivに単一の単語がある場合に行う必要があります
#test3 { text-transform: lowercase; }
#test3:first-letter { text-transform: uppercase; }
<div id="test3">haLLo</div>
ネストされたdivを使用している、
そう #test3 { text-transform: lowercase; }
は親div
に適用されるため、親と子の両方のDivに適用されます
#test3 div { text-transform: capitalize; }
をChild Divに最初のスタイルtext-transform: lowercase;
は無視されます
残念ながら、CSS-3までは、純粋なCSSの方法でこれを行う方法はありません。 this ドキュメントのように、text-transform
に指定できる値は5つしかなく、どれもこの要件を解決しません。
ただし、将来的には Counter Sytle
に類似したテキスト変換のカスタムルールが提供される可能性があります