CSSで最初の文字の後にすべての文字を隠すことはできますか?CSSで最初の文字以外のすべてのテキストを非表示にしますか?
dt:not(::first-letter) {
display: none;
}
CSSで最初の文字の後にすべての文字を隠すことはできますか?CSSで最初の文字以外のすべてのテキストを非表示にしますか?
dt:not(::first-letter) {
display: none;
}
あなたのCSSは間違っています。以下のバージョンが動作します(少なくともChromeでは)。これはdt
を見えなくし、最初の文字を覆い隠して再び見えるようにします。
display
でも同じことを試しましたが、期待通りに動作しません。 visibility: hidden
は内容を隠しますが、要素をそのまま保持しますが、display: none
はそれをフローから削除し、サブ要素(この場合は最初の文字)が再び表示されるようにします。
私はホバーを追加しました。あなたはdtの残りを見るために手紙をホバーすることができます。
dt {
visibility: hidden;
}
dt::first-letter {
visibility: visible;
}
/* Hover the first letter to see the rest */
dt:hover {
visibility: visible;
}
Hover to see the rest:
<dt>Lorum ipsum is a weird text</dt>
<dt>Foo bar</dt>
副作用は、テキストで覆われている面積は、まだ請求されていることになります。たぶんそれは問題ではないかもしれませんが、そうであれば他の解決策が必要になります。 1つの可能性は、dt
0
のフォントサイズを作成することです。そうすれば、テキストは非常に小さくなり、スペースは不要です。もちろん画像も含まれていれば助けにならないでしょう。
これはうまくいかないので、ここではfont-sizeを使用する方法があります。理想的ではありませんが、うまくいけばそれでもあなたの問題は解決します。
これを試してみてください
dt {
font-size: 0;
}
dt::first-letter {
font-size: 1rem;
}
/* Hover the first letter to see the rest */
dt:hover {
font-size: 1em;
}
Hover to see the rest:
<dt>Lorum ipsum is a weird text</dt>
<dt>Foo bar</dt>
.newline1::first-letter {
font-size: 200%;
color: #8A2BE2;
}
.newline2::first-letter {
/*color: transparent;*/
font-size: 0px;
}
<div class="newline1">
Test Stackoverflow.com
</div>
<div class="newline2">
Test Stackoverflow.com
</div>
.newline1::first-letter {
font-size: 200%;
color: #8A2BE2;
}
.newline2::first-letter {
color: transparent;
}
<div class="newline1">
Test Stackoverflow.com
</div>
<div class="newline2">
Test Stackoverflow.com
</div>
私は、Cだと思います
.twitter{
display: block;
color: transparent;
}
.twitter:first-letter{
color: #000;
}
<div id="socialMedia">
<a class="twitter">Twitter</a>
</div>
<div id="socialMedia">
<a class="twitter">Google</a>
</div>
も参照してください。このfiddle
あなたは(thisを参照)擬似要素セレクタと:not
を使用することはできません:このしてみてください。
あなたができることは、別の方法で考えることです:全体を透明にしてから、::first-letter
で色付けします。後者は特異性が高いため、透明な設定を上書きして、結果を得られます。
代わりに、Warunaの答えに基づいて、レイアウトベースの属性の代わりにcolor
を使用します。主な利点は、テストしたすべてのブラウザ(Firefox、Chrome、M $ Edgeでは動作しますが、おそらくすべてのブラウザで動作するはずです)でも動作し、視覚的グリッチは発生しません(第2の解決策それは完全に視覚的な属性を使用するためです)。
元のCSSの問題点は、の:not
の内部に疑似要素(::blah
)を使用できないことです。あなたがFirefoxの上で動作していないよう:not
dt {
color: transparent;
}
dt::first-letter {
color: black;
}
/* For testing */
dt:hover {
color: black;
}
<dt>Hello World!</dt>
CSSでテキストを見えないようにするためには、たいていの場合、これは受け入れられた答えに対するコメントでなければなりません。 "第3の選択肢は、' color:transparent'を隠すために '' color:black''を使用することです。 – alexanderbird
@alexanderbirdこれは、受け入れられたソリューションとは異なり、視覚的なグリッチのないすべてのブラウザで機能します。 – Kroltan
ああ!あなたはそれをあなたの答えに加えますか?私がそれを読んだとき、私は自分自身に「他人がしていないことは何ですか?」と尋ねていました。 – alexanderbird
を必要としないので、逆の論理にそれを拡張する必要があります。ホバリングでさえ、何も明らかにしません。 – Bakuriu
確かに。 FFでは、最初の文字であってもテキスト全体が見えません。コンテンツの一部を見えるようにしながら要素を不可視にすることが許されるべきであるため、このようなことは起こりません。私にはバグのような気がする。しかし、代わりに、テキストを非表示にしないで、透明にしたり、フォント側を0に設定したりすることも考えられます。 – GolezTrol
@Paulie_D 'dt'はブロックでなければなりませんが、' display:block'を追加しても、それは助けにならない。 – GolezTrol