前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一篇文章带你了解SVG 阴影

一篇文章带你了解SVG 阴影

作者头像
前端进阶者
发布于 2021-03-03 07:27:44
发布于 2021-03-03 07:27:44
94700
代码可运行
举报
文章被收录于专栏:前端进阶交流前端进阶交流
运行总次数:0
代码可运行

注意: Internet Explorer和Safari不支持SVG滤镜!

一、前言

defs 和 filte元素

所有互联网的SVG滤镜定义在<defs>元素中。<defs>元素定义短并含有特殊元素(如滤镜)定义<filter>标签用来定义SVG滤镜。

<filter>标签使用必需的id属性来定义向图形应用哪个滤镜?

二、feOffset 元素

1. 实例 1

<feOffset>元素是用于创建阴影效果。我的想法是采取一个SVG图形(图像或元素)并移动它在xy平面上一点儿。

偏移一个矩形(带<feOffset>),然后混合偏移图像顶部(含<feBlend>)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<body style="background-color: aqua;">

<p><b>Note: </b>Internet Explorer and Safari do not support SVG filters yet!</p>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="f1" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
<feBlend in="SourceGraphic" in2="offOut" mode="normal" />
</filter>
</defs>
<rect width="90" height="90" stroke="green" stroke-width="3" fill="red" filter="url(#f1)" />
</svg>

</body>
</html>

运行效果:

代码解析:

  1. <filter>元素id属性定义一个滤镜的唯一名称。
  2. <rect>元素的滤镜属性用来把元素链接到"f1"滤镜。

2. 实例 2

现在,偏移图像可以变的模糊(含 <feGaussianBlur>)。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="f1" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
<feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" />
<feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
</filter>
</defs>
<rect width="90" height="90" stroke="green" stroke-width="3" fill="red" filter="url(#f1)" />
</svg>

运行效果

代码解析:

<feGaussianBlur>元素的stdDeviation属性定义了模糊量。


3. 实例 3

现在,制作一个黑色的阴影。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="f1" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceAlpha" dx="20" dy="20" />
<feGaussianBlur result="blurOut" in="offOut" stdDeviation="10" />
<feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
</filter>
</defs>
<rect width="90" height="90" stroke="green" stroke-width="3" fill="red" filter="url(#f1)" />
</svg>

运行效果

代码解析:

<feOffset>元素的属性改为"SourceAlpha"在Alpha通道使用残影,而不是整个RGBA像素。


4. 实例 4

现在为阴影涂上一层颜色。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="f1" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceGraphic" dx="20" dy="20" />
<feColorMatrix result="matrixOut" in="offOut" type="matrix" values="0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0" />
<feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="10" />
<feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
</filter>
</defs>
<rect width="90" height="90" stroke="green" stroke-width="3" fill="red" filter="url(#f1)" />
</svg>

代码解析:

<feColorMatrix>过滤器是用来转换偏移的图像使之更接近黑色的颜色。'0.2'矩阵的三个值都获取乘以红色,绿色和蓝色通道。降低其值带来的颜色至黑色(黑色为0)。

三、总结

本文基于Htm基础,主要介绍了通过SVG进行图像,阴影效果的呈现,feOffset元素在实际应用中对图像的阴影添加不一样的样式 ,呈现不一样的阴影层次。通过丰富的案例分析,效果图的展示,让读者能够更好理解和学习。

大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端进阶学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
带你轻松打开svg滤镜的大门
本文介绍了SVG滤镜的用法,包括如何定义和使用滤镜、如何给不同的SVG元素添加滤镜、以及通过编程方式控制滤镜等。同时,还介绍了在网页中应用SVG滤镜的方法,包括使用SVG元素、使用CSS滤镜、以及使用JavaScript控制滤镜等。此外,还提供了若干示例和代码片段供参考。
练小习
2017/11/30
1.4K0
带你了解SVG标签
✍️ 作者简介: 前端新手学习中。 💂 作者主页: 在主页中查看更多前端教学,可接大学生前端作业单。 🎓 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 js学习 目录 初始SVG 矩形,圆形和椭圆型  矩形  圆形  椭圆形 绘制线条 多边形 连续线条  线条  多边形  连续线条 绘制文本 绘制路径 阴影和模糊 初始SVG SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Ext
坚毅的小解同志的前端社区
2023/01/13
2.1K0
带你了解SVG标签
Power BI 图表立体阴影效果
Power BI 内置了阴影效果,使得视觉对象看上去立体,但是目前没有视觉对象上的内容立体功能(截止本文发稿日)。
wujunmin
2024/02/28
2440
Power BI 图表立体阴影效果
有意思!强大的 SVG 滤镜
想写一篇关于 SVG 滤镜的文章已久,SVG 滤镜的存在,让本来就非常强大的 CSS 如虎添翼。让仅仅使用 CSS/HTML/SVG 创作的效果更上一层楼。题图为袁川老师使用 SVG 滤镜实现的云彩效果 -- CodePen Demo -- Cloud (SVG filter + CSS)。
Sb_Coco
2021/03/30
1.8K0
有意思!强大的 SVG 滤镜
SVG基础知识
之前有提到过SVG描边动画,可以实现很神奇的手写签名动画效果,当然,理论上可以用来实现任意不规则路径填充动画
ayqy贾杰
2019/06/12
2.2K0
SVG基础知识速查笔记
svg是指可缩放矢量图形,是用于描述二维矢量图形的一种图形格式。svg使用XML格式来定义图形,除ie8之前版本外,绝不部分浏览器均支持svg,可将svg文本直接嵌入HTML中显示。
前端_AWhile
2019/09/06
2.1K0
CSS + HTML <水滴按钮效果>
Tweenlite,是 webgame 开发人员比较常用的一个缓动库。 官方网站:http://www.greensock.com/tweenlite/ 可以去 https://www.tweenmax.com.cn/start/ 下载 TweenMax.min.js 并引入
网罗开发
2021/04/26
1.9K0
CSS + HTML <水滴按钮效果>
SVG基础
SVG可缩放矢量图形Scalable Vector Graphics是基于可扩展标记语言XML,用于描述二维矢量图形的一种图形格式。SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式,SVG于2003年成为W3C推荐标准。
WindRunnerMax
2020/08/27
2.6K0
带你轻松打开svg滤镜的大门
SVG滤镜绝对称得上是他最强大的功能之一,在不影响任何文档结构的前提下,允许你给你的矢量图形添加各种专业视觉效果,我个人给他的定义就是,把PS装到了网页上。 一、 SVG滤镜的原理 基本原理描述太多明显有违我们 “轻松打开” 的目的,这里简单的描述一下,SVG在使用了滤镜的元素里,不会将原始图形直接渲染出来,而是会将原始图形的像素信息渲染到临时位图中,然后由 filter元素指定的操作会被应用到这个临时位图,最终把计算结果渲染为最终图形输出。 举个例子,我们用腾讯云的CVM图标来做一个最简单,最常见的滤镜效
腾讯ISUX
2018/06/29
7010
SVG基础知识 Adobe Illustrator绘制SVG
此外还有阴影渐变,等滤镜,等就太复杂了,设计到矩阵变换等高等数学的内容,自己有心无力。
mySoul
2018/10/13
2.9K0
通过 SVG 使用 AI 生成理想图片:技术实现与实践指南
在现代开发中,SVG(可缩放矢量图形)因其矢量特性、可编程性和跨平台兼容性,成为生成动态图形的优选工具。结合人工智能(AI)的代码生成能力,我们可以通过简单描述快速创建符合需求的理想图片。本文将深入探讨 SVG 与 AI 的结合原理,提供实现步骤,并以一个完整的“科技感封面图”为例,展示如何生成可用且美观的 SVG 图形,助力开发者掌握这一技术。
码事漫谈
2025/03/17
3930
通过 SVG 使用 AI 生成理想图片:技术实现与实践指南
一步步教你用CSS添加SVG过滤器[每日前端夜话0x47]
自21世纪初以来,SVG就存在了,但仍有一些有趣的方法去用它。在本教程中,重点将放在 SVG 的过滤器上 —— 但不只是将它们应用于 SVG 图像,我将向你展示如何将它们应用于任何常规页面的内容上。
疯狂的技术宅
2019/04/23
3.1K0
一步步教你用CSS添加SVG过滤器[每日前端夜话0x47]
CSS 3.0结合SVG实现水滴穿透加载动画
给大家分享一个用CSS 3.0结合SVG实现一个水滴穿透加载动画,效果如下:  以下是代码实现,欢迎大家复制、粘贴和收藏。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CSS 3.0结合SVG实现水滴穿透加载动画</title> <style> :root { --blue: #0a2bc5;
越陌度阡
2022/05/10
8690
CSS 3.0结合SVG实现水滴穿透加载动画
如何使用ChatGPT和Claude创建软件图表
在我之前的文章中,关于ChatGPT 和 Claude 可以看到你屏幕上的什么内容以及开发者如何利用它,我提到过一个浏览器扩展,它使用从完整 CNN 网站获取的图像来增强纯文本的lite.cnn.com。它运行良好,但是使用了已弃用的Manifest V2。当我让 Claude 将其更新到 V3 时,我想要绘制一些架构更改图。因此,在这篇文章中,我将回顾一下这个绘图过程。
云云众生s
2024/12/24
2050
如何使用ChatGPT和Claude创建软件图表
SVG图像技术摘要
该公司今天没有,研究了最近流行SVG技术,发现,随着css3不断流行,和浏览器技术的发展,SVG网站将取代大量的图片,成为主流站点图片展示。
全栈程序员站长
2022/07/06
1.4K0
一篇文章带你了解SVG marker 标记
SVG标签用于标签行或路径的开始、中间和结尾。例如,可以用圆或正方形标签路径的起点,用箭头标签路径的终点。
前端进阶者
2021/01/22
2K0
一篇文章教会你使用HTML5 SVG 标签
SVG 表示可伸缩矢量图形,这是一门用于描述 2D 图形的语言,图形应用使用 XML 编写,然后 XML 由 SVG 阅读器程序呈现。支持三种类型的图形对象:矢量图形形状(例如,由直线和曲线组成的路径),图像和文本。图形对象可以进行分组,样式设置,转换和合成。功能集包括嵌套转换,剪切路径,Alpha蒙版,滤镜效果和模板对象。。
前端皮皮
2020/11/26
6940
一篇文章教会你使用HTML5 SVG 标签
SVG 图像入门教程
SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
ruanyf
2018/08/09
2K0
SVG 图像入门教程
一篇文章带你了解SVG <clippath>剪切路径
SVG剪切路径(也称为SVG剪切)用于根据特定路径剪切SVG形状。路径内部的形状部分可见,外部的部分不可见。
前端进阶者
2021/01/22
2.7K0
SVG 使用
SVG即Scalable Vector Graphics可缩放矢量图形,使用XML格式定义图形, 主要优势在于可缩放的同时不会影响图片的质量。 SVG 在html 中常用的方法 1.使用<img>元素来嵌入SVG图像 <img src=”http://www.w3school.com.cn/svg/rect1.svg”  width=”300″ /> 2.将SVG图像作为背景图像嵌入 background: url(‘http://www.w3school.com.cn/svg/rect1.svg’) no
用户1197315
2018/01/22
2.6K0
相关推荐
带你轻松打开svg滤镜的大门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验