前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >一篇文章带你了解SVG <clippath>剪切路径

一篇文章带你了解SVG <clippath>剪切路径

作者头像
前端进阶者
发布于 2021-01-22 02:19:07
发布于 2021-01-22 02:19:07
2.5K00
代码可运行
举报
文章被收录于专栏:前端进阶交流前端进阶交流
运行总次数:0
代码可运行

SVG剪切路径(也称为SVG剪切)用于根据特定路径剪切SVG形状。路径内部的形状部分可见,外部的部分不可见。

一、剪辑路径

这是一个简单的剪辑路径。

SVG代码:

代码语言:javascript
代码运行次数:0
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>项目</title>
    </head>
    <body style="background-color: aqua;">
        <svg width="200" height="100" style="border: 1px solid #cccccc;">
            <defs>
                <clippath id="clipPath">
                    <rect x="15" y="15" width="40" height="40"></rect>
                </clippath>
            </defs>
            <circle cx="25" cy="25" r="20" style="fill: #ff0000s; clip-path: url(#clipPath); "></circle>
        </svg>
        <svg width="200" height="100" style="border: 1px solid #cccccc;">
            <defs>
                <clippath id="clipPath2">
                    <rect x="15" y="15" width="40" height="40"></rect>
                </clippath>
            </defs>
            <circle cx="25" cy="25" r="20" style="fill: #ff0000; clip-path: url(#clipPath2); "></circle>
            <rect x="15" y="15" width="40" height="40" style="stroke: #000000; fill:none;"></rect>
        </svg>
    </body>
</html>

这个实SVG代码定义了一个形状类似于矩形(<clipPath>元素中的形状)的剪辑路径。示SVG代码末尾定义的圆通过CSS属性 clip-path 引用了<clipPath> id属性。

运行效果:

左下方是生成的图像。右边是同一图像,但也绘制了剪切路径。

在剪切路径内只有圆的部分是可见的。其余部分将被剪切。

二、高级剪切路径

可以使用矩形以外的其他形状作为剪切路径。可以使用圆形,椭圆形,多边形或自定义路径。任何SVG形状都可以用作剪切路径。

这是将<path>元素用作剪切路径的示SVG代码,因为这些是可以使用的最高级的剪切路径类型。剪辑路径将应用于<rect>元素。

SVG代码:

代码语言:javascript
代码运行次数:0
复制
<svg width="200" height="100" style="border: 1px solid #cccccc;">
    <rect x="5" y="5" width="190" height="90" style="stroke: none; fill:#00ff00; "></rect>
</svg>
<svg width="200" height="100" style="border: 1px solid #cccccc;">
    <defs>
        <clippath id="clipPath3">
            <path d="M10,10 q60,60 100,0 q50,50 50,50 l40,0 l-40,40 l-100,-20"></path>
        </clippath>
    </defs>
    <rect x="5" y="5" width="190" height="90" style="stroke: none; fill:#00ff00; clip-path: url(#clipPath3);"></rect>
</svg>

运行效果:

这是生成的图像-在右侧。左侧显示没有剪切路径的图像。

1. 在组上剪裁路径

可以在一组SVG形状上使用剪切路径,而不是分别在每个形状上使用。只需将形状放在<g>元素内,然后在<g>元素上设置CSS属性clip-path即可。这是一个实SVG代码:

示例SVG代码

代码语言:javascript
代码运行次数:0
复制
<svg width="200" height="100" style="border: 1px solid #cccccc;">
    <rect x="5" y="5" width="190" height="90" style="stroke: none; fill:#00ff00; "></rect>
    <circle cx="20" cy="20" r="20" style="stroke: none; fill: #ff0000;"></circle>
</svg>
<svg width="200" height="100" style="border: 1px solid #cccccc;">
    <defs>
        <clippath id="clipPath4">
            <rect x="10" y="20" width="100" height="20"></rect>
        </clippath>
    </defs>
    <g style="clip-path: url(#clipPath4);">
        <rect x="5" y="5" width="190" height="90" style="stroke: none; fill:#00ff00;"></rect>
        <circle cx="20" cy="20" r="20" style="stroke: none; fill: #ff0000;"></circle>
    </g>
</svg>

运行效果:

下面是没有剪切路径的图像,然后是应用剪切路径的图像:

2. 文本作为剪切路径

也可以将文本用作剪切路径。这是一个实SVG代码:

SVG代码:

代码语言:javascript
代码运行次数:0
复制
<svg width="200" height="100" style="border: 1px solid #cccccc;">
            <rect x="5" y="5" width="190" height="90" style="stroke: none; fill:#00ff00; "></rect>
            <circle cx="20" cy="20" r="20" style="stroke: none; fill: #ff0000;"></circle>
        </svg>
        <svg width="200" height="100" style="border: 1px solid #cccccc;">
            <defs>
                <clippath id="clipPath5">
                    <text x="10" y="20" style="font-size: 20px; ">
                        This is a text
                    </text>
                </clippath>
            </defs>
            <g style="clip-path: url(#clipPath5);">
                <rect x="5" y="5" width="190" height="90" style="stroke: none; fill:#00ff00;"></rect>
                <circle cx="20" cy="20" r="20" style="stroke: none; fill: #ff0000;"></circle>
            </g>
        </svg>

这是带有和不带有剪切路径的结果图像:

正如看到的,现在只显示文本内部形状的一部分。

三、总结

本文基于SVG基础,介绍了如何剪切路径,可以根据特定路径剪切SVG形状。还介绍了高级的剪切路径(在组上剪裁路径、文本作为剪切路径)通过项目的分析,案例的效果图的展示,能够让读者更好的理解SVG路径剪切的用法。

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

希望能够帮助你更好的学习。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SVG - 动画制作
SVG - 动画制作 HTML5学堂:SVG - 动画制作。上一篇文章讲解了SVG的基本属性,大家能够利用SVG的基本属性进行绘制图像,那么如何让绘制好的图像动起来呢?今天要给大家分享的是SVG的动画制作,具体我们来看看下面的内容吧。 接触过HTML5的人,都知道,Canvas实现一个动画,需要不断的清除画布再重新绘制,如果没有接触过Canvas也不要紧,SVG之后我们紧接着要为大家介绍的就是Canvas。SVG提供了比较方便的API接口,动画实现起来比较方便,具体看看下面的动画命令。 SVG 动画基本命
HTML5学堂
2018/03/12
3.2K0
SVG - 动画制作
一篇文章带你了解SVG <use> 元素
SVG <use>元素可以重用SVG文档中其他位置(包括 <g>元素和 <symbol>元素)的SVG形状。可以在 <defs>元素内部(使形状直到使用之前不可见)或外部定义重用形状。
前端进阶者
2021/01/22
3.9K0
SVG 动画精髓
TL;DR 本文主要是讲解关于 SVG 的一些高级动画特效,比如 SVG 动画标签,图形渐变,路径动画,线条动画,SVG 裁剪等。 例如:路径动画 图形渐变: 线条动画: 以及,相关的动画的矩阵知识,
villainhr
2018/07/03
3.4K0
一篇文章带你了解SVG marker 标记
SVG标签用于标签行或路径的开始、中间和结尾。例如,可以用圆或正方形标签路径的起点,用箭头标签路径的终点。
前端进阶者
2021/01/22
1.9K0
一篇文章带你了解SVG 蒙版(Mask)
SVG蒙版功能可将蒙版应用于SVG形状。蒙版可确定SVG形状的哪些部分可见,以及具有什么透明度。运行效果可以将SVG蒙版视为剪切路径的更高级版本。
前端皮皮
2020/11/26
2K0
一篇文章带你了解SVG 蒙版(Mask)
一篇文章带你了解SVG stroke属性
将笔划宽度设置为3个像素。您可以使用不同于像素的单位。在[SVG坐标系统单位中查看所有可用单位。
前端进阶者
2021/03/03
1.3K0
一篇文章带你了解SVG stroke属性
SVG 动画精髓(下)
本文作者:ivweb villainthr 接SVG 动画精髓(上) 线条动画 SVG 中的线条动画常常用作过渡屏(splash screen)中。例如: 或者,一些比较炫酷的 LOGO 中,比如
腾讯IVWEB团队
2017/07/07
1.8K0
SVG 动画精髓(下)
SVG - 创建SVG图片
SVG - 创建SVG图片 HTML5学堂:之前在绘图中使用到了SVG以及Canvas,因此决定最近将绘图类的知识和大家分享一下。从研究角度来说,SVG比Canvas要难很多。没有合适的中文文档,自己只能去翻译英文文档(唉,英语不好啊)。今天先来说说SVG的基本知识以及创建SVG的基本方法。 SVG是什么 W3C推荐的网页图形格式,类似于Flash,SVG是一种描述二维矢量图形的标记语言,但它是一种开发的以XML为基础的语言,不是一种私有语言。 SVG的支持程度 IE8-以及Android 2.3默认浏览器
HTML5学堂
2018/03/12
4.1K0
一篇文章教会你使用SVG 填充图案
SVG填充图案用于用由图像组成的图案填充形状。该图案可以由SVG图像(形状)或位图图像组成。SVG填充模式看起来就像从Photoshop等中所习惯的那样,被称为“平铺”。
前端进阶者
2021/03/03
2.1K0
一篇文章教会你使用SVG 填充图案
三天学会HTML5——SVG和Canvas的使用
在第一天学习了HTML5的一些非常重要的基本知识,今天将进行更深层学习 首先来回顾第一天学习的内容,第一天学习了新标签,新控件,验证功能,应用缓存等内容。 第2天将学习如何使用Canvas 和使用SVG 实现功能 Lab1—— 使用Canvas Canvas 是指定了长度和宽度的矩形画布,我们将使用新的HTML5 JavaScript,可使用HTML5 JS API 来画出各种图形。 初始化 1. 创建HTML页面 <html> <head></head> <body></body> </html> 2.
葡萄城控件
2018/01/10
2.8K0
三天学会HTML5——SVG和Canvas的使用
SVG绘制星空效果
主要代码: 代码详见GitHub:https://github.com/toly1994328/svg-night: svg星空 <!DOCTYPE html> <html lang="en">
张风捷特烈
2018/09/26
1.4K0
基于HTML/CSS/JS的动态元素周期表
https://wanghao221.github.io/game/yuansuzhouqibiao/
海拥
2021/08/23
1.6K0
基于HTML/CSS/JS的动态元素周期表
一篇文章带你了解SVG <Animation> 动画元素
SVG <Animation> 动画元素用于为SVG图形制作动画。动画元素最初是在同步多媒体集成语言(SMIL)中定义的。在动画中,必须指定属性,运动,颜色,动画的开始时间和动画的持续时间的开始和结束值。
前端进阶者
2021/01/22
3K0
每天一个小技巧:CSS clip-path 的妙用 Clip Path分类Clippy
CSS 的 clip-path 属性是 clip 属性的升级版,它们的作用都是对元素进行 “剪裁”,不同的是 clip 只能作用于 position 为 absolute 和 fixed 的元素且剪裁区域只能是正方形,而 clip-path 更加强大,可以以任意形状去裁剪元素,且对元素的定位方式没有要求。基于这样的特性,clip-path 常用于实现一些炫酷的动画效果。
MudOnTire
2020/07/22
3.7K0
每天一个小技巧:CSS clip-path 的妙用
                            Clip Path分类Clippy
SVG 从入门到后悔,怎么不早点学起来(图解版)
可视化、机器学习等领域 JS 都有涉及到,而可视化方面已经被很多领域用到,比如大屏项目。
德育处主任
2022/09/08
3.3K0
一篇文章带你了解SVG <path> 路径
path元素是用来定义形状的通用元素。所有的基本形状都可以用path元素来创建。SVG <path>元素用于绘制由直线,圆弧,曲线等组合而成的高级形状,带或不带填充。该 <path>元素可能是所有元素中最先进,最通用的SVG形状。
前端进阶者
2021/01/22
1.7K0
一篇文章带你了解SVG fill 属性
使用较深的蓝色(#000066)描边颜色和较浅的蓝色(#3333ff)填充颜色定义圆。
前端进阶者
2021/03/03
5K0
一篇文章带你了解SVG fill 属性
【D3使用教程】(5) 动态更新与过渡动画
数据总是在变化的,那么我们要如何将变化的数据反映到图表上呢? 在D3中,这些变化通过更新进行处理。而过渡通过使用动画用于处理视觉上的展示。
前端修罗场
2023/10/07
4410
【D3使用教程】(5) 动态更新与过渡动画
SVG快速入门小白篇
SVG .svg 使用xml语法 <?xml version='10.' standalone='no'> standalone 规定此SVG文件是否是独立的 或者是说含有外部文件的引用 在html中
起名字好难哟
2021/08/30
1.1K3
SVG快速入门小白篇
SVG 图像入门教程
SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
ruanyf
2018/08/09
1.8K0
SVG 图像入门教程
相关推荐
SVG - 动画制作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验