このマークアップを言ってみましょう:
<div id="socialMedia">
<a class="Twitter">Twitter</a>
</div>
私が欲しいのはテキストの最初の文字だけを表示することです(この場合はTのみ)
(実際には私はそれを使用することはありませんが、私はこれに興味があります。確かに後で役立つことがあります)
だからこれは私の試みでした:
#socialMedia .Twitter{
display:none;
}
#socialMedia .Twitter:first-letter {
display: block !important;
}
実現しないことを確認できました。質問はなぜですか?これにいくつかの回避策はありますか?
-編集-
IE = + 7/8バージョン対応のソリューションを探しています。
サリュート
編集:免責事項:これはコメントに従って機能しません。ニーズに合っていることを確認せずにそのまま使用しないでください。
:first-letter
疑似要素の仕様を確認すると、次のことがわかります。
:first-letter疑似要素は、ブロックの最初の行の最初の文字を選択する必要があります(その行に他のコンテンツ(画像やインラインテーブルなど)が前にない場合)。
ここで重要な言葉は「ブロック」です。
Twitter
のクラスで<a/>
タグの疑似要素を使用しようとしています。デフォルトでは、アンカータグはインライン要素です(ブロックレベルの要素ではありません)。
指定されたマークアップについて、問題の1つの解決策は、アンカーを次のようにスタイルすることです。
.Twitter {
display:block;
visibility:hidden;
}
.Twitter:first-letter {
visibility:visible;
}
あなたが何をしているのか正確にはわかりませんが、実験目的には十分です。ここでデモをチェックしてください: http://jsfiddle.net/H7jhF/ 。
このようなものを試してください:
.Twitter {
font-size: 0;
}
.Twitter:first-letter {
font-size: 12px;
}
<div class="Twitter">Twitter</div>
多分これは最良の解決策ではありませんが、それは機能します。
もう1つの方法は、color: transparent
を使用することです
.Twitter{
display: block;
color: transparent;
}
.Twitter:first-letter{
color: #000;
}
<div id="socialMedia">
<a class="Twitter">Twitter</a>
</div>
ただし、これはlteIE8では機能しません。
参照:
ページからコンテンツを撮影し、動的コンテンツを使用してレターを表示します。
.Twitter{
text-indent:-9999px;
display:block;
position:relative;
}
.Twitter:before,.Twitter::before{
content:"T";
position:absolute;
width:10px;
height:15px;
z-index:100;
text-indent:9999px;
}
あなたがやっていることは、親要素を非表示にしてその子の1つを表示しようとするようなものです。親のスタイルがオーバーライドしているため、機能しません。親要素も機能するためには、ブロックレベルの要素である必要があります。 div
またはp
タグ、またはa
タグのdisplay: block;
と同様です。
これは色を使ったものです:
HTML
<div id="socialMedia">
<a class="Twitter">Twitter</a>
</div>
CSS
body {
background-color:#FFF;
}
.Twitter{
display: block;
color:#FFF;
}
.Twitter:first-letter {
color:#000;
}
JavaScriptを使用して文字列を配列に分割し、配列の最初の項目を使用するのはなぜですか。またはcharAt()
純粋なCSSの回答では、可視性とカラートリックを使用して残りの文字を非表示にしますが、それらは依然として存在し、レイアウトに影響を与えます。レイアウトの問題が発生する可能性があります。要素をフロートさせ、その横に何かを置きたい場合。
隠し要素なしでこれを行う面白い方法を見つけました。秘訣は、Word全体をほとんど何にも縮小せず、最初の文字だけを爆破することです。これはOPがやろうとしていたことと少し似ていますが、display: none
が内部をシャットダウンするのではなく、連続スペクトルで動作しているため、OPは機能します。 (アナログの種類>デジタルの状況。)
HTML:
<div>Ding Dong</div> and other stuff
CSS:
div {
font-size: 0.0000016px;
float: left;
}
div::first-letter {
color: red;
font-size: 10000000em;
}
結果:
これが私がすることです:
.Twitter{
display:block;
width:1ch;
overflow:hidden;
white-space: nowrap;
}