首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在放大和缩小时处理当前数据

如何在放大和缩小时处理当前数据
EN

Stack Overflow用户
提问于 2017-08-30 16:29:51
回答 1查看 43关注 0票数 0

当鼠标滚轮滚动时,如何确保图表线画布可以通过鼠标位置进行放大和缩小?

在我的图表线画布中,我没有使用chart.js、d3.js或其他库。我希望它可以围绕鼠标位置放大和缩小,但值会随着放大和out.How而变化,以确保中心点-鼠标位置-不会受到坐标系变化的影响。

EN

回答 1

Stack Overflow用户

发布于 2017-08-30 16:38:22

如果您使用的是CSS transform属性scale(),那么您可以设置另一个名为transform-origin的规则。如果您在应用scale()之前将其设置为屏幕中心,则页面将正确放大。

代码语言:javascript
复制
// performs the change of origin and scales the body element
zoom(scale, mouse) {

    return $('body').css('transformOrigin', getMouse(mouse))
        .css('transform', 'scale('+scale+')');

}

// returns a string of the current center of screen
getMouse() {
    let midX = window.innerWidth / 2;
    let midY = window.innerHeight / 2;
    let x = $('body').css('left').split('p')[0];
    let y = $('body').css('top').split('p')[0];

    return String(midX - x + 'px ') + String(midY - y + 'px');
}

然后,您可以使用bind()方法实现滚动激活:

代码语言:javascript
复制
let scale = 1;
let scrollFactor = -0.1;
$(window).bind('wheel mousewheel', function(e){

    let scroll = e.originalEvent.deltaY;
    let sign = Math.sign(scroll);
    let newScale = Math.round((scale + scrollFactor * sign)*100)/100;

    // you could set an if statement here before calling zoom() to
    // set a lower and higher zoom limit
    zoom(newScale, [e.pageX, e.pageY]);


});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45955554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档