谁说不能用代码实现酷炫的文字特效?

HTML5学堂:文本阴影是一个很神奇的属性,在它还没有出现之前,网页中对于阴影的制作一般都是采用Photoshop做成图片来实现的。而在CSS3流行的当下,我们可以直接使用CSS3的text-shadow属性来制作阴影,以达到不使用图片也能给文字增加质感的效果,而这个属性主要有两个作用,产生阴影和模糊主体。

初识text-shadow

text-shadow曾经在CSS2中就有出现过,只是后来被抛弃了,直到现在的CSS3中又把它重新捡了回来。这说明text-shadow这个属性对于我们前端来说还是比较重要的。现在的很多项目中,CSS3的很多属性都在被前端工程师使用,如下图的这些效果就是通过text-shadow而得到的效果。

语法介绍

制作上述的图例,我们第一个需要掌握的就是text-shadow的语法,具体的属性书写如下:

text-shadow: [x轴(X Offset) y轴(Y Offset) 模糊半径(Blur) 颜色(Color)], [x轴(X Offset) y轴(Y Offset) 模糊半径(Blur) 颜色(Color)]...;

实际书写如图所示:

text-shadow: X-Offset Y-Offset Blur Color;各属性值的含义如下:

1、X-Offset表示阴影的水平偏移距离,其值为正值时,阴影向右偏移,如果其值为负值时,阴影向左偏移;

2、Y-Offset是指阴影的垂直偏移距离,其值为正值时,阴影向下偏移,如果其值是负值时,阴影向上偏移;

3、Blur是指阴影的模糊程度,其值不能是负值。如果值越大,阴影越模糊,反之阴影越清晰。如果不需要阴影模糊可以将Blur值设置为0;

4、Color是指阴影的颜色,可以使用rgba、颜色单词等方式来书写。

提示:可以给一个对象应用一组或多组阴影效果,方式如前面的语法显示一样,用逗号隔开。

详细案例分析

把text-shadow运用好,也可以像Photoshop一样制作出非常好的效果,下面就带大家制作一些比较好看的实例以助于实际的开发使用。在制作之前大家先把下面的这段公共代码书写下来。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>CSS3文本阴影</title>
    <link rel="stylesheet" type="text/css" href="css/reset.css" />
    <style type="text/css">
        .wrap {
            width: 1000px;
            margin: 0 auto;
        }
        .wrap div {
            float: left;
            width: 400px;
            margin: 20px 20px 0 0;
            padding: 30px;
            color: #fff;
            background: #666666;
            font: bold 55px "微软雅黑";
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="wrap clearfix">
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
        <div>HTML5学堂</div>
    </div>
</body>
</html>

1)文字发光

顾名思义,就是让文字的四周出现一个光晕的效果。这个效果只需要改变不同的模糊值即可制作。如下:

.wrap div:nth-child(1) {
    text-shadow: 0 0 20px red;
}

效果如下:

发光效果,是通过设置比较大的模糊半径来增加发光的,可以改变不同的模糊半径值来达到不同的效果,当然你也可以同时增加几个不同的半径值,创造出多种不同的的阴影效果。类似如下写法:

.wrap div:nth-child(2) {
    text-shadow: 0 0 5px #fff,
                 0 0 10px #fff,
                 0 0 15px #fff, 
                 0 0 40px #ff00de, 
                 0 0 70px #ff00de;
}

效果如下:

2)Photoshop风格

这个风格的文本就是类似于投影与浮雕的效果,即通过更改X方向与Y方向的偏移值来实现。投影与浮雕的制作如下:

.wrap div:nth-child(3) {
    color: #000;
    text-shadow: 15px 15px 0 #999; 
}
.wrap div:nth-child(4) {
    color: #ccc;
    text-shadow: -1px -1px 0 #fff,
                 1px 1px 0 #333,
                 1px 1px 0 #444;
}

效果如下:

上图中左侧是投影效果,右侧是浮雕效果,我想经常使用photoshop的人一定会比较熟悉。应用这两个效果大家一定要注意,其模糊值一定要设置为0,使文本不具有任何模糊效果,主要是为了增加其质感。大家也可以像photoshop中制作一样,改变不同的投光角度,从而制作出不同的效果,这里就不在举例子了,感兴趣的人可以自己尝试一下。

3)模糊文本

制作文本的朦胧效果主要就是借助模糊值来实现的,如下:

.wrap div:nth-child(5) {
    color: transparent;
    text-shadow: 0 0 5px #f96;
}

效果如下:

用text-shadow制作模糊的效果有两个注意点,其一,使用transparent把文本的颜色设置为透明,如果模糊值越大,其效果越模糊。其二,不设置任何方向的偏移值,如上述的代码案例。

如果结合之前Photoshop风格中的浮雕效果,可以得到又一个不同的效果——带有模糊的浮雕,如下:

.wrap div:nth-child(6) {
    color: transparent;
    text-shadow: 0 0 6px #f96, 
                 -1px -1px #fff, 
                 1px -1px #444;
}

效果如下:

4)内陷文本

制作内陷文本需要考虑颜色搭配,这点十分重要,如果阴影色太亮看起来会很奇怪,如果太暗又没有效果显示,所以一个良好的配色是这个效果实现的关键,如下案例:

.wrap div:nth-child(7) {
    color: #566F89;
    background: #C5DFF8;
    text-shadow: 1px 1px 0 #e4f1ff;
}

效果如下:

通过上述实例,制作内陷文本只需要把文字的颜色设置得比背景色暗,阴影颜色给的比背景稍微亮一点点即可。这个内陷文本可以说是文本的影子,只需要设置一点点的偏移量就能给人一种微妙的突出效果,其具体的设置以及配色,大家可以自己去尝试一下。

5)描边效果

描边效果就好比把一个硬币放在白纸上,然后用笔去沿着硬币边缘画出来的那个圈,把这个效果作用到文本中,如下:

.wrap div:nth-child(8) {
    color: #fff;
    text-shadow: 1px 1px 0 #f96,
                 -1px -1px 0 #f96;
}

效果如下:

使用text-shadow制作描边效果跟直接使用Photoshop相比,效果上会有点差别,因为代码实现的描边主要运用的是两个阴影,第一组值向左上投影,第二组值向右下投影,这时候在某些文字上可能会出现断点。当然在使用上,还是可以使用这种写法来达到所需要的特殊描边效果的。但是有个注意点,制作描边的阴影效果不设置模糊值。

6)3D文字

3D效果是可视化程度最好的,能够给人一个空间感。使用代码把文字也做出3D的效果,这就有点费劲了,一起看看吧~

.wrap div:nth-child(9) {
  color: #fff;
  text-shadow: 1px 1px rgba(197, 223, 248,0.8),
               2px 2px rgba(197, 223, 248,0.8),
               3px 3px rgba(197, 223, 248,0.8),
               4px 4px rgba(197, 223, 248,0.8),
               5px 5px rgba(197, 223, 248,0.8),
               6px 6px rgba(197, 223, 248,0.8);
}

效果如下:

上例是通过设置多组正向投影值,从而实现视觉上的3D效果。如果把投影的方向换一下,就又可以得到另外一种3D效果,如下:

.wrap div:nth-child(10) {
  color: #fff;
  text-shadow: -1px -1px rgba(197,223,248,0.8),
               -2px -2px rgba(197,223,248,0.8),
               -3px -3px rgba(197,223,248,0.8),
               -4px -4px rgba(197,223,248,0.8),
               -5px -5px rgba(197,223,248,0.8),
               -6px -6px rgba(197,223,248,0.8);
}

效果如下:

3D文字效果运用原理就是像Photoshop一样,我们在文字的下方或上方复制了多个图层,并把每一个层向左上或右下方向移动一个1px距离,从而制作出3D效果。同时我们层数越多,其越厚重。换成用text-shadow制作就是使用多个阴影,并把阴影色设置相同,给其使用rgba颜色效果较佳,如上面的实例。

7)复古风格

复古风格的文字也是需要考虑颜色搭配的一种制作方式,主要是为了阴影与背景的一个展示,如下:

.wrap div:nth-child(11) {
    color: #eee;
    text-shadow: 5px 5px 0 #666, 
                 7px 7px 0 #eee;
}

效果如下:

复古风格的文字效果是由两个文本阴影合成的,这里需要注意的是:第一个阴影色和背景色相同;文本颜色和第二个阴影色相同。

8)补色效果

所谓的补色效果,就是使用rgba来设置文本颜色和阴影,使得展示的文字看上去像一个影子。如下:

.wrap div:nth-child(12) {
    color: rgba(255, 179, 140,0.5);
    text-shadow: 3px 3px 0 rgba(180,255,0,0.5);
}

效果如下:

这个文字效果是一种补色的效果,从而制作出一种三维效果图。其效果是让文字阴影和文本颜色都是使用不同的rgba色组合而成的,使底层的文字是通过影子可见的。

总结

8个文本阴影实例,只是特效文字的冰山一角。只有你想不到的,没有你做不到的。CSS3的强大功能,让样式的地位今非昔比,它的出现,将网站中很多细节的实现变得更加方便快捷,可谓网站开发中“里程碑”式的飞跃。

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2016-11-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏九彩拼盘的叨叨叨

图片不变形,宽高不超出父元素的情况下旋转图片

如题,具体的效果见这里 。做这样的效果的难点在于,计算没旋转前图片的宽,高和旋转后的宽高。

653
来自专栏编程

【CSS】格仔背景

CSS代码 * { margin: 0; padding: 0; } html, body { width: 100%; height: 100%; } bod...

20810
来自专栏偏前端工程师的驿站

CSS魔法堂:重拾Border之——不仅仅是圆角

前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半...

1965
来自专栏Golang语言社区

Three.js入门

Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精采的演示。Th...

3309
来自专栏拂晓风起

Flash Actionscript AS3 渐变透明 mask遮罩

974
来自专栏HTML5学堂

“鼠标移入显示悬浮框”特效,也可以“高大上”

HTML5学堂(码匠):网站中最为常见的一种特效——鼠标移入元素,出现介绍信息的悬浮框,要么是淡入,要么是单方向的滑入,总觉得太单一了有木有?其实,稍微调整一下...

3539
来自专栏葬爱家族

H5和微信小游戏 Canvas API 整理前言

这段时间闲下来,系统学习了微信小程序和微信小游戏,发现还是挺有意思的。现在微信小游戏的开发都离不开游戏引擎,用原生小游戏开发工具开发的很少很少。但是毕竟我不是专...

1343
来自专栏HTML5学堂

一步步实现静态页面布局

本文内容概要: 1 CSS选择器 2 盒模型 3 浮动 4 页面布局案例 5 课后习题 上周我们详解的讲解了一个网站的开发流程以及如何使用标签来进行一个网页的布...

51210
来自专栏Android点滴积累

Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 c...

2597
来自专栏Coco的专栏

奇妙的 CSS shapes(CSS图形)

1705

扫码关注云+社区