一、SVG.Mask 覆盖物设置

1.

var draw = SVG('svg1').size(300, 300);
//SVG.Mask 覆盖物设置
var ellipse = draw.ellipse(80, 40).move(10, 10).fill('#fff');
var mask = draw.mask().add(ellipse);
//添加到矩形 maskWith()
var rect = draw.rect(100, 100);
rect.maskWith(mask);
//获取mask对象
var mask2 = rect.masker.fill('#fff');
console.info(mask2); //获取形状的SVG.Mask 对象
//mask2.fill('#000');
//删除 mask对象
//mask2.remove();
//删除指定形状的mask内容
//rect.unmask();

2.

var draw = SVG('svg1').size(300, 300);
//SVG.Mask 覆盖物设置,mask()创建mask对象
var ellipse = draw.ellipse(80, 40).move(10, 10).fill({ color: '#fff' });
var text = draw.text('SVG.JS').move(10, 10)
.font({ size: 36 })
.fill({ color: 'red' });
//var mask = draw.mask().add(text).add(ellipse);
var mask = draw.mask().add(ellipse).add(text);
var rect = draw.rect(200, 200);
rect.maskWith(mask);

3.

var draw = SVG('svg1').size(300, 300);
//SVG.Mask 覆盖物设置,mask的颜色会在原有颜色的基础上混合
var circle = draw.circle(50).fill('#fff');
var mask = draw.mask();
mask.add(circle.center(35, 35));
mask.add(circle.clone().center(70, 70).size(70).fill('#ccc'));
mask.add(circle.clone().center(105, 115).size(50).fill('#333')); var rect = draw.rect(200, 200).move(20, 20).fill('#f06');
rect.maskWith(mask);
//绑定事件
rect.on('mouseover', function () {
this.animate(300, '<>').fill('#0f9');
});
rect.on('mouseout', function () {
this.animate(300, '<>').fill('#f06');
});

4.

//SVG.Mask 覆盖物设置,maskWith() 使用其他元素覆盖
var gradient = draw.gradient('linear', function (stop) {
stop.at({ offset: 0, color: '#000' });
stop.at({ offset: 1, color: '#fff' });
})
var ellipse = draw.ellipse(80, 40).move(10, 10).fill({ color: gradient });
var rect = draw.rect(200, 200);
rect.maskWith(ellipse);

二、SVG.ClipPath 裁剪元素

1.

var draw = SVG('svg1').size(300, 300);
//SVG.ClipPath 裁剪元素
//重叠的部分会覆盖掉
//裁剪元素和掩蔽元素完全相同。唯一不同的是裁剪元素将采用裁剪元素的几何结构。因此,只有在输入裁剪元素时才触发事件,而用掩码将屏蔽元素触发事件。另一个区别是,面具可以定义透明度与填充色和clippaths不行。
//clip() 创建裁剪对象
var ellipse=draw.ellipse(80,40).move(10,10);
var text=draw.text('SVG.JS').move(10,10).font({size:36});
var clip=draw.clip().add(ellipse).add(text);
var rect=draw.rect(200,200);
//clipWith() 将裁剪绑定到图形
rect.clipWith(clip); //获取clipPath对象
rect.clipper.move(10, 10);
//删除clipPath对象
clip.remove()
//清除指定图形的裁剪
rect.unclip();

2.

var draw = SVG('svg1').size(300, 300);
var circle = draw.circle(50).fill('#fff');
var clip = draw.clip();
clip.add(circle.center(35, 35));
clip.add(circle.clone().center(70, 70).size(70).fill('#ccc'))
clip.add(circle.clone().center(90, 30).size(30).fill('#999'))
clip.add(circle.clone().center(105, 115).size(50).fill('#333')) var rect = draw.rect(100, 100).move(20, 20).fill('#f06')
rect.clipWith(clip)
//绑定的事件,只有鼠标进入图形中才会触发,而不是进入元素范围
rect.on('mouseover', function () {
this.animate(300, '<>').fill('#0f9')
})
rect.on('mouseout', function () {
this.animate(300, '<>').fill('#f06')
})

更多:

SVG.js 图案使用和use引用

SVG.js 颜色渐变使用

Svg.js 图片加载

SVG.js Mask覆盖和ClipPath裁剪的更多相关文章

  1. SVG.js 元素操作整理(一)

    一.属性操作Attributes var draw = SVG('svg1').size(300, 300); //attr() 属性操作 //设置属性的值 var rect = draw.rect( ...

  2. SVG.js 引用获取整理

    一.SVG.get() 根据id获取元素 var draw = SVG('svg1').size(300, 300); var circle = draw.circle(50); circle.fil ...

  3. SVG.js Marker标记和自定义标签

    一.SVG.Marker 添加标记 SVG.Marker 标记可以被添加到一个线,折线的各点,多边形和路径.有三种类型的标记:开始,中间和结束.如果开始表示第一个点,则结束中间的最后一点和中间点. v ...

  4. SVG.js 图案使用和use引用

    一.SVG.Pattern 图案设置 var draw = SVG('svg1').size(300, 300); //SVG.Pattern 图案设置 var pattern = draw.patt ...

  5. SVG.js 文本绘制整理

    1.SVG.Text var draw = SVG('svg1').size(300, 300); //画文字内容展示 //var text = draw.text('中文内容测试\n换行处理'); ...

  6. svg.js教程及使用手册详解(二)

    上篇简要介绍了svg.js的基本信息和基本用法,这篇开始详细讲解svg.js的用法. SVG元素 SVG元素主要包括各种形状.线条.文本.路径. 矩形——Rect Rects有两个参数,即矩形的宽度和 ...

  7. svg.js教程及使用手册详解(一)

    做毕设的时候,因为要使用到画图和自定义动画,所以接触到了SVG.网上关于SVG和Canvas的对比很多,具体的辨析这里就不赘言.网上关于SVG的所谓教程基本上都是SVG本身,但是却没有一个针对svg. ...

  8. SVG操作插件:SVG.JS 个人提取部分实用中文文档

    先贴出github地址:https://github.com/svgdotjs/svg.js(也就是原文档的说明和文件的下载地址) 创建SVG文档 var draw = SVG('drawing'). ...

  9. 前端技术-svg简介与snap.svg.js开源项目的使用

    前言-为什么学习snap.svg.js 前阵子webAPP的技术群里有人感觉到svg+animate的形式感觉很炫,矢量图任意放大且不需要下载图片,并且在手机端效果流畅. (矢量图与位图最大的区别是, ...

随机推荐

  1. Java多线程及并发

    进程:它是内存中的一段独立的空间. 线程:位于进程中,负责当前进程中的某个具备独立运行资格的空间. 进程是负责整个程序的运行,而线程是程序中具体的某个独立功能的运行.一个进程中至少应该有一个线程. 多 ...

  2. 【Java】 大话数据结构(7) 循环队列和链队列

    本文根据<大话数据结构>一书,实现了Java版的循环队列.链队列. 队列:只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 1.循环队列 队列的顺序储存结构:用数组存储队列,引入 ...

  3. 解决vue项目打包后背景图片找不到的问题

    在build->webpack.base.conf.js里添加一句代码: 具体位置在module->rules下 publicPath:"../../",

  4. 使用Django简单编写一个XSS平台

    1) 简要描述        原理十分简单2333,代码呆萌,大牛勿喷 >_< 2) 基础知识 XSS攻击基本原理和利用方法 Django框架的使用 3) Let's start 0x01 ...

  5. 使用 Maven 来管理项目 & 从 0 开始搭建 Maven 项目

    maven 是 apache 的一个开源软件,纯 Java 编写的,专门用于管理 Java 项目的一个工具. maven 就是一个工具而已,用不用都不耽误你刷刷的敲代码,那为什么我们还要学习它呢? 那 ...

  6. Odoo访问权限(一)

    Odoo访问权限(一) 四个ODOO权限管理层次 一. Odoo 菜单级别: 即,不属于指定菜单所包含组的用户看不到该菜单.不安全,只是隐藏菜单,若用户知道菜单ID,仍然可以通过指定URL访问 二. ...

  7. OSNIT信息收集分析框架OSRFramework

     OSNIT信息收集分析框架OSRFramework OSNIT是一种从公开的信息资源搜集信息的有效方式.Kali Linux集成了一款专用分析工具集OSRFramework.该工具集包含多个常用工具 ...

  8. C#开发Unity游戏教程之判断语句

    C#开发Unity游戏教程之判断语句 游戏执行路径的选择——判断 玩家在游戏时,无时无刻不在通过判断做出选择.例如,正是因为玩家做出的选择不同,才导致游戏朝着不同的剧情发展,因此一个玩家可以对一个游戏 ...

  9. Codeforces.838D.Airplane Arrangements(思路)

    题目链接 \(Description\) 飞机上有n个位置.有m个乘客入座,每个人会从前门(1)或后门(n)先走到其票上写的位置.若该位置没人,则在这坐下:若该位置有人,则按原方向向前走直到找到空座坐 ...

  10. HDU 5813 Elegant Construction 构造

    Elegant Construction 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5813 Description Being an ACMer ...