CSS技巧:妙用drop-shadow实现线条光影效果

网上科普有关“CSS技巧:妙用drop-shadow实现线条光影效果”话题很是火热,小编也是针对CSS技巧:妙用drop-shadow实现线条光影效果寻找了一些与之相关的一些信...

网上科普有关“CSS技巧:妙用drop-shadow实现线条光影效果”话题很是火热,小编也是针对CSS技巧:妙用drop-shadow实现线条光影效果寻找了一些与之相关的一些信息进行分析 ,如果能碰巧解决你现在面临的问题 ,希望能够帮助到您 。

本文将介绍一种利用CSS滤镜filter的drop-shadow(),实现对HTML元素及SVG元素的部分添加阴影效果,以实现一种酷炫的光影效果 ,用于各种不同的场景之中 。通过本文,你可以学到:

如何利用filter:drop-shadow()对元素的部分内容添加单重及多重阴影,以及利用多重阴影实现Neon效果。

HTML元素配合filter:drop-shadow()以及SVG元素配合filter:drop-shadow()生成的光影效果。

使用WebGL实现的线条光影Neon动画

某天在逛CodePen的时候 ,发现了一个非常有意思的,使用WebGL实现的线条光影效果--NEONLOVE,非常的有意思:

但是由于源代码是使用WebGL完成 ,绘制如此简单的一个效果,通过GLSL着色器等代码,接近了300行 。

那么 ,我们能否使用HTML(SVG)+CSS实现它呢?

利用drop-shadow对元素的部分内容添加单重及多重阴影

首先,要实现上述效果,很重要的一步是给元素的部分内容添加上阴影。

假设我们有这样一个图形:

<div></div>

我们给这个div图形设置border-radius:50% ,并且添加一个border-top:

div{width:200px;height:200px;border-top:5pxsolid#000;border-radius:50%;}

结果如下:

如果我希望 ,仅仅只给这个圆弧添加阴影,尝试使用box-shadow:

div{width:200px;height:200px;border-top:5pxsolid#000;border-radius:50%;+box-shadow:005px#000;}

emm,明显是不行的 ,阴影会加给整个div:

为了解决这种情况,聪明的同学会立马想到filter:drop-shadow(),它就是为了解决这个问题而诞生的 ,box-shadow属性在元素的整个框后面创建一个矩形阴影,而drop-shadow()过滤器则是创建一个符合图像本身形状(alpha通道)的阴影。

好,我们使用drop-shadow()替换box-shadow:

div{width:200px;height:200px;border-top:5pxsolid#000;border-radius:50%;-box-shadow:005px#000;+filter:drop-shadow(005px#000);}

这样,我们就能得到符合图像本身形状(alpha通道)的阴影:

并且 ,drop-shadow()也可以对一个图像作用多次,实现类似阴影的多重阴影效果:

div{...filter:drop-shadow(002px#000)drop-shadow(005px#000)drop-shadow(0010px#000)drop-shadow(0020px#000);}

我们将得到可见部分图案的多重阴影叠加效果:

我们将上述例子的黑白颜色对换一下,就能得到一副很有意境的图案 ,像是在深邃的太空中看某个透光的星球般:

CodePenDemo--multidrop-shadowNeon

实现心形线条动画

接下来,就是实现心形线条动画了,这点利用SVG还是比较简单的 。关于SVG线条动画 ,之前也有多次提及 ,感兴趣的同学也可以看看这两篇文字:

Web动画SVG线条动画入门

Web动画SVG实现复杂线条动画

我们首先需要得到一个利用SVG<Path>实现的心形形状,可以选择自己绘制SVG路径,也可以借助一些工具完成。

这里我借助了这个工具得到一个心形的Path路径:SVGPathEditor

通过工具 ,快速绘制想要的形状,拿到对应的Path:

核心就是拿到这一段SVGPath路径:

M400160A229000260160A229000120160C120230260270260350C260270400230400160

有了它,利用SVG的stroke-dasharray和stroke-offset ,我们可以轻松的得到一个心形追逐动画:

<div><svg><pathd="M400160A229000260160A229000120160C120230260270260350C260270400230400160"/></svg><svg><pathd="M400160A229000260160A229000120160C120230260270260350C260270400230400160"/></svg></div>body{background:#000;}svg{position:absolute;}.container{position:relative;}.line{fill:none;stroke-width:10;stroke-linejoin:round;stroke-linecap:round;stroke:#fff;stroke-dasharray:328600;animation:rotate2sinfinitelinear;}.line2{animation:rotate2sinfinite-1slinear;}@keyframesrotate{0%{stroke-dashoffset:0;}100%{stroke-dashoffset:928;}}

简单解释上上述代码:

两个相同的SVG图形,通过stroke-dashoffset将完整的线条图形截成部分

通过stroke-dashoffset的从0到928的变化,实现一次完整的线条动画循环(这里的928是完整的path的长度 ,可以通过JavaScript脚本求出)

整个动画过程2s,设置其中一个的animation-delay:-1s,也就是提前1s触发动画 ,这样就实现了两个心形线条的追逐动画

效果如下:

给线条添加光影

有了上述两步的铺垫,这一步就非常好理解了。

最后,我们只需要给两段SVG线条 ,利用drop-shadow()添加不同颜色的多重阴影即可:

.line{...--colorA:#f24983;filter:drop-shadow(002pxvar(--colorA))drop-shadow(005pxvar(--colorA))drop-shadow(0010pxvar(--colorA))drop-shadow(0015pxvar(--colorA))drop-shadow(0025pxvar(--colorA));}.line2{--colorA:#37c1ff;}

最终 ,我们就利用SVG+CSS近乎完美的复刻了文章开头使用WebGL实现的效果:

完整的代码,你可以猛击--CSS灵感-SVG配合drop-shadow实现线条光影效果

扩展延伸

当然,掌握了上述的技巧后 ,还有非常多有意思的效果我们可以去探索实现的,这里我简单的抛砖引玉 。罗列两个我自己尝试的效果。

其中一大类是运用于按钮之上,可以实现按钮带光影的按钮效果 ,下图是其中一个的示意,巧妙运用stroke-dashoffset,它可以有非常多的变形:

完整源代码可以猛击CodePen--NeonLineButton

当然 ,我们也不是一定要借助SVG,仅仅是HTML+CSS也是可以运用这个效果,利用它实现一个简单的Loading效果:

完整源代码可以猛击CodePen--NeonLoading

最后

好了 ,本文到此结束,希望对你有帮助:)

如果还有什么疑问或者建议,可以多多交流 ,原创文章 ,文笔有限,才疏学浅,文中若有不正之处 ,万望告知。

关于“CSS技巧:妙用drop-shadow实现线条光影效果 ”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[晓绿]投稿,不代表哔哔号立场,如若转载,请注明出处:https://www.ibb4.com/cshi/202512-1302.html

(166)

文章推荐

  • 植物生长的必要条件是什么?

    网上科普有关“植物生长的必要条件是什么?”话题很是火热,小编也是针对植物生长的必要条件是什么?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。一:光照。万物生长靠太阳,所以说光的强弱对植物的生长有极大的影响,有些植物喜阳性,有些植喜阴性。二:水分。世间有生命的

    2024年12月15日
    18
  • 3、“宫保鸡丁”中的“宫保”是什么来历?

    网上科普有关“3、“宫保鸡丁”中的“宫保”是什么来历?”话题很是火热,小编也是针对3、“宫保鸡丁”中的“宫保”是什么来历?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。宫保是明、清各级官员的虚衔。宫保最高级荣誉官衔为太师、少师,太傅、少傅,太保、少保、太子太

    2025年12月11日
    194
  • 09年6月份买什么股票赚钱?

    网上科普有关“09年6月份买什么股票赚钱?”话题很是火热,小编也是针对09年6月份买什么股票赚钱?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。代码名称SZ000004*ST国农SZ000005世纪星源SZ000032深桑达AS

    2025年12月11日
    183
  • 8月4日北京疫情最新消息_1

    网上科普有关“8月4日北京疫情最新消息”话题很是火热,小编也是针对8月4日北京疫情最新消息寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。8月4日0时至24时,新增3例京外关联本地新冠肺炎确诊病例(昨日已通报),无新增疑似病例和无症状感染者;无新增境外输入确诊

    2025年12月12日
    165
  • 8万就能入手的精品小型SUV 你更看好哪款?

    网上科普有关“8万就能入手的精品小型SUV你更看好哪款?”话题很是火热,小编也是针对8万就能入手的精品小型SUV你更看好哪款?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。之前给朋友们介绍过5万的SUV,奇瑞瑞虎3X和吉利远景X3都是超值的两款精品小型S

    2025年12月14日
    127
  • [洛阳钼业团体]比亚迪电池股票代码

    网上科普有关“[洛阳钼业团体]比亚迪电池股票代码”话题很是火热,小编也是针对[洛阳钼业团体]比亚迪电池股票代码寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。周五收盘,国常会通过了《新能源汽车产业发展规划》,强调加强充换电及加氢等基础设施简述,利好新能源

    2025年12月14日
    204
  • 《误杀》原版《误杀瞒天记》开启预售

    网上科普有关“《误杀》原版《误杀瞒天记》开启预售”话题很是火热,小编也是针对《误杀》原版《误杀瞒天记》开启预售寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。《误杀》原版《误杀瞒天记》开启预售 《误杀》原版《误杀瞒天记》

    2025年12月14日
    197
  • 科普小知识配图怎么画(科普知识的图画)

    认识方向的手抄报怎么写?1、早晨,太阳升起的方向是东方。面对太阳升起的地方,就是面向东方。前面是东,背对的方向就是西;伸开双臂,左手指的方向是北,右手指的方向是南。早晨起来,面向太阳,前面是东,后面是西,左面是北,右面是南。在生活中,我们可以用多种方法辨认方向。白天,可以利用太阳辨认方向。2、分区

    2025年12月06日
    14
  • 《昆虫记》的主要内容?

    网上科普有关“《昆虫记》的主要内容?”话题很是火热,小编也是针对《昆虫记》的主要内容?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。181位粉丝主要内容如下:1、黑腹狼蛛:黑腹狼蛛腹部长着黑色的绒毛,这些绒毛里还有黑色条纹。一圈圈黑白相间的条纹长在它们腿上。

    2025年12月07日
    192
  • 《十万个为什么》这本书的作者是谁?_1

    网上科普有关“《十万个为什么》这本书的作者是谁?”话题很是火热,小编也是针对《十万个为什么》这本书的作者是谁?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。作者为伊利亚·雅科甫列维奇·马尔夏克。前苏联科普作家、工程师、儿童文学作家。生于乌克兰。她一生写下了许

    2024年12月15日
    21

发表回复

本站作者后才能评论

评论列表(4条)

  • 晓绿
    晓绿 2025年12月19日

    我是哔哔号的签约作者“晓绿”!

  • 晓绿
    晓绿 2025年12月19日

    希望本篇文章《CSS技巧:妙用drop-shadow实现线条光影效果》能对你有所帮助!

  • 晓绿
    晓绿 2025年12月19日

    本站[哔哔号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 晓绿
    晓绿 2025年12月19日

    本文概览:网上科普有关“CSS技巧:妙用drop-shadow实现线条光影效果”话题很是火热,小编也是针对CSS技巧:妙用drop-shadow实现线条光影效果寻找了一些与之相关的一些信...