CSS字体边框?

CSS

番长斯丁Itachi

2020-03-18

有了所有新的CSS3边框-webkit,现在可以在字体中添加边框了吗?(就像蓝色的Twitter徽标周围的纯白色边框一样)。如果不是,是否有任何不太丑陋的骇客会在CSS / XHTML中完成此任务,还是我仍然需要启动Photoshop?

第2053篇《CSS字体边框?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

9个回答
西门飞云泡芙 2020.03.18

我曾经尝试用css3做那些圆角和阴影。后来,我发现它仍然受支持不佳(当然是Internet Explorer!)

我最终尝试在JS(带有IE Canvas的HTML canvas)中执行此操作,但是它对性能的影响很大(即使在我的C2D机器上也是如此)。简而言之,如果您确实需要这种效果,请考虑使用JS库(它们中的大多数应该都可以在IE6上运行),但是由于性能问题,请不要过分这样做;如果仍然需要替代方案,则可以使用SFiR,然后使用PS和SFiR。CSS3今天还没有准备好。

Jim十三 2020.03.18

我对这里提到的所有解决方案进行了比较,以进行快速概述:

<h1>with mixin</h1>
<h2>with text-shadow</h2>
<h3>with css text-stroke-width</h3>

https://codepen.io/Grienauer/pen/GRRdRJr

乐米亚 2020.03.18
text-shadow:
    1px  1px 2px black,
    1px -1px 2px black,
   -1px  1px 2px black,
   -1px -1px 2px black;
GOSam 2020.03.18

具有较少mixin的描边字体

这是用于生成笔划的LESS mixin: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;
}

(它是基于pixelass答案,而是使用SCSS)

伽罗Davaid 2020.03.18

这是我正在使用的:

.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;
}
村村Green 2020.03.18

似乎有一个“ text-stroke”属性,但是(至少对我而言)它仅在Safari中有效。

http://webkit.org/blog/85/introducing-text-stroke/

斯丁村村GO 2020.03.18

要详细说明提到-webkit-text-stroke的一些答案,以下是使其起作用的代码:

div {
  -webkit-text-fill-color: black;
  -webkit-text-stroke-color: red;
  -webkit-text-stroke-width: 2.00px; 
}

在深入的文章有关使用文本行程是在这里和浏览器的列表,支持文字笔画是在这里

前端猪猪GO 2020.03.18

更新

这是生成笔画的SCSS mixin: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);
}

在此处输入图片说明

是的旧问题..已接受(并且很好)的答案..

但是...如果有人需要它并且讨厌键入代码...

这是一个2px黑色边框,具有CrossBrowser支持(不是IE),我需要@fontface字体使用此边框,因此它需要比以前看到的答案更干净...我以像素为单位来确保“(几乎)没有任何间隙”模糊”(handrawn或类似字体)字体。可以添加亚像素(0.5px),但我不需要它。

只是边界的长代码???...是!!!

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;
宝儿猿斯丁 2020.03.18

正确的答案是:

h1 {
    color: yellow;
    text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
}
<h1>Hello World</h1>

这将从四个侧面设置四个相同类型的阴影。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android