【问题标题】:Position Relative to the window相对于窗口的位置
【发布时间】:2013-07-10 08:53:14
【问题描述】:

我有一个 Tumblr 帐户,我正在编辑它的 html。我的问题是:如何让我的侧边栏处于某个位置,然后我在页面上向下滚动,它保持在相对于我的浏览器的位置?有关我正在谈论的示例,请单击“提出问题”并查看“类似问题”,然后滚动。我希望它在 CSS 中。我已经尝试了所有我能想到的。

【问题讨论】:

    标签: html css tumblr


    【解决方案1】:

    将元素 css position 属性设置为 fixed 和用户 top/leftmargin 将其放置在您想要的位置。像这样:

    #sideBar {
        position: fixed;
        display: block;
        top: 50%;
        left: 10px;
        margin: -100px 0 0 0;
        height: 200px;
        width: 50px;
    }
    

    上面的代码会将一个200px 高div 垂直居中,并将其放在左侧边框的10px

    更新

    本示例将向您展示如何实现您的目标! Demo with jquery

    更新(1)

    以下 jquery 代码可能是实现您想要的最快的方法,只需对其他 html/css 进行最少的更改。只需将以下代码粘贴到 document ready 函数中,并按如下所述更改 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 更改为 margin-top:60px,删除 positionmargin-left 属性,然后添加 display: block

    理想情况下,您只需将iconanchor3oldurl 放在一个容器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()
            })
        }
    })
    

    【讨论】:

    • 这导致它被固定在页面中间。
    • 是的,您可以通过更改 topmargin 属性来移动它。您需要使用 javascript 让它从页面中间开始,然后移动到顶部..
    • 我已经用一个指向 JS Fiddle 的链接更新了我的答案,它(我相信)展示了你所追求的。
    • snipt.org/AGff7 好的,因为我不知道我在做什么,这是我正在使用的代码。如果你不熟悉布局,自定义 CSS 在 的末尾
    • 是的,这就是我想要的。
    【解决方案2】:

    你可以使用

    position:fixed
    

    这里是同一个 http://jsfiddle.net/aBaNM/ 的 jsfiddle,即使你滚动正文,红色 div 也应该定位在那里。

    【讨论】:

    • 单击提出问题并向下滚动以了解我的意思。我已经尝试修复了。
    【解决方案3】:

    我同意,position:fixed with top:0px 和 left:0px 应该这样做。不过要小心使用固定定位进行导航,如果用户的屏幕小于菜单,您将永远无法看到溢出。

    【讨论】:

    • 我希望它从我的页面中间开始,然后在我滚动时固定在页面顶部
    • 我想不出只有 css 的方法来解决这个问题,但 waypoints js (imakewebthings.com/waypoints) 或 skrollr (github.com/Prinzhorn/skrollr) 可以很好地解决这个问题。当视口的顶部到达元素的顶部时,您只需切换到固定位置,它应该看起来像粘在顶部。
    猜你喜欢
    • 1970-01-01
    • 2011-01-27
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多