一、W3C坐标系
在介绍text-shadow之前,我们先来学习一下CSS3使用的坐标系是怎样的。了解CSS3使用的坐标系,这也是学习CSS3的最基本的前提。
我们经常见到的坐标系是数学坐标系,不过CSS3使用的坐标系是W3C坐标系,这两种坐标系唯一的区别在于Y轴正方向的不同。
- (1)数学坐标系:y轴正方向向上。
- (2)W3C坐标系:y轴正方向向下。
小伙伴们一定要记住:W3C坐标系的y轴正方向是向下的。小伙伴们对很多CSS3属性的取值感到很疑惑,那是因为他们没有清楚地意识到这一点。
数学坐标系一般用于数学形式上的应用,而在前端开发中几乎所有涉及坐标系的技术使用的都是W3C坐标系,这些技术包括CSS3、Canvas和SVG等。了解这一点,以后在学习Canvas或者SVG的时候,很多知识就可以一下子串起来了。
二、text-shadow属性简介
在CSS2.1中,如果想要实现文本的阴影效果,大多数情况下都是使用Photoshop制作一张图片来实现。在CSS3中,我们可以使用text-shadow属性为文本添加阴影效果,几行代码就可以轻松搞定,非常简单。
语法:
text-shadow:x-offset y-offset blur color;
说明:
x-offset是“水平阴影”,表示阴影的水平偏移距离,单位可以是px、em和百分比等。由于CSS3采用的是W3C坐标系,因此如果值为正,则阴影向右偏移;如果值为负,则阴影向左偏移。
y-offset是“垂直阴影”,表示阴影的垂直偏移距离,单位可以是px、em和百分比等。由于CSS3采用的是W3C坐标系,因此如果值为正,则阴影向下偏移;如果值为负,则阴影向上偏移。
blur是“模糊距离”,表示阴影的模糊程度,单位可以是px、em、百分比等。blur值越大,则阴影越模糊;blur值越小,则阴影越清晰。此外,blur不能为负值。如果不需要阴影模糊效果,可以把blur值设置为0。
color是“阴影颜色”,表示阴影的颜色。
举例:一般文本阴影效果
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
div
{
font-size:40px;
text-shadow:4px 4px 2px gray;
}
</style>
</head>
<body>
<div>绿叶学习网</div>
</body>
</html>
浏览器预览效果如下图所示。
举例:凹凸效果
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
div
{
display: inline-block;
padding: 16px;
font-size: 32px;
font-weight: bold;
background-color: #CCC;
color: #ddd;
text-shadow: -1px 0 0 #333, /*向左阴影*/
0 -1px 0 #333, /*向上阴影*/
1px 0 0 #333, /*向右阴影*/
0 1px 0 #333; /*向下阴影*/
}
</style>
</head>
<body>
<div>绿叶学习网</div>
</body>
</html>
浏览器预览效果如下图所示。
分析:
为了表现更加丰富,每个方向上的阴影颜色可以是不同的设置。如果将向左和向上的阴影颜色设置为白色,文本就会出现“凸起效果”,text-shadow属性修改如下:
text-shadow:-1px 0 0 white, /*向左阴影*/
0 -1px 0 white, /*向上阴影*/
1px 0 0 #333, /*向右阴影*/
0 1px 0 #333; /*向下阴影*/
此时浏览器预览效果如下图所示:
如果将向右和向下的阴影颜色设置为白色,文本就会出现“凹陷效果”,text-shadow属性修改如下:
text-shadow:-1px 0 0 #333, /*向左阴影*/
0 -1px 0 #333, /*向上阴影*/
1px 0 0 white, /*向右阴影*/
0 1px 0 white; /*向下阴影*/
此时浏览器预览效果如下图所示:
是不是觉得很神奇呢?其实对于text-shadow属性来说,颜色的取值以及阴影的方向是很有技巧的,大家好好琢磨一下上面效果是怎么实现的。
三、定义多个阴影
在CSS3中,我们可以使用text-shadow属性为文本定义多个阴影,并且针对每个阴影使用不同的颜色。当定义多个阴影时,text-shadow属性是一个以英文逗号隔开的值列表,例如:
text-shadow:0 0 4px red, 0 -5px 4px green, 2px -10px 6px blue;
当text-shadow属性是一个值列表时,阴影效果会按从左到右的顺序应用到文本上,因此可能会出现相互覆盖的效果。但是text-shadow属性永远不会覆盖文本本身,阴影效果也不会改变文本的大小。
举例:多个阴影
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
div
{
font-size:40px;
text-shadow:4px 4px 2px gray, 6px 6px 2px gray, 8px 8px 8px gray;
}
</style>
</head>
<body>
<div>绿叶学习网</div>
</body>
</html>
浏览器预览效果如下图所示。