形状切割html,JointJs:将自定义形状html与元素一起缩放(使用paperScroller.zoom)

扩展到Marc_Alx的答案。

调用paper.translate()和paper.scale()在文件上触发'translate'和'scale'事件。

自定义元素可以在他们的自定义ElementView上监听这些事件。

例如,如果缩放滚轮上的活动:

paper.on('blank:mousewheel', (event, x, y, delta) => {

const scale = paper.scale();

paper.scale(scale.sx + (delta * 0.01), scale.sy + (delta * 0.01),);

});

覆盖使您的自定义ElementView的方法,听取他们对纸“规模”事件。

render(...args) {

joint.dia.ElementView.prototype.render.apply(this, args);

this.listenTo(this.paper, 'scale', this.updateBox);

this.listenTo(this.paper, 'translate', this.updateBox);

this.paper.$el.prepend(this.$box);

this.updateBox();

return this;

},

而自定义ElementView的updateBox应该从纸张中检索比例值。

updateBox() {

if (!this.paper) return;

const bbox = this.getBBox({ useModelGeometry: true });

const scale = joint.V(this.paper.viewport).scale();

// custom html updates

this.$box.find('label').text(this.model.get('label'));

this.$box.find('p').text(this.model.get('response'));

// end of custom html updates

this.$box.css({

transform: `scale(${scale.sx},${scale.sy})`,

transformOrigin: '0 0',

width: bbox.width/scale.sx,

height: bbox.height/scale.sy,

left: bbox.x,

top: bbox.y,

});

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值