学习笔记——SVG.js中的use和marker元素的相关方法

news/2024/12/2 14:44:06/

Use()

use()

use元素只是模拟另一个现有元素。主元素上的任何更改都将反映在所有使用实例上。use()的用法非常简单:

var rect = draw.rect(100, 100).fill('#f09')
var use  = draw.use(rect).move(200, 200)

在上述示例的情况下,svg绘图中将显示两个矩形,即原始矩形和使用实例矩形。在某些情况下,可能需要隐藏原始元素。最好的方法是在defs节点中创建原始元素:

var rect = draw.defs().rect(100, 100).fill('#f09')
var use  = draw.use(rect).move(200, 200)

这样,rect元素充当库元素。您可以编辑它,但它不会被渲染。
另一种方法是指向外部SVG文件,只需指定元素id和文件路径。

var use  = draw.use('elementId', 'path/to/file.svg')

当您已经创建了复杂的图像时,这种方法非常有用。
注意,对于外部图像(在您的域之外),可能需要使用XHR加载文件。

Marker()

1)marker()

可以将marker添加到直线、多段线、多边形和路径的每个单独点。有三种类型的标记:start、mid和end。如果start代表第一个点,则end是最后一个点和mid是中间点。

var path = draw.path('M0 0 A50 50 0 0 1 50 50 A50 50 0 0 0 100 100')path.fill('none').move(20, 20).stroke({ width: 1, color: '#ccc' })path.marker('start', 10, 10, function(add) {add.circle(10).fill('#f06')
})
path.marker('mid', 10, 10, function(add) {add.rect(5, 10).cx(5).fill('#ccc')
})
path.marker('end', 20, 20, function(add) {add.circle(6).center(4, 5)add.circle(6).center(4, 15)add.circle(6).center(12, 10)this.fill('#0f9')
})

marker()方法有三种用法。首先,可以在任何容器元素(例如svg、nested、group…)上创建marker。如果您计划多次重用marker,这很有用,因此它将在defs中创建marker,但尚未显示:

var marker = draw.marker(10, 10, function(add) {add.rect(10, 10)
})

其次,可以创建marker并直接应用于其目标元素:

path.marker('start', 10, 10, function(add) {add.circle(10).fill('#f06')
})

这将在def中创建marker并直接应用它。注意,第一个参数定义了marker的位置,并且有四个参数,而第一个示例中有三个参数。

最后,如果在容器元素上创建marker以供重用,则可以将其直接应用于目标元素:

path.marker('mid', marker)

最后,要从目标元素引用中获取marker实例:

path.reference('marker-end')

2)marker.height()/width()

定义marker的高度/宽度:

marker.height(10)
marker.width(10)

3)marker.ref()

默认情况下,marker的refX和refY属性分别设置为宽度和高度值的一半。要不同地定义marker的refX和refY,请执行以下操作:

marker.ref(2, 7)

4)marker.size()

定义marker宽度和marker高度属性:

marker.size(10, 10)

5)marker.update()

更新marker的内容,将清除marker元素现有内容,并添加一个函数作为第一个参数:

marker.update(function(add) {add.circle(10)
})

6)marker.orient()

定义orient(朝向)属性:

marker.orient(50)

视频讲解

视频讲解


http://www.ppmy.cn/news/78617.html

相关文章

大项目参考地址​编辑 大项目接口实现

目录 大项目参考地址​编辑 口语考试 纸笔口语考试通常会安排在笔试前一周至笔试后一周的任意一天,机考口语考试通常会安排在笔试当天或者与笔试日期尽可能相邻的日期。根据考务安排的需要,在特殊情况下,口试日期有可能超出此区间&#xff0…

ES6之生成器

文章目录 前言一、生成器是什么?二、生成器总结 前言 生成器 一、生成器是什么? 生成器就是一个特殊的函数,实现异步编程。格式function *名称(){...} (这个*靠近function写,靠近名称写,或者两边空格都不靠近均正确)…

1142 Maximal Clique(50行代码+超详细注释)

分数 25 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the clique are adjacent. A maximal clique is a clique that cannot be extended by including one …

一分钟带你了解网络安全(如何自学)

一、关于网络安全职业 早些年,网络安全刚起步,作为一个网络安全从业人员,最苦恼的事情就是每当回到村里变成狗蛋儿的时候,七大姑八大姨,邻里乡亲,村子里的各种人都会来找你,狗蛋儿,你…

对Android 说Hello ——Qt For Android

1. Qt 安卓环境搭建 平台:Qt5.15.2 官网教程: Getting Started with Qt for Android | Qt 5.15 网上的教程: qt5.15.2配置android_加油吧,小杜的博客-CSDN博客 注意 :注意ndk的路径中不能有空格,我之前…

一、尚医通预约下单

文章目录 一、预约下单1、需求分析1.1订单表结构1.2下单分析 2、搭建service-order模块2.1 搭建service-order模块2.2 修改配置2.3 启动类2.4配置网关 3、添加订单基础类3.1 添加model3.2 添加Mapper3.3 添加service接口及实现类3.4 添加controller 4、封装Feign调用获取就诊人…

CPU和GPU前端的应用

1、CPU(英文Central Processing Unit 中央处理器) CPU(中央处理器)是一种通用的处理器,其主要任务是执行计算机程序中的指令和序列。它能够处理复杂的逻辑判断、分支、跳转、内存访问等操作,因此在执行大多…

面试:CSS清除浮动的方式

添加额外标签 <div class"parent">//添加额外标签并且添加clear属性<div style"clear:both"></div>//也可以加一个br标签 </div> 父级添加overflow属性&#xff0c;或者设置高度建立伪类选择器清除浮动 //在css中添加:after伪元素…