回答
你可以,但你的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>
副作用將是由該文本覆蓋的區域仍然是要求保護。也許這不是一個問題,但如果是這樣,你將需要一些其他的解決方案。一種可能性是使字體大小也爲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>
我想你Ç一個試試這個:
.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
見你不能用僞元素選擇使用:not
(見this)。
你可以做的是用另一種方式思考:透明化整個事物,然後用::first-letter
着色。由於後者具有更高的特異性,因此將覆蓋透明設置,從而實現您想要的結果。
另一種基於Waruna的答案,使用color
而不是基於佈局的屬性。主要優勢在於它可以在我測試過的每個瀏覽器上運行(Firefox,Chrome和M $ Edge,但可能適用於所有瀏覽器),並且不會導致任何視覺障礙(如第二種解決方案中的「基線跳躍像素」被接受的答案),因爲它使用了完全可視的屬性。
您的原始CSS的問題是您不能在:not
中使用僞元素(::blah
)。你必須把它擴展到了相反的邏輯,所以你不需要:not
dt {
color: transparent;
}
dt::first-letter {
color: black;
}
/* For testing */
dt:hover {
color: black;
}
<dt>Hello World!</dt>
我們是否真的需要另一個答案,讓每一種可能的方式使文本在css中不可見?最多這應該是對接受的答案的評論。 「第三種選擇是使用'color:transparent'來隱藏和'color:black'來顯示」 – alexanderbird
@alexanderbird這可以在沒有任何視覺干擾的每個瀏覽器上工作,這與可接受的解決方案不同。 – Kroltan
啊!你會添加到你的答案?當我讀到它的時候,我問自己:「這是做什麼的,別人不做的?」 – alexanderbird
- 1. jQuery隱藏除第一個以外的所有圖像
- 2. 隱藏除第一個以外的單獨UL中的所有LI
- 3. 隱藏除文檔某一部分以外的所有div
- 4. 隱藏所有除一個
- 5. 隱藏除一個以外的所有div
- 6. 隱藏除一個以外的所有li項目
- 7. 隱藏所有一個除了第一個使用jQuery
- 8. 隱藏除一個以外的所有div並切換那一個
- 9. 隱藏除jQuery之外的第一個元素的所有內容
- 10. 截斷除第一個以外的所有數字
- 11. String.Split沒有刪除拆分文本,只有第一個字母
- 12. CSS打印隱藏除一個元素之外的所有元素
- 13. 選擇除所有輸入隱藏(但有一個例外)
- 14. css隱藏第一個 div,但只有第一個
- 15. 隱藏除一個div外的所有div(Qt Webkit)
- 16. ListView onScrollListener,隱藏除一個之外的所有元素
- 17. 如何選擇除第一個以外的子父母中的所有子女
- 18. 隱藏除前兩個段落以外的長文本
- 19. Android:除第一個ViewPagers之外的所有隱形
- 20. LINQ語法取除除第一個以外的所有行?
- 21. 從StackPanel中刪除除第一個以外的所有項目?
- 22. 刪除除第一個以外的所有活動
- 23. 在CSS中,第一個字母和第一個字母有什麼區別?
- 24. 刪除空格以外的所有字母數字字符?
- 25. 如何隱藏除FeedBurner以外的所有人的RSS頁面
- 26. 在文本字段中的CSS,所以文本被刪除作爲一個字
- 27. 隱藏沒有html標籤的文本父母被隱藏jQuery
- 28. Jquery:隱藏除了recaptcha圖像以外的所有圖像
- 29. Fullcalendar:AgendaDay視圖,隱藏除軸以外的所有信息
- 30. 如何隱藏除jQuery以外的所有子div?
似乎並沒有在Firefox上運行。即使懸停也沒有透露任何東西。 – Bakuriu
確實。在FF上,整個文本是不可見的,甚至是第一個字母。這不應該發生,因爲它應該被允許使元素不可見,同時使其內容的一部分可見。感覺像一個錯誤。但是,作爲替代方案,您可能會考慮不隱藏文本,但將其設置爲透明或將字體設置爲0. – GolezTrol
@Paulie_D'dt'應該是塊,但即使我向其添加了「display:block」它沒有幫助。 – GolezTrol