css 只在网站的一个部分启用浏览器缩放(如谷歌Map)

vngu2lb8  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(180)

我希望能像谷歌Map一样对我的网站产生影响。顶部的工具栏和侧边的工具栏,我不希望它们有任何改变,无论是使用普通的滚轮还是ctrl +滚轮。
然而,我希望能够像谷歌Map一样放大/缩小中心部分,只需要使用滚轮。我如何实现这一点?
这是我正在开发的Angular 应用程序。另外,使用画布更适合这种缩放效果吗?

aor9mmx1

aor9mmx11#

使用jQuery,你可以安装一个$('#container').on('wheel', zoomContainer)处理程序,它使用带scale的转换来调整容器的大小。document.querySelector('#container').onwheel = zoomContainer;
这里是一个概念证明。我还没有想出如何在缩放时裁剪容器。

let scale = 1;
function zoomContainer(event) {
  event.preventDefault();
  if(event.originalEvent.deltaY !== 0) {
    if(event.originalEvent.deltaY < 0) {
      // wheeled up
      scale += 0.1;
    } else {
      // wheeled down
      if(scale > 0.2) {
        scale -= 0.1;
      }
    }
    $('#wrapper').css({transform: 'scale(' + scale+')'});
  }
}

$('#container').on('wheel', zoomContainer);
#page {
  width: 500px;
}
#header, #footer, #leftSide, #rightSide {
  border: 1px gray solid;
  padding: 3px 10px;
}
#leftSide {
  float: left;
  height: 200px;
}
#rightSide {
  float: right;
  height: 200px;
}
#wrapper {
  height: 200px;
  overflow: hidden;
}
#container {
  width: 300px;
  height: 200px;
  padding: 3px 10px;
  overflow: auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="page">
<div id="header">Header</div>
<div>
<div id="leftSide" style="float: left;">Left Sidebar</div>
<div id="rightSide" style="float: right;">Right Sidebar</div>
<div id="wrapper">
<div id="container">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<br /><br />
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br /><br />
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.<br /><br />
</div>
</div>
<div style="clear: both;"></div>
</div>
<div id="footer">Footer</div>
</div>

类似地,您可以使用translate转换来实现平移。

相关问题