新しいCSS3ボーダーのすべて(-webkit
、...)が行われているので、フォントにボーダーを追加することが可能ですか? (青いTwitterロゴの周囲の白い実線のように)。そうでない場合は、CSS/XHTMLでこれを達成するためのあまりにも醜いハックはありますか、それともPhotoshopを起動する必要がありますか。
正しい答えは:
h1 {
color: yellow;
text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
}
<h1>Hello World</h1>
これは、4つの側面から4つの同じタイプの影を設定します。
これがストロークを生成するためのSCSSミックスインです: http://codepen.io/pixelass/pen/gbGZYL
/// Stroke font-character
/// @param {Integer} $stroke - Stroke width
/// @param {Color} $color - Stroke color
/// @return {List} - text-shadow list
@function stroke($stroke, $color) {
$shadow: ();
$from: $stroke*-1;
@for $i from $from through $stroke {
@for $j from $from through $stroke {
$shadow: append($shadow, $i*1px $j*1px 0 $color, comma);
}
}
@return $shadow;
}
/// Stroke font-character
/// @param {Integer} $stroke - Stroke width
/// @param {Color} $color - Stroke color
/// @return {Style} - text-shadow
@mixin stroke($stroke, $color) {
text-shadow: stroke($stroke, $color);
}
はい、古い質問です。
しかし...誰かがこれを必要とし、コードの入力が嫌いな場合は...
これはCrossBrowserをサポートする2pxの黒いボーダーです(IEではありません)私はこれを@fontfaceフォントのために必要としていました。ファジィ "(手書きまたは類似の)フォント。サブピクセル(0.5ピクセル)を追加することもできますが、必要はありません。
境界線だけの長いコード...はい!!!
text-shadow: 1px 1px 0 #000,
-1px 1px 0 #000,
1px -1px 0 #000,
-1px -1px 0 #000,
0px 1px 0 #000,
0px -1px 0 #000,
-1px 0px 0 #000,
1px 0px 0 #000,
2px 2px 0 #000,
-2px 2px 0 #000,
2px -2px 0 #000,
-2px -2px 0 #000,
0px 2px 0 #000,
0px -2px 0 #000,
-2px 0px 0 #000,
2px 0px 0 #000,
1px 2px 0 #000,
-1px 2px 0 #000,
1px -2px 0 #000,
-1px -2px 0 #000,
2px 1px 0 #000,
-2px 1px 0 #000,
2px -1px 0 #000,
-2px -1px 0 #000;
CSS text-shadow
(または-webkit-text-shadow
/-moz-text-shadow
)と非常に低いぼかしを使用して、おそらく emulate text-strokeを使用できます。
#element
{
text-shadow: 0 0 2px #000; /* horizontal-offset vertical-offset 'blur' colour */
-moz-text-shadow: 0 0 2px #000;
-webkit-text-shadow: 0 0 2px #000;
}
しかしこれは-webkit-text-stroke
プロパティよりも広く利用可能ですが、私はそれがあなたのユーザの大多数に利用可能であることを疑います、しかしそれは問題ではないかもしれません(優雅な低下、そしてそれすべて)。
'text-stroke'プロパティがあるようですが、(少なくとも私にとっては)Safariでしか機能しません。
これが私が使っているものです:
.text_with_1px_border
{
text-shadow:
-1px -1px 0px #000,
0px -1px 0px #000,
1px -1px 0px #000,
-1px 0px 0px #000,
1px 0px 0px #000,
-1px 1px 0px #000,
0px 1px 0px #000,
1px 1px 0px #000;
}
.text_with_2px_border
{
text-shadow:
/* first layer at 1px */
-1px -1px 0px #000,
0px -1px 0px #000,
1px -1px 0px #000,
-1px 0px 0px #000,
1px 0px 0px #000,
-1px 1px 0px #000,
0px 1px 0px #000,
1px 1px 0px #000,
/* second layer at 2px */
-2px -2px 0px #000,
-1px -2px 0px #000,
0px -2px 0px #000,
1px -2px 0px #000,
2px -2px 0px #000,
2px -1px 0px #000,
2px 0px 0px #000,
2px 1px 0px #000,
2px 2px 0px #000,
1px 2px 0px #000,
0px 2px 0px #000,
-1px 2px 0px #000,
-2px 2px 0px #000,
-2px 1px 0px #000,
-2px 0px 0px #000,
-2px -1px 0px #000;
}
これがストロークを生成するためのLESSミックスインです。 http://codepen.io/anon/pen/BNYGBy?editors=110
/// Stroke font-character
/// @param {Integer} $stroke - Stroke width
/// @param {Color} $color - Stroke color
/// @return {List} - text-shadow list
.stroke(@stroke, @color) {
@maxi: @stroke + 1;
.i-loop (@i) when (@i > 0) {
@maxj: @stroke + 1;
.j-loop (@j) when (@j > 0) {
text-shadow+: (@i - 1)*(1px) (@j - 1)*(1px) 0 @color;
text-shadow+: (@i - 1)*(1px) (@j - 1)*(-1px) 0 @color;
text-shadow+: (@i - 1)*(-1px) (@j - 1)*(-1px) 0 @color;
text-shadow+: (@i - 1)*(-1px) (@j - 1)*(1px) 0 @color;
.j-loop(@j - 1);
}
.j-loop (0) {}
.j-loop(@maxj);
.i-loop(@i - 1);
}
.i-loop (0) {}
.i-loop(@maxi);
text-shadow+: 0 0 0 @color;
}
(それは代わりにSCSSを使用するピクセルクラスの回答に基づいています)
text-shadow:
1px 1px 2px black,
1px -1px 2px black,
-1px 1px 2px black,
-1px -1px 2px black;
私はかつてcss3でそれらの丸い角と影を落とすことを試みました。後で、私はそれがまだ不十分にしかサポートされていないことに気づいた(もちろんInternet Explorer(s)!)
私はそれをJS(IE Canvasを含むHTMLキャンバス)でやろうとしましたが、(私のC2Dマシンでさえ)パフォーマンスに大きな影響を与えます。つまり、本当に効果が必要な場合は、JSライブラリを検討してください(それらのほとんどはIE6上で実行できるはずです)。ただし、パフォーマンスの問題のためにやり過ぎないでください。それでも代替手段が必要な場合は、SFiRを使用してからPS PSとSFiRそれを使用できます。 CSS3は今日準備ができていません。