2016-04-25 6 views

答えて

19

あなたの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つの可能性は、dt0のフォントサイズを作成することです。そうすれば、テキストは非常に小さくなり、スペースは不要です。もちろん画像も含まれていれば助けにならないでしょう。

これはうまくいかないので、ここではfont-sizeを使用する方法があります。理想的ではありませんが、うまくいけばそれでもあなたの問題は解決します。

+12

を必要としないので、逆の論理にそれを拡張する必要があります。ホバリングでさえ、何も明らかにしません。 – Bakuriu

+0

確かに。 FFでは、最初の文字であってもテキスト全体が見えません。コンテンツの一部を見えるようにしながら要素を不可視にすることが許されるべきであるため、このようなことは起こりません。私にはバグのような気がする。しかし、代わりに、テキストを非表示にしないで、透明にしたり、フォント側を0に設定したりすることも考えられます。 – GolezTrol

+0

@Paulie_D 'dt'はブロックでなければなりませんが、' display:block'を追加しても、それは助けにならない。 – GolezTrol

-1

これを試してみてください

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>

+4

これはどのようにして質問に答えますか?問題は*最初の文字を隠すことではなく、文字の残りを隠すことではありません。 – Bakuriu

+0

これは質問されているものと全く異なる質問に答えるものです。私はおそらくこの答えをdownvoteする必要があります。 – wizzwizz4

11

私は、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

+0

さて、私は部分的にそれを取り戻しています。JSFiddleでうまく見えますが、Stack Snippetではうまくいきません。今日後でバグレポートを提出する予定です。 – Kroltan

+0

申し訳ありませんが、私のファイアフォックスではそれはよく見ています – Jainam

+0

お願いフィドルリンク – Jainam

5

あなたは(thisを参照)擬似要素セレクタと:notを使用することはできません:このしてみてください。

あなたができることは、別の方法で考えることです:全体を透明にしてから、::first-letterで色付けします。後者は特異性が高いため、透明な設定を上書きして、結果を得られます。

2

代わりに、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>

+1

CSSでテキストを見えないようにするためには、たいていの場合、これは受け入れられた答えに対するコメントでなければなりません。 "第3の選択肢は、' color:transparent'を隠すために '' color:black''を使用することです。 – alexanderbird

+0

@alexanderbirdこれは、受け入れられたソリューションとは異なり、視覚的なグリッチのないすべてのブラウザで機能します。 – Kroltan

+1

ああ!あなたはそれをあなたの答えに加えますか?私がそれを読んだとき、私は自分自身に「他人がしていないことは何ですか?」と尋ねていました。 – alexanderbird

関連する問題