我有一个 Tumblr 帐户,我正在编辑它的 html。我的问题是:如何让我的侧边栏处于某个位置,然后我在页面上向下滚动,它保持在相对于我的浏览器的位置?有关我正在谈论的示例,请单击“提出问题”并查看“类似问题”,然后滚动。我希望它在 CSS 中。我已经尝试了我能想到的一切。
4 回答
将元素 cssposition
属性设置为fixed
和用户top
/left
并将margin
其放置在您想要的位置。像这样:
#sideBar {
position: fixed;
display: block;
top: 50%;
left: 10px;
margin: -100px 0 0 0;
height: 200px;
width: 50px;
}
上面的代码将垂直居中200px
高 div 并将其10px
从左侧边框放置。
更新
这个例子将向您展示如何实现您所追求的! 使用 jquery 演示
更新 (1)
以下 jquery 代码可能是通过对其他 html/css 进行最小更改来实现您想要的最快方法。只需将以下代码粘贴到文档就绪函数中,并按如下所述更改 CSS 的几位。
$(window).scroll(function(){
if($(window).scrollTop() >= 200){
$('anchor3').css({
"margin-top": "80px"
})
$('icon').css({
"margin-top": "10px"
})
$('oldurl').css({
"margin-top": "296px"
})
}
else{
$('anchor3').css({
"margin-top": 300 - $(window).scrollTop()
})
$('icon').css({
"margin-top": 230 - $(window).scrollTop()
})
$('oldurl').css({
"margin-top": 516 - $(window).scrollTop()
})
}
})
您需要将a3text的 CSS 更改为 make margin-top:60px
,删除position
andmargin-left
属性,然后添加display: block
理想情况下,您只需将icon
、anchor3
和oldurl
放在一个容器中div
,这样您就可以在容器上使用 jquery 而不是单独使用三个项目!
但这应该会让你得到你所追求的(在现场 tumblr 网站上使用 FF Scratchpad 进行测试)。
更新 (2)
启动 firefox 并转到页面:http ://thatoneguyoveryonder.tumblr.com/然后打开暂存器 (SHIFT + F4) 复制/粘贴以下代码并按 CTRL+L。然后它应该说一些东西(在草稿本中),例如/* [object Object] */
如果发生这种情况,向下滚动网页并观看魔术发生 - 如果这是你想要的,我会为你解释实现它:)
$('#sidebar').css({
position:'fixed',
top:410,
left:700 + 60 + (($(window).width()-940) / 2),
"z-index":900
});
$(window).scroll(function(){
if($(window).scrollTop() >= 370){
$('#sidebar').css({
top: '30px'
})
}
else{
$('#sidebar').css({
top: 410 - $(window).scrollTop()
})
}
})
我同意, position:fixed with top:0px 和 left:0px 应该这样做。但是要小心使用固定定位进行导航,如果用户的屏幕小于菜单,您将永远无法看到溢出。
模态层的简单解决方案(对于没有点击),将忽略父位置:相对;
.layer-without-click-element {
transform: translate(0%, 0%);
position: fixed;
display: block;
top: 0;
left: 0;
height: 100vh;
width: 100vw;
}
占据窗口的顶部,左侧 0 并覆盖整个宽度和高度浏览器窗口大小,将z-index设置为小于模态。