热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS3小分队——text分身text-shadow

上一篇:《CSS3小分队——进击的border-radius》写在前面:上一篇把border-radius拉上台走了个秀,今天我们轮着角色接着走。台下一团shadow在蠕动,恩,今天上台的

上一篇:《CSS3小分队——进击的border-radius》

写在前面:

上一篇把border-radius拉上台走了个秀,今天我们轮着角色接着走。台下一团shadow在蠕动,恩,今天上台的是一个shadow属性。关于shadow的属性有两个:box-shadow和text-shadow,今天我们说的是text-shadow先。

一、shadow阴影的背后

text-shadow在CSS2中出现过,可是昙花一现,在CSS2.1中又被抛弃了,现在这团阴影又在CSS3中满血归来。

顾名思义,text-shadow是用来给文字添加阴影效果的。在网页上我们会看到各种各样绚丽的文字阴影效果,也许我们会问这些个效果是怎么做到的,用text-shadow设置的话应该怎么取值,为什么要这样取值而不是那样取值。

回答这些问题其实并不难,首先我们得先明白,text-shadow到底是个什么东西。

也许有小伙伴会说,text-shadow不就是text-shadow不就是文字阴影吗,这有什么可说的。这不能说不对,而我要说的并不是这个,我想让小伙伴明白的是:

text-shadow就是文字的一个副本。看下图:

 

白色文本为文本本体,红色文本为文本阴影,阴影就是本体的一个副本一个分身。

text-shadow是被修饰文字的一个副本,是被修饰文字的一个分身,俗话就是:如果不对阴影进行修饰的话,文字阴影就是文字一模一样的一个分身。记住了这句话,讲非常有助于我们理解不同的文字阴影效果应该怎么给text-shadow取值。

二、关于text-shadow属性的取值特点

首先有必要看一下text-shadow的语法:

text-shadow: h-shadow v-shadow blur color;

h-shadow是指水平阴影的位置,即水平偏置,允许负值。值为正时,阴影向右偏移,值为负时,阴影向左偏移;

v-shadow是指垂直阴影的位置,即垂直偏置,允许负值。值为正时,阴影向底部偏移,值为负时,阴影向顶部偏移;

blur是指模糊距离,即模糊的范围大小;

注:要充分理解blur的含义,请猛戳这里这里看第三节的第二个实现。

color阴影颜色。

其中,h-shadow和v-shadow是必选项,blur和color是可选项。

text-shadow可以为文字添加一个或多个阴影,添加多个阴影的时候阴影列表需要用逗号隔开。

在正式讲解text-shadow属性取值方法之前,先说几点我自己对text-shadow的理解:

1、blur值越大,阴影越模糊;再注:要充分理解blur的含义,请猛戳这里这里看第三节的第二个实现。

2、透明transparent也可以当成一种color;

3、文本副本的叠加能实现成排的效果;

4、多种颜色的叠加会造成特殊的视觉特效;

三、从原理出发理解阴影特效的实现

下面以实例来讲解如何从原理出发根据自己的想法来实现相应的效果。首先,先把一段文字demo贴上:

HTML Markup:

  <div class="text_demo">

    text demo

  div>

CSS Code:

.text_demo{

  background: #666666;

  width: 400px;

  height: 200px;

  font-size: 60px;

  line-height: 200px;

  text-align: center;

  font-weight: bold;

  text-transform: uppercase;

  color: #ffffff;

}

DEMO 效果:

 

注:以下实例都是在该实例上做了简单的修改。

1、辉光效果

辉光效果应该都见过,这是一个比较常见的效果。以防万一先把效果贴上:

 

辉光效果很简单,从效果图上可以看到,文字没有位置偏移,只是加上了一个模糊的副本而已,所以text-shadow实现很简单:

CSS Code:

text-shadow: 0 0 25px #ff0000;

2、模糊效果

先上效果图:

 

该效果和上面的辉光效果有一定的相似,所以有的小伙伴可能会有以下想法:不就是文字颜色和阴影颜色为同一种颜色就行嘛,所以该小伙伴的实现可能如下:

color: #ff2200;

text-shadow: 0 0 8px #ff2200;

那效果呢:

 

效果明显不一样,这其实是一个辉光效果。该小伙伴错误的原因是没有理解blur的概念。blur是模糊整个阴影,也就是模糊文本的整个那个副本,而不是仅仅给副本添加一个模糊的边缘。所以我们想要实现的效果是这样的:不要文本实体,只要一个模糊的文本副本。而该小伙伴错就错在了:他在这个模糊的文本副本上又叠加上了该文本实体,让本来模糊的部分又清晰出来了。所以正确的实现如下:

color: transparent;

text-shadow: 0 0 8px #ff2200;

将文本前景色设为透明,说白了就是不要文本实体,只要一个模糊的文本副本。

3、描边效果

描边效果可以先想象下效果,描边描边,自然是用线条把文本从边缘描一遍,所以实现方法也非常简单:给文本加上两个阴影,一个是在文本左上边缘加上阴影(即,把文本副本往左上移动1px),另一个是在文本右上边缘加上阴影(即,把文本副本往右上移动1px),因为仅仅是描上一条细细的边,所以自然用不上blur,实现及效果如下:

color: #ffffff;

 text-shadow: 1px 1px 0 #ff0000 , -1px -1px 0 #ff0000;

 

当然该描边效果也有缺陷,那就是并不是完全的描边,我们放大看一下:

 

放大后会看到斜对角处并没有描边有断点,原因也很简单,两个文本副本分别向左上和右下偏移,自然会在斜对角处分开。毕竟和专业的修图软件相比该效果也只能算是停留在实现的程度上。

4、3D文本效果

3D文本效果其实和描边效果实现思路有些相似,只是换成了单方向添加多个阴影,稍微想想就会明白,其实就是把多个文本副本依次小余量地往外叠加即可叠加的越多,3D出来的部分越多。

所以实现如下:

color: #ffffff;

text-shadow: 1px 1px #cccccc,2px 2px #cccccc,3px 3px #cccccc,4px 4px #cccccc,5px 5px #cccccc,6px 6px #cccccc;

 

当然也可以反向投影,实现如下:

color: #ffffff;
text-shadow: -1px -1px #cccccc,-2px -2px #cccccc,-3px -3px #cccccc,-4px -4px #cccccc,-5px -5px #cccccc,-6px -6px #cccccc;

 

5、里特罗复古风格

这是一个很有层次感和历史感的风格,先上效果图:

 

其实看完效果图,小伙伴们应该很快就会想到实现方法:两个阴影实现,一个阴影和背景色相同,一个阴影和文字前景色相同。Bingo,实现确实如此。

color: #ffffff;

text-shadow: 5px 5px 0 #666, 7px 7px 0 #eee;
四、小了个结

当然用text-shadow还能做出很多种文本特效,只要理解了四个参数的含义,并充分利用阴影的偏移、模糊范围和颜色的变换,就能做出很多很出色的特效。

如果还有很棒的shadow特效,欢迎分享~~~~

下一篇:《纯CSS打造银色MacBook Air(一)》

 


推荐阅读
  • 在DIV内垂直居中UL - Centering Vertically an UL inside a DIV
    iamtryingtomakeanavigationmenuinsidea200pxx200pxsquare,thisnavigationlist(UL)chang ... [详细]
  • 期末Web开发综合实践项目:运用前端技术打造趣味小游戏体验
    期末Web开发综合实践项目中,学生通过运用HTML、CSS和JavaScript等前端技术,设计并实现了一款趣味性十足的小游戏。该项目不仅检验了学生对前端基础知识的掌握情况,还提升了他们的实际操作能力和创意设计水平。视频链接展示了项目的最终成果,直观呈现了游戏的互动性和视觉效果。 ... [详细]
  • 每日前端实战:148# 视频教程展示纯 CSS 实现按钮两侧滑入装饰元素的悬停效果
    通过点击页面右侧的“预览”按钮,您可以直接在当前页面查看效果,或点击链接进入全屏预览模式。该视频教程展示了如何使用纯 CSS 实现按钮两侧滑入装饰元素的悬停效果。视频内容具有互动性,观众可以实时调整代码并观察变化。访问以下链接体验完整效果:https://codepen.io/comehope/pen/yRyOZr。 ... [详细]
  • 前端实用的CSS3技巧有哪些
    本文小编为大家详细介绍“前端实用的CSS3技巧有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“前端实用的CSS3技巧有哪些”文章能帮助大家 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 使用jqTransform插件美化表单
    jqTransform 是由 DFC Engineering 开发的一款 jQuery 插件,专用于美化表单元素,操作简便,能够美化包括输入框、单选按钮、多行文本域、下拉选择框和复选框在内的所有表单元素。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 1、给边框加上圆角及阴影,如下代码:<!DOCTYPEhtmlPUBLIC"-W3CDTDHTML4.01TransitionalEN"" ... [详细]
  • vue组件支持预处理语言的关键点:<stylerelstylesheetscss>.mint-swipe{hei ... [详细]
  • http:js.alixixi.coma2014021292298.shtmlhttp:w3cshare.comexample?pid134http:w3cshare.comc ... [详细]
  • 小编给大家分享一下CSS3如何实现loading预加载动画特效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章 ... [详细]
  • 这篇文章主要为大家展示了“html5+css3网站菜单的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习 ... [详细]
  • 很有意思的全景动画:(直接上代码)html部分:<div><div>css部分:.panorama{width:300px;hei ... [详细]
author-avatar
萱璇妍幽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有