SVG入门-裁剪和遮罩

news/2024/7/3 14:33:52

前言

擦除已经创建的元素的部分内容,最初看起来有点矛盾。但是如果你打算在SVG中创建一个半圆形,你将很快发现下面的属性的作用了。

Clipping用来移除在别处定义的元素的部分内容。在这里,任何半透明效果都是不行的。它只能要么显示要么不显示。

Masking允许使用透明度和灰度值遮罩计算得的软边缘。

裁切

我们在一个圆形的基础上创建上面提到的半圆形:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <clipPath id="cut-off-bottom">
      <rect x="0" y="0" width="200" height="100" />
    </clipPath>
  </defs>

  <circle cx="100" cy="100" r="50" fill="red" clip-path="url(#cut-off-bottom)" />
</svg>

在(100,100)创建一个圆形,半径是50。属性clip-path引用了一个带单个rect元素的<clipPath>元素。它内部的这个矩形将把画布的上半部分涂红。注意,clipPath元素经常放在一个defs元素内。

然而,该rect不会被绘制。它的象素数据将用来确定:圆形的哪些像素需要最终呈现出来。因为矩形只覆盖了圆形的上半部分,所以下半部分将消失了:

在这里插入图片描述
现在我们已经有了一个半圆形,不用处理弧形路径元素。对于这个剪切,clipPath内部的每个路径都会被检查到、与它的描边属性一起被估值、变形。然后目标的位于clipPath内容的结果的透明度区域的每一块都不会呈现。颜色、不透明度都没有这种效果,因为它们不能让一部分彻底消失。

遮罩

遮罩的效果最令人印象深刻的是表现为一个渐变。如果你想要让一个元素淡出,你可以利用遮罩效果实现这一点。

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <linearGradient id="Gradient">
      <stop offset="0" stop-color="white" stop-opacity="0" />
      <stop offset="1" stop-color="white" stop-opacity="1" />
    </linearGradient>
    <mask id="Mask">
      <rect x="0" y="0" width="200" height="200" fill="url(#Gradient)"  />
    </mask>
  </defs>

  <rect x="0" y="0" width="200" height="200" fill="blue" />
  <rect x="0" y="0" width="200" height="200" fill="yellow" mask="url(#Mask)" />
</svg>

你看到有一个蓝色填充的矩形在底层,一个黄色填充的矩形在上层。后者有一个mask属性指向一个mask元素。mask元素的内容是一个单一的rect元素,它填充了一个透明到白色的渐变。作为红色矩形继承mark内容的alpha值(透明度)的结果,我们看到一个从蓝色到黄色渐变的输出:
在这里插入图片描述


http://www.niftyadmin.cn/n/2951680.html

相关文章

SVG入门-基本变换

前言 SVG元素的形变都会用到一个元素属性transform&#xff0c;跟CSS的transform的形变差不多。 HTML transform和SVG transform SVG自带transform属性&#xff0c;例如&#xff1a; <svg width"200" height"150"><rect x"30" y&qu…

5G基站ip如何获取

5G基站的IP地址可以通过以下几种方式获取: 从运营商处获取&#xff0c;即通过联系运营商的客服人员获取。通过网络扫描工具扫描局域网中的IP地址来查找。通过登录管理后台查看网络拓扑结构。通过网络监测和分析软件来获取。 注意: 不同运营商,不同基站的 IP地址都不一样,请确认…

LeetCode No.168. Excel表列名称

class Solution { public:string convertToTitle(int n) {string ans "";while (n > 0) {n - 1; //重点ans.push_back(A (n % 26));n / 26;}reverse(ans.begin(), ans.end());return ans;} };类似问题&#xff1a;171. Excel表列序号 class Solution {int titl…

css中的各种定位

static&#xff1a;静态定位是position的默认值&#xff0c;元素框正常生成&#xff0c;也就是没有定位时的正常显示。 relative&#xff1a;相对定位 用法一&#xff1a;元素相对自身的原位置偏移某个距离&#xff0c;但是原本的空间依旧保留&#xff0c;表现为空白。 用法二&…

druidYAML配置文件打开监控, 给个示例

下面是一个简单的 druid YAML 配置文件示例&#xff0c;用于打开监控&#xff1a; server:type: "simple"host: "0.0.0.0"port: 8082monitoring:druid.emitter:type: "http"host: "localhost"port: 8090druid.monitor:type: "log…

需求入门:原型开发简介

原型开发简介转自&#xff1a;http://www.cnblogs.com/zhoujg/archive/2009/11/15/1603450.html 为什么需要原型 建立原型的主要原因是为了解决在产品开发的早期阶段不确定的问题&#xff0c;利用这些不确定性来判断系统中哪一部分需要建立原型和希望从用户对原型的评价中获得什…

制度化的发布流程

由于系统上线后程序修改十分频繁,经常出现上午修改,下午就要发布的程序,往往需要发布的程序没有经过测试就直接发布到生产环境了,但由于一直没有出现什么问题,就习以为常了.虽然,在潜意识里面认为:没有经过QA/客户的验收测试就直接发布生产环境,风险是非常高的,但因为没有出现问…