gpt4 book ai didi

javascript - 使用 CSS 通过
限制鼠标点击

转载 作者:太空宇宙 更新时间:2023-11-04 15:22:28 25 4
gpt4 key购买 nike

我有一个显示两件事的屏幕。

  1. Google 街道 map 是使用 Openlayers 呈现的。
  2. 呈现一个侧面板以显示国家列表及其年度人口增长。

下面的代码解释了这个想法。代码是用 HTML 编写的。

<body>
<div id="map" style="z-index:0;"></div>
<div id="sidePanel" style="position:absolute;
top:0px;
left:0px;
width:30%;
height:100%;
z-index:1;
background-color:black">
//content in this div will be filled dynamically through ajax call
</div>
</body>

一切都完美呈现。但是,当我单击 #sidepanel 并按住鼠标单击时,如果我拖动,则 #map 会收到鼠标单击并且屏幕上会出现“平移操作”。

我不希望“#map”在点击 #sidepanel 时收到鼠标点击。此外,当我将鼠标放在 #sidepanel 上并双击该 div 时,#map 正在接收双击并且正在进行缩放操作。我想将 #map#sidepanel 分开。

我仅在使用 Firefox 和 Chrome 浏览器时遇到此问题。 IE 可以很好地满足我的要求。请提出一些想法。感谢您的耐心等待。

这是我的完整代码

<html>
<head>
<title>Map</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&v=3.6"></script>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
</head>
<body onload="RenderGoogleMap();">
<div id="Map_Screen" style="z-index: -1;"></div>
<div id="sidePanel" style="overflow:hidden;position:absolute;top:0px;left:0px;width:35%;height:100%;background-color:black;"></div>
</body>
</html>
<script type="text/javascript">
function RenderGoogleMap() {
var options = {
projection : "EPSG:900913",
units : "m",
maxResolution : 156543.0339,
maxExtent : new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34, 20037508.34),
displayProjection : new OpenLayers.Projection("EPSG:4326")
};
map = new OpenLayers.Map('Map_Screen', options);
var gmap = new OpenLayers.Layer.Google("GoogleMap", { 'sphericalMercator' : true, numZoomLevels : 18 });
map.addLayers([ gmap ]);
map.zoomTo(3);
var control = map.addControl( new OpenLayers.Control.Navigation() );
control.activate();
}
</script>

最佳答案

可能是因为您将侧面板的位置设置为绝对位置,结果侧面板 div 位于 map 顶部?尝试从侧面板 CSS 代码中删除 position:absolute

更新:

问题是您的 map 宽度设置为 100%,而您的侧面板覆盖在它上面。我没有这样做,而是将侧面板保持在 35% 的宽度,添加了 2% 的右边距,并将 map 设置为 62%。这样,侧面板和 map 不会重叠,因此当您单击侧面板时, map 不会受到任何影响。

查看代码:

<html>
<head>
<title>India</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&v=3.6"></script>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">
function RenderGoogleMap() {
var options = {
projection : "EPSG:900913",
units : "m",
maxResolution : 156543.0339,
maxExtent : new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34, 20037508.34),
displayProjection : new OpenLayers.Projection("EPSG:4326")
};
map = new OpenLayers.Map('Map_Screen', options);
var gmap = new OpenLayers.Layer.Google("GoogleMap", { 'sphericalMercator' : true, numZoomLevels : 18 });
map.addLayers([ gmap ]);
var control = map.addControl( new OpenLayers.Control.Navigation() );
control.activate();
}
</script>
</head>
<body onload="RenderGoogleMap();">
<div id="sidePanel" style="float:left;width:35%;margin-right:2%;height:100%;background-color:black;"></div>
<div id="Map_Screen" style="float:left;width:62%;"></div>
</body>
</html>

更新 2:

如果您想要叠加层但不希望侧面板操作 map ,请尝试此代码。它将 map z-index 设置为 -1,将叠加 z-index 设置为 999。

<html>
<head>
<title>Map</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&v=3.6"></script>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
</head>
<body onload="RenderGoogleMap();">
<div id="Map_Screen" style="z-index: -1;"></div>
<div id="sidePanel" style="z-index:999;overflow:hidden;position:absolute;top:0px;left:0px;width:35%;height:100%;background-color:black;"></div>
</body>
</html>
<script type="text/javascript">
function RenderGoogleMap() {
var options = {
projection : "EPSG:900913",
units : "m",
maxResolution : 156543.0339,
maxExtent : new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34, 20037508.34),
displayProjection : new OpenLayers.Projection("EPSG:4326")
};
map = new OpenLayers.Map('Map_Screen', options);
var gmap = new OpenLayers.Layer.Google("GoogleMap", { 'sphericalMercator' : true, numZoomLevels : 18 });
map.addLayers([ gmap ]);
map.zoomTo(3);
var control = map.addControl( new OpenLayers.Control.Navigation() );
control.activate();
}
</script>

关于javascript - 使用 CSS 通过 <div> 限制鼠标点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14418413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com