博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SVG.js Mask覆盖和ClipPath裁剪
阅读量:7025 次
发布时间:2019-06-28

本文共 2742 字,大约阅读时间需要 9 分钟。

一、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')})

更多:

转载地址:http://fosxl.baihongyu.com/

你可能感兴趣的文章
mysql客户端(Navicat)远程登录操作遇到问题1142 - XXX command denied to ×××
查看>>
C# -- 把json字符串转为对象并读取各属性的值
查看>>
MVC5+EF6 入门完整教程五
查看>>
SqlServer一张表数据导入另一张表,收藏使用,工作中更新数据错误很有用
查看>>
基于FormsAuthentication的用户、角色身份认证
查看>>
Quartz定时任务学习(一)简单任务
查看>>
mapreduce程序来实现分类
查看>>
微信接口保存
查看>>
FPGA 状态机设计
查看>>
ASP.NET MVC5---通过QueryString传值
查看>>
C++中的内存管理
查看>>
Bootstrap系列 -- 27. 下拉菜单对齐方式
查看>>
关于 android百度地图 调用 地理位置 经纬度坐标,只调用一次的解决方法,通知栏不总是 搜索 GPS 。。。...
查看>>
Oracle 创建 DBLink 的方法
查看>>
后Hadoop时代的大数据架构(转)
查看>>
vs2012连接sql2008(错误类型:Could not load file or assembly)
查看>>
三种初始化
查看>>
Myeclipse2014 激活 (包括方法和工具)
查看>>
兼容的网页宽度margin padding
查看>>
Git中的文件状态和使用问题解决
查看>>