SVG滤镜+阴影+渐变--学习笔记

SVG滤镜的种类:

滤镜描述
feBlend把两个对象组合在—起,使它们受特定的混合模式控制
feColorMatrix基于转换矩阵对颜色进行变换,每—像素的颜色值都经过矩阵计算出新颜色
feComponentTransfer重新定义所有四个颜色通道R、G、B和A
feComposite用于将两个图像相交,接受两个输入, in和in2
feConvolveMatrix应用了—个矩阵卷积滤镜效果
feDiffuseLightingSVG 滤波器原始灯使用alpha通道作为凹凸贴图的图像
feFlood实用程序过滤器,用于使用颜色和不透明度基本填充过滤器子区域
feDisplacementMap是—个位置替换滤镜,用于改变元素和图形的像素位置
feFlood允许同时应用滤镜效果而不是按顺序应用滤镜效果
feMorphology用来腐蚀或扩张输入图像
feOffset显示阴影效果
feSpecularLighting使用alpha通道作为凹凸贴图源图形,生成的图像是基于浅色的 RGBA图像

feSpotLight

定义了一个光源,其允许创建一个聚光灯效果

fePointLight定义了一个光源,其允许创建一个点光源的效果
feTurbulence利用Perlin噪声函数创建了一个图像

滤镜属性:

属性        作用

 X,Y        提供左上角的坐标来定义在哪里渲染滤镜效果。(默认100)

width,height        绘制滤器容器的高宽(默认都为100% )

result        用于定义一个滤镜效果的输出名字,以便将其作用作另一个滤镜效果的输入(in)

in 指定滤镜效果的输入源,可以是某个滤镜导出的result,也可以是下面6个值。

in属性的6个取值

svG filter中的 in属性,指定滤镜效果的输入源,可以是某个滤镜导出的 result

也可以是下面6个值:

in取值         作用

SourceGraphic    该关键词表示图形元素自身将作为<filter>原语的原始输入

SourceAlpha      该关键词表示图形元素自身将作为〈filter>原语的原始输入。SourceAlphaSourceGraphic具有相同的规则除了SourceAlpha只使用元素的非透明部分

Backgroundlmage SourceGraphic类似,但可在背景上使用。需要显式设置BackgroundAlphaSourceAlpha类似,但可在背景上使用。需要显式设置

feBlend滤镜的模式:

  1. normal — 正常
  2. multiply — 正片叠底
  3. screen — 滤色
  4. darken — 变暗
  5. lighten— 变亮

SVG阴影(附代码)

理解<defs>和<filter>

        所有的internet SVG滤镜都再<defs>元素中定义。

<defs>元素是定义的缩写,包括特殊元素(例如滤镜)的定义。

<filter>元素用于定义的SVG滤镜。

<filter>元素具有必须的ID属性,用于标识滤镜。途径然后指向要使用的滤镜。

理解<feoffset>

        <feoffset>元素用于创建阴影效果:想法是拍摄SVG图形(图像或元素)并将其再XY平面中移动一点,然后将原始图片混合在偏移图形顶部(使用foBlend)。

(代码)

<body>
    <svg width="1000" height="1000">
        <defs>
            <filter id="yy" width="200%" height="200%">
                <feOffset in="SourceGraphic" result="offset" dx="50" dy="50"> <!--调成阴影位置-->
                </feOffset>
                <!--设置阴影的属性-->
                <faColorMatrix in="offOut" result="colorMatrix" type="matrix" 
                        values="0.2 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0"></faColorMatrix>
                <feGaussianBlur in="colorMatrix" result="blur" stdDeviation="20"></feGaussianBlur>
                <feBlend in="SourceGraphic" in2="offset" mode="mormal"></feBlend>
            </filter>
        </defs>
        <!-- 设置一个矩形形状 -->
        <rect x="300" y="300" width="200" height="100" fill="yellow" stroke="red" filter="url(#yy)"></rect>
    </svg>
</body>

效果

 

SVG阴影(代码)

    <svg width="1000" height="1000">
        <!-- defs是一个定义过滤器 -->
           <defs>
               <!-- 定义一个过滤器 filler-->
               <filter id="yy" width="200%" heigth="200%">
                   <!-- 使用偏移滤镜 -->
                   <feOffset in="SourceGraphic" result="offset1" dx="20" dy="20">
                   </feOffset>
                   <feBlend in="SourceGraphic" in2="offset" mode="multiply">
                     <!-- 使用混合过滤器,主要是将原始标签显示出来 -->
                   </feBlend>
               </filter>
           </defs>
           <rect x="200" y="200" width="200" height="150" fill="red" stroke="blue" filter="url(#yy)"></rect>
       </svg>
</body>

模糊效果(代码)

<body>
    <svg width="1000" height="1000">
        <!-- defs是一个定义过滤器 -->
           <defs>
               <!-- 定义一个过滤器 filler-->
               <filter id="yy" width="200%" heigth="200%">
                   <!-- 使用偏移滤镜 -->
                   <feOffset in="SourceGraphic" result="offset1" dx="20" dy="20">
                   </feOffset>
                   <feGaussianBlur in="offset1" stdDeviation="10"></feGaussianBlur>
                   <feBlend in="SourceGraphic" in2="offset" mode="multiply">
                     <!-- 使用混合过滤器,主要是将原始标签显示出来 -->
                   </feBlend>
               </filter>
           </defs>
           <rect x="200" y="200" width="200" height="150" fill="red" stroke="blue" filter="url(#yy)"></rect>
       </svg>
</body>

效果

 渐变

3了解SVG渐变

渐变是一种从一种颜色到另一种颜色的平滑过渡。另外,可以把多个颜色的过渡应用到同一个元素上SVG渐变主要有两种类型:

1.. Linear-线性的

2.. Radial-径向的

SVG线性渐变-<linearGradient>

线性渐变可以定义为水平,垂直或角度渐变:

1.当y1和y2相等且x1和x2不同时,将创建水平渐变

2.当x1和x2相等且y1和y2不同时,将创建垂直渐变

3.当×1和x2不同且y1和y2不同时,将创建角度渐变

渐变(代码)

<body>
    <svg>
        <defs>
            <!-- x1="0%" y1="0%"渐变开始   x2="100%" y2="100%" 渐变结束-->
            <linearGradient id="linear" x1="10%" y1="20%" x2="70%" y="50%" >
                <!-- 设置渐变色,使用stop标签 -->
                <stop offset="20%" stop-color="red"></stop>
                <!-- <stop  offset="30%" stop-color="blue"></stop> -->
                <stop offset="100%" stop-color="yellow"></stop>
            </linearGradient>
        </defs> 
         <!-- rect设置一个矩形图形    fill="url(#linear)" 填充linear设置的颜色 stroke="red" 设置线条颜色红色 -->
        <rect x="0" y="0" width="200" height="200" fill="url(#linear)" stroke="red" ></rect>
    </svg>
</body>

 效果

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要制作一个椭圆印章,可以使用如下步骤: 1. 使用图形软件(如Adobe Illustrator)绘制一个椭圆形状,并在其中添加印章要显示的文本和图形。 2. 将椭圆形状导出为 PNG 或者 SVG 格式的图片,保证图片的分辨率足够高。 3. 使用 CSS 样式将导出的图片应用到 HTML 元素上,可以使用 background-image 属性来设置图片的背景,同时使用 background-size 属性调整图片大小以适应元素的大小。 4. 在 CSS 样式中,使用 border-radius 属性将元素的边角设为椭圆形,同时使用 box-shadow 属性添加阴影效果,使印章更加立体。 以下是一个示例代码,可以实现一个简单的椭圆印章: HTML 代码: ``` <div class="seal"> <p>椭圆印章</p> </div> ``` CSS 代码: ``` .seal { width: 200px; height: 100px; background-image: url('seal.png'); background-size: cover; border-radius: 50%; box-shadow: 0 0 20px rgba(0, 0, 0, 0.3); display: flex; justify-content: center; align-items: center; font-size: 20px; font-weight: bold; color: #fff; text-shadow: 0 0 5px rgba(0, 0, 0, 0.3); } ``` 在上述代码中,我们使用了一个背景图片(seal.png),将元素的宽度和高度设为 200px 和 100px,同时将元素的边角设为 50%,使其呈现椭圆形状。使用 box-shadow 属性添加阴影效果,使印章更加立体。最后,使用 display、justify-content、align-items、font-size、font-weight、color 和 text-shadow 等属性来设置印章的样式和文本效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值