content:
疑似要素を使用するときにcss :before
要素にHTMLを埋め込む方法はありますか?
次のようなユースケースでFont Awesome(またはGlyphicon)を使用したい:
h1:before {
content: "X";
padding-right: 10px;
padding-left: 10px;
color: @orangeLight;
}
ここで、X
は<i class="icon-cut"></i>
のようなものです。
もちろん、これをHTMLで手動で行うこともできますが、この場合は:before
を本当に使いたいです。
同様に、<i>
をリストの箇条書きとして使用する方法はありますか?これは機能しますが、複数行の箇条書き項目では正しく動作しません。
<ul class="icons">
<li><i class="icon-ok"></i> Lists</li>
<li><i class="icon-ok"></i> Buttons</li>
<li><i class="icon-ok"></i> Button groups</li>
<li><i class="icon-ok"></i> Navigation</li>
<li><i class="icon-ok"></i> Prepended form inputs</li>
</ul>
あなたが説明しているのは、実際にはFontAwesomeがすでにやっていることです。 FontAwesomeフォントファミリを、「icon-」で始まるクラスを持つ要素の::before
疑似要素に適用します。
[class^="icon-"]:before,
[class*=" icon-"]:before {
font-family: FontAwesome;
font-weight: normal;
font-style: normal;
display: inline-block;
text-decoration: inherit;
}
次に、擬似要素::before
を使用して、クラスを持つ要素にアイコンを配置します。 http://fortawesome.github.com/Font-Awesome/ に行って、コードを調べてこれを見つけました。
.icon-cut:before {
content: "\f0c4";
}
したがって、アイコンを再度追加する場合は、::after
要素を使用してこれを実現できます。または、質問の2番目の部分では、::after
擬似要素を使用して、箇条書き文字を挿入してリストアイテムのように見せることができます。次に、絶対配置を使用して、左または類似のものに配置します。
i:after{ content: '\2022';}
@keithwylandの答えは素晴らしいです。 SCSSミックスインは次のとおりです。
@mixin font-awesome($content){
font-family: FontAwesome;
font-weight: normal;
font-style: normal;
display: inline-block;
text-decoration: inherit;
content: $content;
}
使用法:
@include font-awesome("\f054");
受け入れられた回答(2019年7月29日現在) は、FontAwesomeのより新しいSVG-with-JSアプローチを使用していない場合にのみ有効です。その場合は、 CSS Pseudo-Elements HowTo の指示に従う必要があります。基本的に、次の3つに注意する必要があります。
リスト項目の場合、目的の効果を達成するために使用できる小さなCSSがあります。
ul.icons li {
position: relative;
padding-left: -20px; // for example
}
ul.icons li i {
position: absolute;
left: 0;
}
OS XのSafariでこれをテストしました。
このアプローチは避けてください。 vertical-align
のデフォルト値はbaseline
です。擬似要素のみのフォントファミリを変更すると、要素が異なるフォントになります。異なるフォントは、異なるフォントメトリックと異なるベースラインを持つことができます。異なるベースラインを揃えるには、要素の全体の高さを増やす必要があります。 アクションでこの効果を参照 。
フォントアイコンごとに1つの要素を用意することをお勧めします。