【问题标题】:Change Div Position from Absolute to Fixed with Horizontal Scroll使用水平滚动将 Div 位置从绝对更改为固定
【发布时间】:2013-07-31 11:42:49
【问题描述】:

我有一个使用水平滚动插件水平滚动的网站https://github.com/brandonaaron/jquery-mousewheel。那里没有问题。

我的问题是,我有一个 250 像素宽的 div,高度为 100%,从屏幕右侧开始 100 像素。当我滚动(水平)时,div 向左滚动并最终从屏幕上消失。 div 的 Position 设置为 Absolute。我想要的是,一旦 div 到达浏览器窗口的左侧,div 就会固定在屏幕的左侧。

我猜我需要使用 JS 来更改 div 的 CSS,一旦它到达屏幕上的特定位置(最左侧)。我见过不少网站通过垂直滚动来实现这一点,菜单栏一旦到达顶部就会固定在屏幕顶部。菜单可能从页面的一半开始并在滚动时向上移动。我只是想在水平面上达到同样的效果。

一般来说,我对代码比较陌生,对 Javascript 也是全新的。我可能咬得比我能咀嚼的多,但我喜欢挑战。感谢任何人的帮助。

我要更改的 CSS 代码是

#header {
    width: 250px;
    background: rgba(22,22,22,.85);
    height: 100%;
    position: absolute;
    margin-left: calc(100% - 350px);
    z-index: 999;
}

然后改成

#header {
    width: 250px;
    background: rgba(22,22,22,.85);
    height: 100%;
    position: fixed;
    margin-left: 0px;
    z-index: 999;
}

【问题讨论】:

  • 如果您提供一些您所做的工作,我的意思是代码.. 那么我们绝对可以帮助您.. 这似乎不是什么大问题,但您需要向我们展示一些代码以便我们可以处理有了它..
  • 嗨考希克。感谢您的回复。我在上面的问题中添加了我认为需要更改的 CSS。我希望这会有所帮助。

标签: javascript html css horizontal-scrolling


【解决方案1】:

根据我从您的问题中了解到的内容,这是我尝试过的。是的,我有用户 javascript..

HTML:

<div id="headerSlideContainer">

    <div id="headerSlideContent">

        Header content goes here!

    </div>
    <div id="new">
        Other Contents
    </div>

</div>

CSS:

#headerSlideContainer {
    position: absolute;

    top:0px;
    width: 100%;

   height:1000px;
    background: black;
}
#headerSlideContent {
    width: 250px;
    background-color:red;
    height: 100%;
    position: fixed;
    margin-left: 0px;
    z-index: 999;
}

#new{
    top:60px;
    z-index:2;
    height:100px;
    background:Orange;
    position:absolute;
    color: white;

}

和js:

$(function() {

    var bar = $('#headerSlideContainer');
    var top = bar.css('top');
    $(window).scroll(function() {

        if($(this).scrollright() > 100) {
            bar.stop().animate({'top' : '5px'}, 500);
        } else {
            bar.stop().animate({'top' : top}, 500);
        }
    });
});

根据需要更改 scrollright 数量。如果 scrollright 不起作用,请尝试 scrollleft()。如果您有任何问题,请告诉我。

【讨论】:

  • 谢谢伙计。欣赏答案。我会让你知道我的进展情况以及它是否适合我。
  • 嘿,伙计。现在正在玩它。检查此链接以获取我正在使用的横向滚动的虚拟对象。只是想确保我很好地解释了这个场景。 healthyselfie.com/photosite您可能需要在 Chrome 中加载它,因为我目前只是在玩游戏并且只在那里测试过。
  • K.. 这让我无法理解这个场景。好吧,我提到的上述技巧肯定会奏效,可能需要根据您的要求进行一些返工.. 和你还必须使用 z-index,这将是锻炼的主要部分。你知道该怎么做,或者我应该做些什么......:)
  • 任何时候兄弟...嗯..一切顺利...:)
【解决方案2】:

这是一篇解释如何垂直执行此操作的帖子,但同样的概念也应适用于您的情况。

教程:http://jqueryfordesigners.com/fixed-floating-elements/

演示:http://jqueryfordesigners.com/demo/fixedfloat.html

【讨论】:

  • 感谢伙伴的链接。我会检查一下,让你知道我的进展情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
相关资源
最近更新 更多