svg dropshadow实现

div通过css设置修改达到shadow效果,而将其转换为SVG时却较为麻烦


div shadow

svg 实现shadow的方式是通过filter添加滤镜 svgBase

Drop Shadows - feOffset

feOffset 使得图像进行偏移得到
feOffset参数

  • dx:元素在x轴方向的偏移
  • dy
  • in : SourceGraphic | SourceAlpha | BackgroundImage | BackgroundAlpha | FillPaint | StrokePaint | <filter-primitive-reference> 输入名称
  • result (输出名称)
    feBlend
    滤镜把两个对象组合在一起,使它们受特定的混合模式控制。这类似于图像编辑软件中混合两个图层。该模式由属性mode定义。
  • in
  • in2
  • mode

feOffset与 feBlend

feBlend
<svg viewBox="0 0 1100 400" version="1.1">
    <desc>
        Filter example
    </desc>
    <filter id="i1" width="150%" height="150%">
        <feOffset result="offOut" in="SourceGraphic" dx="30" dy="30"></feOffset>
        <feBlend in="SourceGraphic" in2="offOut" mode="normal"></feBlend>
    </filter>
    <g stroke-width="5" filter="url(#i1)">
        <rect x="10%" y="10%" width="20%" height="20%" stroke="rgb(204, 204, 204)" fill="wheat"></rect>
        <rect x="40%" y="10%" width="20%" height="20%" stroke="green" fill="tomato"></rect> 
    </g>
</svg>

边缘模糊

feColorMatrix

矩阵来影响每个通道的颜色RGBA

<filter>
    <feColorMatrix 
        type="matrix"
        values="   R 0 0 0 0
                   0 G 0 0 0
                   0 0 B 0 0
                   0 0 0 A 0
        "/>
    </feColorMatrix>
</filter>

/* R G B A 1 */ 
1 0 0 0 0 // R = 1*R + 0*G + 0*B + 0*A + 0
0 1 0 0 0 // G = 0*R + 1*G + 0*B + 0*A + 0 
0 0 1 0 0 // B = 0*R + 0*G + 1*B + 0*A + 0 
0 0 0 1 0 // A = 0*R + 0*G + 0*B + 1*A + 0
<svg viewBox="0 0 1100 400" version="1.1">
    <desc>
        Filter example
    </desc>
    <filter id="i1" width="120%" height="120%">
       
        <feGaussianBlur in="SourceAlpha" stdDeviation="1"></feGaussianBlur> 
    <feOffset result="offsetblur" dx="2" dy="5"></feOffset>
        <feFlood flood-color="red"></feFlood>
        <feComposite in2="offsetblur" operator="in"></feComposite>
        <feMerge>
            <feMergeNode></feMergeNode>
            <feMergeNode in="SourceGraph"></feMergeNode>
        </feMerge>
    </filter>
    <g stroke-width="1" filter="url(#i1)">
        
        <rect x="40%" y="10%" width="20%" height="20%" stroke="green" fill="white"></rect>
    </g>
</svg>

最新dropshadow可以使用feDropShadow

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.什么是SVG? SVG 指的是可伸缩矢量图形 (Scalable Vector Graphics),它用来定义...
    nightZing阅读 17,282评论 11 62
  • 这是一篇高级教程,其中蕴含了很多的设计理念和设计技巧,是一篇不可多得的好文章。在这个教程中,作者将结合了各种方法技...
    缘下杂音阅读 4,079评论 0 3
  • 转载请声明 原文链接 关注公众号获取更多资讯 这篇文章主要总结H5的一些新增的功能以及一些基础归纳,这里只是一个提...
    前端进阶之旅阅读 12,966评论 22 225
  • 第一次见吴临的钢琴老师,真的是心动了,虽然是我不喜欢的单眼皮,但是就是有那么一个点,那种感觉,好久没有了,但愿吧。
    崔小飞啊阅读 1,409评论 0 0
  • ■文/芊墨之恋 木箱的锁,精美好看 里面装满心思 鹅毛蘸着墨汁 流淌着心事 听说,那里有白桦、老兵、钢琴和秋风 我...
    芊墨之恋阅读 1,580评论 1 6

友情链接更多精彩内容