Maison > interface Web > tutoriel CSS > Deux façons d'ajouter des effets de dégradé, de contour et d'ombre portée au texte (CSS et SVG)

Deux façons d'ajouter des effets de dégradé, de contour et d'ombre portée au texte (CSS et SVG)

青灯夜游
Libérer: 2021-10-12 11:25:14
avant
7047 Les gens l'ont consulté

Cet article vous expliquera comment utiliser CSS et SVG pour ajouter des effets de dégradé, de trait et d'ombre au texte. J'espère qu'il vous sera utile !

Deux façons d'ajouter des effets de dégradé, de contour et d'ombre portée au texte (CSS et SVG)

Vous pouvez souvent voir un texte de titre spécialement traité dans certaines pages d'activité Web, comme celle-ci

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

Ignorez les polices spéciales pour le moment que vous pouvez trouver grâce au style de calque du brouillon de conception. 3 effets de texte au total. , respectivement Gradient, Stroke, Projection

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

En tant que front-end ambitieux, bien sûr je n'utiliserai pas d'images directement~ Ici, nous utilisons CSS et SVG pour y parvenir. , jetons un coup d'œil à Bar

Rappel chaleureux : l'article contient beaucoup de détails. Si vous n'êtes pas intéressé, vous pouvez accéder directement au bas pour voir la démo en ligne

1. regardez l'implémentation en CSS.

Il n'y a pas d'attribut direct en CSS pour définir le dégradé du texte. Habituellement, le texte ne peut être qu'une couleur unie. Cependant, vous pouvez utiliser le découpage d'arrière-plan background-clip pour faire apparaître la couleur d'arrière-plan dans la zone de texte. On dirait que le texte a un dégradé

<p class="text">为你定制 发现精彩</p>
Copier après la connexion
.text{
  background-image: linear-gradient(#FFCF02, #FF7352);
  background-clip: text;
  -webkit-background-clip: text;
}
Copier après la connexion

Mais cela n'a aucun effet, le texte est toujours le même. couleur par défautbackground-clip让背景色在文本区域显示出来,看着就像是文字有了渐变

.text{
  background-image: linear-gradient(#FFCF02, #FF7352);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent; /*需要文字透明*/
}
Copier après la connexion
<svg>
  <text>为你定制 发现精彩</text>
</svg>
Copier après la connexion

但是这样没什么效果,文字仍然是默认颜色

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

原因其实很简单,由于是裁剪的背景,最后展示的其实是背景颜色,有颜色的文字覆盖在背景之上,所以这里需要将文字颜色设置为透明就行了,用 color-webkit-text-fill-color都可以实现。

<svg>
  <defs>
    <linearGradient id="gradient">
      <stop offset="0%"  stop-color="#FFCF02"/>
      <stop offset="100%"  stop-color="#FF7352"/>
    </linearGradient>
  </defs>
  <text class="text">为你定制 发现精彩</text>
</svg>
Copier après la connexion

这样就可以看到文字渐变效果了

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

二、SVG 文字渐变

再来看看 SVG 中的文字渐变。

SVG 中天然支持文字渐变,完全可以把文字当成普通的矢量路径,结构如下

.text{
  fill: url(#gradient);
}
Copier après la connexion

直接通过 fill填充就行了,不过需要注意的是这里填充稍微麻烦一点,渐变不能像 CSS 那样,必须使用专门的渐变标签 <linearGradient>,有兴趣的可以查看 linearGradient - SVG | MDN (mozilla.org),需定义在 <defs></defs>

.text{
  text-anchor: middle;
  dominant-baseline: middle;
  fill: url(#gradient);
}
Copier après la connexion

<linearGradient>中的 <stop> 标签用来定义渐变的颜色坡度,offsetstop-color分别定义渐变的节点和颜色,然后通过 fill属性填充渐变(指明 id )

<text class="text" x="50%" y="50%">为你定制 发现精彩</text>
Copier après la connexion

效果如下(并不是图片加载有问题哦)

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

这样下来有两个问题

  • 文本水平方向和垂直方向都不居中

  • 渐变方向是水平向右的

首先看第一个问题。SVG 中对文字的自适应处理还是非常弱的,比如 CSS 中常见的自动换行 SVG 中只能手动在指定位置换行。这里居中需要用到两个属性 text-anchordominant-baseline,分别标文本锚点对齐和文本基线对齐,简单来说就是水平和垂直方向的对齐方式

<svg>
  <defs>
    <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%"  stop-color="#FFCF02"/>
      <stop offset="100%"  stop-color="#FF7352"/>
    </linearGradient>
  </defs>
  <text class="text">为你定制 发现精彩</text>
</svg>
Copier après la connexion

同时 <text>还需要设置 xy位置,这里的百分比可以和 CSS 中的背景位置百分比做类比

.text{
  -webkit-text-stroke: 2px #333;
}
Copier après la connexion
Copier après la connexion

这样就居中显示了

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

关于渐变方向的问题,SVG 中是用x1y1x2y2两组坐标来确定的。给定一个矩形,左上角是 [0,0],右下角是 [1, 1],这样任意角度都可以表示出来了

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

比如现在需要垂直向下方向的,那么可以在<linearGradient>设置 x1="0" y1="0" x2="0" y2="1"

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

La raison est en fait très simple. Puisqu'il s'agit d'un arrière-plan recadré, l'affichage final est en fait la couleur d'arrière-plan et le texte coloré est recouvert sur l'arrière-plan, vous devez donc ici définir la couleur du texte sur transparent, utilisez . color et - webkit-text-fill-color peuvent être implémentés. 🎜
<p class="text" data-title="为你定制 发现精彩">为你定制 发现精彩</p>
Copier après la connexion
Copier après la connexion
🎜De cette façon, vous pouvez voir l'effet de dégradé du texte🎜🎜Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)🎜

2. Dégradé de texte SVG🎜🎜Jetons un coup d'œil au dégradé de texte en SVG. 🎜🎜SVG prend naturellement en charge les dégradés de texte. Vous pouvez traiter le texte comme un chemin vectoriel ordinaire. La structure est la suivante🎜
.text::before{
    content: attr(data-title);
    position: absolute;
    background-image: linear-gradient(#FFCF02, #FF7352);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    -webkit-text-stroke: 0;
}
.text{
    -webkit-text-stroke: 6px #333;
}
Copier après la connexion
Copier après la connexion
🎜Remplissez-le directement via fill. un peu plus gênant. Dégradé Contrairement à CSS, vous devez utiliser une balise de dégradé spéciale <linearGradient>. Si vous êtes intéressé, vous pouvez consulter linearGradient - SVG | MDN (mozilla.org), doit être défini dans < ;defs><stop> dans 🎜
.text{
  /*其他*/
  stroke-width: 4px;
  stroke: #333;
}
Copier après la connexion
Copier après la connexion
🎜<linearGradient> est utilisée pour définir la pente de couleur du dégradé, < code>offset et stop-color définissent respectivement les nœuds et les couleurs du dégradé, puis remplissent le dégradé avec l'attribut fill (précisez l'identifiant)🎜
.text{
  /*其他*/
  stroke-width: 4px;
  stroke: #333;
  paint-order: stroke; /*先描边*/
}
Copier après la connexion
Copier après la connexion
🎜 L'effet est le suivant (ce n'est pas un problème de chargement de l'image)🎜🎜< img src="https://img.php.cn/upload/image/953/670/567/1632712932318680.png" title="1632712932318680 .png" alt="Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)"/>🎜🎜Il y a deux façons de procéder. Un problème🎜
  • 🎜Le texte n'est pas centré horizontalement et verticalement🎜
  • 🎜La direction du dégradé est horizontale vers la droite🎜
🎜Regardons d'abord la première question. Le traitement adaptatif du texte en SVG est encore très faible. Par exemple, le retour à la ligne automatique, courant en CSS, ne peut être effectué manuellement qu'à une position spécifiée dans SVG. Deux attributs text-anchor et dominant-baseline sont nécessaires pour le centrage ici, qui marquent respectivement l'alignement de l'ancre du texte et l'alignement de la ligne de base du texte. En termes simples, ils sont horizontaux et verticaux. Alignement 🎜
.text{
  /*其他*/
  stroke-width: 4px;
  stroke: #333;
  paint-order: stroke; /*先描边*/
  stroke-linejoin: round; /*路径转角为圆角*/
}
Copier après la connexion
Copier après la connexion
🎜En même temps, <text> doit également définir les positions x et y. Le pourcentage ici peut être le. identique au pourcentage de position d'arrière-plan en CSS Faites une analogie🎜
.text{
    -webkit-text-stroke: 6px #333;
  	text-shadow: 0 4px 0 #333;
}
Copier après la connexion
Copier après la connexion
🎜De cette façon, il sera affiché au centre🎜🎜Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)🎜🎜 Concernant la direction du dégradé, SVG utilise x1, y1, x2, et y2 Déterminé par deux ensembles de coordonnées. Étant donné un rectangle, le coin supérieur gauche est [0, 0] et le coin inférieur droit est [1, 1], de sorte que n'importe quel angle puisse être exprimé🎜🎜< img src ="https://img.php.cn/upload/image/646/846/371/163271294789478Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)" title="163271294789478Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)" alt="Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)"/>🎜🎜Par exemple, maintenant vous devez aller verticalement vers le bas, vous pouvez alors définir x1="0" y1="0" x2="0" y2="1" dans <linearGradient>, comme suit 🎜
.text{
  -webkit-text-stroke: 6px #333;
  filter: drop-shadow(0 4px 0 #333);
}
Copier après la connexion
Copier après la connexion
🎜 L'effet est le suivant 🎜

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

三、CSS 文字描边

CSS 中有个专门用于文字描边的属性 -webkit-text-stroke,可以控制描边的宽度和颜色,比如

.text{
  -webkit-text-stroke: 2px #333;
}
Copier après la connexion
Copier après la connexion

效果如下

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

确实有描边了,但是文字好像瘦了一圈,如果觉得不太明显,可以再设置大一点

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

从这里可以看出,-webkit-text-stroke其实是 居中描边,并且是覆盖在文本上的,也无法更改描边方式。而事实上,很多设计工具都是可以选择描边方式的,比如 figma

1Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

那么,如何实现外描边效果呢?

也是可以的!用两层文本,一层文本描边,一层文本渐变就可以了,为了节省标签,可以用伪元素来生成

<p class="text" data-title="为你定制 发现精彩">为你定制 发现精彩</p>
Copier après la connexion
Copier après la connexion

::before设置渐变,位于上方,原文本设置描边,位于下方,注意把 ::before-webkit-text-stroke去除

.text::before{
    content: attr(data-title);
    position: absolute;
    background-image: linear-gradient(#FFCF02, #FF7352);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    -webkit-text-stroke: 0;
}
.text{
    -webkit-text-stroke: 6px #333;
}
Copier après la connexion
Copier après la connexion

叠加示意如下

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

改变不同的描边也不会出现文字“变瘦”的情况

1Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

四、SVG 文字描边

SVG 也可以实现描边效果,和 CSS 比较类似,应该说 CSS 是借鉴 SVG 的,通过 strokestroke-width来控制描边颜色和大小,比如

.text{
  /*其他*/
  stroke-width: 4px;
  stroke: #333;
}
Copier après la connexion
Copier après la connexion

可以得到这样的效果

1Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

和 CSS 表现一样,都是居中描边,也无法改变。

不一样的是,SVG 控制更为灵活,默认是先填充、然后再描边,所以看着是描边在填充之上,但是,我们可以改变这种规则,设置先描边,再填充,那么填充的颜色就会覆盖在描边之上了。SVG 中改变这种规则的可以通过 paint-order 来设置,关于这个属性,有兴趣的可以访问张鑫旭老师的这篇文章:CSS paint-order祝大家元旦快乐

.text{
  /*其他*/
  stroke-width: 4px;
  stroke: #333;
  paint-order: stroke; /*先描边*/
}
Copier après la connexion
Copier après la connexion

这样就实现了外描边效果,是不是比 CSS 方便许多?

1Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

除此之外,SVG 还可以设置描边路径的转角处的形状,比如 figma 中关于转角的设置如下

1Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

SVG 中与之相对应的属性叫做 stroke-linejoin,这里是圆角,可以做如下设置

.text{
  /*其他*/
  stroke-width: 4px;
  stroke: #333;
  paint-order: stroke; /*先描边*/
  stroke-linejoin: round; /*路径转角为圆角*/
}
Copier après la connexion
Copier après la connexion

各种属性效果如下

1Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

五、CSS 文字投影

继续添加效果。CSS 可以通过 text-shadow来添加文本投影

.text{
    -webkit-text-stroke: 6px #333;
  	text-shadow: 0 4px 0 #333;
}
Copier après la connexion
Copier après la connexion

结果变成了这样

1Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

原因其实还和文本渐变有关,渐变其实是背景色,文字是透明的,所以给文字添加阴影,结果阴影就覆盖在了背景之上。除了使用text-shadow,还可以通过 drop-shadow滤镜实现

.text{
  -webkit-text-stroke: 6px #333;
  filter: drop-shadow(0 4px 0 #333);
}
Copier après la connexion
Copier après la connexion

这样就完美实现了

1Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

六、SVG 文字投影

SVG 就比较灵活了,比如上面使用的 drop-shadow滤镜,其实就是借鉴了 SVG 中的 滤镜,所以 SVG 也可以这样实现

<svg>
    <defs>
        <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%"  stop-color="#FFCF02"/>
          <stop offset="100%"  stop-color="#FF7352"/>
        </linearGradient>
      	<filter id="shadow">
            <feDropShadow dx="0" dy="4" stdDeviation="0" flood-color="#333"/>
        </filter>
    </defs>
    <text x="50%" y="50%" class="text">为你定制 发现精彩</text>
</svg>
Copier après la connexion

这里dxdystdDeviationflood-colordrop-shadow(dx,dy,stdDeviation,flood-color)中的参数是一一对应的,就不多说明了,然后在文字中应用滤镜

.text{
  /*其他*/
  filter:url(#shadow);
}
Copier après la connexion

这样也能实现文字投影

Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

其实 SVG 中大可不必这么麻烦,刚才上面 text-shadow之所以不能使用,就是因为 CSS 实现的文字渐变是背景,是假的文字渐变,但是 SVG 中是真真正正的渐变填充,所以没错,这里可以直接用 CSS 中的 text-shadow 来实现,SVG 和 CSS 现在很多属性和样式都互通了,如下

.text{
  /*其他*/
  fill: url(#gradient);
  text-shadow: 0 4px 0 #333;
}
Copier après la connexion

实现更加简洁

2Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

七、特殊字体处理

通常活动标题会采用一些特殊的字体,英文字体还好,整个引入都可以,但是中文就不行了,大多数中文字体都非常大,可能达到几十MB或者几百MB。其实我们只需要用到出现的字体,如果把出现的文字这一部分的特殊字体单独提取出来,那么整个字体文件将大大减小,这个过程就叫做字体子集化。

那么该如何处理呢?

这里推荐一个工具 Fontmin - 字体子集化方案,关于字体子集化的原理,可以参考这篇文章:性能优化魔法师:中文字体实践篇 - 掘金

2Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

下载客户端后,导入字体文件.ttf,然后输入需要用到的文字,如下

2Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

点击生成,可以得到如下文件

2Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

其中第一个以-embed为后缀的 CSS,里面是转换 base64 后的文件,可以直接引入

@font-face {
    font-family: "HYLiLiangHeiJ Regular";
    src: url("HYLiLiangHeiJ Regular.eot"); /* IE9 */
    src: url("HYLiLiangHeiJ Regular.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
    url(data:application/x-font-ttf;charset=utf-8;base64,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) format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+ */
    url("HYLiLiangHeiJ Regular.svg#HYLiLiangHeiJ Regular") format("svg"); /* iOS 4.1- */
    font-style: normal;
    font-weight: normal;
}
.text{
  /*其他样式*/
  font-family: "HYLiLiangHeiJ Regular";
}
Copier après la connexion

这样几乎实现了和设计稿完全一致的效果

2Deux façons dajouter des effets de dégradé, de contour et dombre portée au texte (CSS et SVG)

其实如果从头看下来,应该也能自己实现一个,既能掌握原理,也能加深印象,完全变成自己的了。不过可能不是每个同学都有时间,或者能够静下心来研究每一个案例,所以这里还是整理了一下在线 demo,想要快速看结果的直接访问就行了,如下

CSS 实现可以访问 text-css (codepen.io)

SVG 实现可以访问 text-svg (codepen.io)

八、总结和说明

以上介绍了 CSS 和 SVG 两种不同的方式来实现文本的特殊效果,从效果来看,显然 SVG 要更胜一筹,比如描边更加平滑、也无需多层嵌套,但 CSS 也有优势,比如渐变色和投影更加简单,总结一下

  • CSS 文字渐变本质是背景裁剪,需要将文字颜色设为透明

  • SVG 文字天然支持渐变填充,需要借助 linearGradient 标签

  • SVG 文本居中稍微麻烦点,需要借助 text-anchor 和 dominant-baseline

  • Les traits CSS et SVG sont tous deux centrés et ne peuvent pas être modifiés

  • Les traits extérieurs CSS peuvent être obtenus grâce à une superposition de structure multicouche

  • SVG peut être rempli au-dessus des traits via l'ordre de peinture

  • L'ombre du texte CSS pénétrera lorsque le texte est transparent, vous pouvez utiliser l'ombre portée pour simuler l'ombre

  • feDropShadow en SVG est similaire à l'ombre portée en CSS

  • SVG peut être directement utilisé dans le texte CSS -shadow implémente la projection de texte

  • font subset fontmin

CSS et SVG ont leurs propres avantages et s'influencent mutuellement. De nombreux styles CSS peuvent également être utilisés en SVG, et de nombreux attributs SVG ont également commencé à être introduits en CSS. En temps normal, dans le développement, les avantages des deux peuvent être pleinement combinés.

Pour plus de connaissances sur la programmation, veuillez visiter : Vidéos de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal