当前位置:首页 > 科技  > 软件

CSS 和 SVG 实现彩色图片阴影

来源: 责编: 时间:2024-02-01 12:52:20 374观看
导读在平时开发中,有时候会碰到这样的彩色阴影,效果如下:是不是非常有质感?下面分别介绍 CSS 和 SVG 两种实现方式,一起看看吧!一、实现原理从设计上看,其实原理很简单,一张原图和一张模糊的图,叠加在一起就行了,示意如下:那么具体如

4pv28资讯网——每日最新资讯28at.com

在平时开发中,有时候会碰到这样的彩色阴影,效果如下:4pv28资讯网——每日最新资讯28at.com

4pv28资讯网——每日最新资讯28at.com

是不是非常有质感?下面分别介绍 CSS 和 SVG 两种实现方式,一起看看吧!4pv28资讯网——每日最新资讯28at.com

一、实现原理

从设计上看,其实原理很简单,一张原图和一张模糊的图,叠加在一起就行了,示意如下:4pv28资讯网——每日最新资讯28at.com

4pv28资讯网——每日最新资讯28at.com

那么具体如何实现呢?接着往下看。4pv28资讯网——每日最新资讯28at.com

二、CSS 滤镜

首先,单纯的 CSS并不能直接做出这种效果,毕竟无法生成一份相同的图片,因此,我们需要手动创建一个相同的图层。4pv28资讯网——每日最新资讯28at.com

假设HTML如下:4pv28资讯网——每日最新资讯28at.com

<div class="wrap">   <img class="cover" src="https://bookcover.yuewen.com/qdbimg/349573/1036370336/180.webp"></div>

为了节省 dom,我们可以通过伪元素的方式来生成这个图片,关键代码如下:4pv28资讯网——每日最新资讯28at.com

.wrap{  position: relative;  /**/}.wrap::before{  content:'';  position: absolute;  background: url("https://bookcover.yuewen.com/qdbimg/349573/1036370336/180.webp");  transform: translate(10px,10px);}

稍微给点偏移,这样得到了两层图片。4pv28资讯网——每日最新资讯28at.com

4pv28资讯网——每日最新资讯28at.com

然后给这个伪元素设置模糊滤镜就行了。4pv28资讯网——每日最新资讯28at.com

.wrap::before{  /**/  filter: blur(12px);}

这样就实现了文章开头效果。4pv28资讯网——每日最新资讯28at.com

4pv28资讯网——每日最新资讯28at.com

是不是很简单呢?4pv28资讯网——每日最新资讯28at.com

不过实际中可以采用 CSS变量的方式,将需要重复的图片抽离出来。4pv28资讯网——每日最新资讯28at.com

<div class="wrap" style="--bg: url('https://bookcover.yuewen.com/qdbimg/349573/1036370336/180.webp')">  <img class="cover" src="https://bookcover.yuewen.com/qdbimg/349573/1036370336/180.webp"></div>

然后CSS就可以保持统一了。4pv28资讯网——每日最新资讯28at.com

.wrap::before{  /**/  background: var(--bg);}

三、SVG滤镜

有没有发现 上面这种方式需要手动去创建一个一模一样的图层有些多余呢?4pv28资讯网——每日最新资讯28at.com

确实是这样,CSS 目前还无法直接复制一个图层。4pv28资讯网——每日最新资讯28at.com

Firefox 中有个element()方法可以根据dom生成一份完全相同的图层,但是仅仅 Firefox 支持:https://developer.mozilla.org/en-US/docs/Web/CSS/element。4pv28资讯网——每日最新资讯28at.com

那么,还有其他方式吗?4pv28资讯网——每日最新资讯28at.com

当然也是有了,那就是 SVG滤镜!4pv28资讯网——每日最新资讯28at.com

和前面的思路其实是一致的,先模糊图层,然后偏移一下,用SVG实现就是。4pv28资讯网——每日最新资讯28at.com

<svg width="0" height="0">  <filter id="natural-shadow-filter">    <feGaussianBlur stdDeviation="12" />    <feOffset dx="10" dy="10" />    <feMerge>      <feMergeNode />      <feMergeNode in="SourceGraphic" />    </feMerge>  </filter></svg>

似乎有些看不懂?没关系,我们一步步分析。4pv28资讯网——每日最新资讯28at.com

首先filter就滤镜的意思,表示整个就是定义了一个滤镜,后面可以给 CSS 直接使用。4pv28资讯网——每日最新资讯28at.com

接着,feGaussianBlur就是高斯模糊,stdDeviation表示模糊的范围。4pv28资讯网——每日最新资讯28at.com

然后,feOffset表示偏移,dx和dy分别是水平和垂直方向的位移。4pv28资讯网——每日最新资讯28at.com

最后是一个feMerge标签,这个表示合并,也就是将多个滤镜组合起来,里面的feMergeNode表示每一步滤镜的结果。这里有两个feMergeNode,第一个就是前面滤镜的最终结果,也就是「模糊」+「偏移」后的效果,第二个feMergeNode有一个in参数,表示输入,这里设置的是SourceGraphic,表示原始图像,也就是处理之前的原图。这里的叠加顺序是后来居上,也就是原图放在模糊图之上。4pv28资讯网——每日最新资讯28at.com

示意效果如下:4pv28资讯网——每日最新资讯28at.com

4pv28资讯网——每日最新资讯28at.com

最后,我们在CSS中直接通过 id 引入的方式使用这个滤镜就行了。4pv28资讯网——每日最新资讯28at.com

.wrap{  filter: url("#natural-shadow-filter");}

效果如下,和 CSS基本一致。4pv28资讯网——每日最新资讯28at.com

4pv28资讯网——每日最新资讯28at.com

我们还可以多试几种其他图片,下面是 CSS 和 SVG 两种实现的效果对比。4pv28资讯网——每日最新资讯28at.com

4pv28资讯网——每日最新资讯28at.com

你可以查看以下链接4pv28资讯网——每日最新资讯28at.com

  • CSS & SVG color shadow(code.juejin)[1]
  • CSS & SVG color shadow(codepen.io)[2]

四、总结一下

以上就是本文的全部内容了,主要介绍了 CSS 和 SVG 两种不同的实现方式,下面总结一下4pv28资讯网——每日最新资讯28at.com

  • 彩色阴影其实原理很简单,一张原图和一张模糊的图,叠加在一起就行了。
  • CSS无法直接创建一个完全相同的图层,需要手动去创建。
  • 手动去创建一个一模一样的图层有些多余,而SVG可以自动生成多份。
  • SVG可以将多个效果通过feMerge进行叠加,顺序是后来居上,SourceGraphic表示原始图像。
  • CSS可以通过url(#id)的方式引入SVG滤镜。

当然,SVG的潜力远不仅如此,在图像处理方面,SVG有着无可比拟的优势,CSS 滤镜可以称之为“残血版”滤镜,很多效果还是需要SVG出马,以后还会介绍更多实用场景。4pv28资讯网——每日最新资讯28at.com

[1]CSS & SVG color shadow (code.juejin): https://code.juejin.cn/pen/7328684301011124260。4pv28资讯网——每日最新资讯28at.com

[2]CSS & SVG color shadow (codepen.io): https://code.juejin.cn/pen/7328684301011124260。4pv28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-70482-0.htmlCSS 和 SVG 实现彩色图片阴影

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 免费用JetBrains全家桶的门槛变高了,这个条件必须满足

下一篇: 故障现场 | 这个死锁出奇的诡异

标签:
  • 热门焦点
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • iPhone卖不动了!苹果股价创年内最大日跌幅:市值一夜蒸发万亿元

    8月5日消息,今天凌晨美股三大指数高开低走集体收跌,道指跌0.41%;纳指跌0.36%;标普500指数跌0.52%。热门科技股也都变化极大,其中苹果报181.99美元,跌4.8%,创
  • 一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 分布式系统中的CAP理论,面试必问,你理解了嘛?

    对于刚刚接触分布式系统的小伙伴们来说,一提起分布式系统,就感觉高大上,深不可测。而且看了很多书和视频还是一脸懵逼。这篇文章主要使用大白话的方式,带你理解一下分布式系统
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对&ldquo;势&rdquo;的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的&ldquo;征求意见版&rdquo;:1、取消P序列
  • 消息称小米汽车开始筛选交付中心:需至少120个车位

    IT之家 7 月 7 日消息,日前,有微博简介为“汽车行业从业者、长三角一体化拥护者”的微博用户 @长三角行健者 发文表示,据经销商集团反馈,小米汽车目前
  • 回归OPPO两年,一加赢了销量,输了品牌

    成为OPPO旗下主打性能的先锋品牌后,一加屡创佳绩。今年618期间,一加手机全渠道销量同比增长362%,凭借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top