【发布时间】:2019-10-14 23:52:22
【问题描述】:
我有一个页面,其中显示了来自数据库查询的一长串结果。我还在这个长列表的右侧显示了谷歌地图。
地图大约 240 像素宽,大约 600 像素长/高。
此地图位于包含地图的容器 DIV (#mapContainer) 中,以及地图画布上方的下拉框。
目前,mapContainer 与页面本身一起滚动。我想做的是让它成为静态/固定元素。所以它开始/显示/放置在我当前在页面上的位置.. 如果我滚动页面.. 地图应该保持固定.. 直到结果的末尾(底部)滚动到..
(我不希望 mapContainer 滚动并覆盖页脚元素/div)
它不会保持固定..
//sticky map placement
$(function () {
var msie6 = $.browser == 'msie' && $.browser.version < 7;
if (!msie6) {
console.log("NOT IE 6");
var top = $('#mapContainer').offset().top;
$(window).scroll(function (event) {
console.log("scrolling.......");
var y = $(this).scrollTop();
if (y >= top) {
$('#mapContainer').addClass('fixed');
console.log("class added");
}else {
$('#mapContainer').removeClass('fixed');
console.log("class removed");
}
});
}
});
第一个 console.log() 输出正常。但 window.scroll() 部分中的 nothign 永远不会触发。
使用的其余代码:
#mapContainer{
display:table;
width:240px;
float:right;
/* sticky map */
position: absolute;
top: 458px;
left: 50%;
/* width: 100px; */
margin-left: 339px;
}
#<span class="skimlinks-unlinked">mapContainer.fixed</span> {
position: fixed;
}
在教程页面本身..他在左侧有一个工具栏..
当您一直滚动到顶部时,它会停止“被固定”..(它会在页面的其余部分滚动到某个点时开始移动)..并且它不会一直向下覆盖页脚也是。
我不清楚为什么 jQuery 部分没有触发.. 我不清楚最后一个样式是做什么用的? (看起来很奇怪)
所有这些绝对的、固定的、相对的、相对于父级、相对于视口..等等......都是令人困惑的。
任何易于阅读/遵循/理解的教程可以让我到达我想去的地方?或者关于我在正确方法上做错了什么的建议?
【问题讨论】:
-
您有没有机会为我们制作一个 Fiddle 让我们看看您在使用什么?另外,您确认 $('#mapContainer').offset().top;是否找到了正确的元素而不是错误?哦,如果您对插件感兴趣:bigspotteddog.github.io/ScrollToFixed
-
当然..我很快模拟了一个基本布局..这里:jsfiddle.net/hkdvd88L/1
-
这是另一个版本的(失败的)教程代码(样式,jQuery..etc)jsfiddle.net/pmurst8e/2
-
也许我不明白你想要什么,但你不能把容器修好吗? jsfiddle.net/bobdye/3juf6wnw
-
那行不通。如果盒子更长(它是什么......它里面有一个谷歌地图。比更宽更长)..你永远看不到它:示例:jsfiddle.net/pmurst8e/3
标签: javascript jquery html fixed elements