【问题标题】:Allowing Fixed DIV to continue to move horizontally允许 Fixed DIV 继续水平移动
【发布时间】:2013-03-15 23:02:36
【问题描述】:

小提琴:http://jsfiddle.net/EzuTT/

CSS

#bottomfadebar {
    position:fixed;
    z-index: 2; 
    bottom: 0px;
    width:267px;
    height:84px;
    background-color:#666;
}
#content{
    width:2000px;
    background-color:#ccc;
}

HTML

<div id="content">
    This is all of the data. Theres lots of it.  so the user will have to scroll horizontally.  the bottom bar should go out of view as you scroll further to the right because there's so much data.  the bottom bar should only stay "fixed" to the bottom, not to the left hand corner.
</div>

<div id="bottomfadebar">
    THIS SHOULD SCROLL HORIZONALLY AS THE PAGE DOES
</div>

最终,当您向右滚动以查看更多内容 div 时,#bottomfadebar div 将继续停留在左下角。我试图弄清楚如何让bottomfadebar DIV滚动到屏幕左侧,但仍然像当前一样固定在窗口底部。

-----编辑!!!

好的,所以我有点夸大其词,因为我认为它很容易解释,但后来我意识到绝对因素会出现。它实际上应该位于居中的 NAV div 内。

http://jsfiddle.net/u5GuG/4/

它确实需要在“容器”区域内保持绝对左侧:0....我应该指定的,我很抱歉。不知道该怎么做。

【问题讨论】:

  • 使用position:absolute?
  • absolute 代替fixed 怎么样
  • 好的,所以我有点夸大其词,因为我认为它很容易解释,但后来我意识到绝对因素会出现。它实际上应该位于居中的 NAV div 内。 jsfiddle.net/u5GuG/4 它确实需要坚持“容器”区域内的绝对左侧:0....我应该指定,我很抱歉。不知道该怎么做。
  • 看看这个:jsfiddle.net/DS6yg/1。注意页面加载时,一切都很好地居中,400 px,页脚粘在底部。现在使用您的 jfiddle 窗口并使输出窗口更小,以便获得水平滚动条。如果向右滚动,您会看到页眉和内容按原样滚动离开页面,页脚不会水平滚动离开页面。我只是想让页脚滚动与页眉和内容保持一致。很抱歉没有很好地解释这一点!

标签: css html fixed frames


【解决方案1】:

如果你不介意的话,我会使用一点 jQuery ;)

$(window).scroll(function() {
    $("#bottomfadebar").css("left", (-1 * $(window).scrollLeft()) + "px");
});

小提琴:http://jsfiddle.net/inti/Gqpmf/

更新:现在我想我明白了,您希望 #bottomfadebar 在您滚动页面时沿屏幕底部滚动。

$(window).scroll(function() {
    var window_width = $(window).width(),
        window_scrollleft = $(window).scrollLeft(),
        content_width = $("#content").width(),
        bottomfadebar_width = $("#bottomfadebar").width(),

        content_path = content_width - window_width,
        bottomfadebar_path = window_width - bottomfadebar_width,
        bottomfadebar_left = 0;

//  Equations:
//  content_pos = window_scrollleft / content_path;
//  bottomfadebar_pos = bottomfadebar_left / bottomfadebar_path;
//  content_pos = bottomfadebar_pos;

    bottomfadebar_left = window_scrollleft / content_path * bottomfadebar_path;

    $("#bottomfadebar").css("left", bottomfadebar_left + "px");
});

小提琴:http://jsfiddle.net/inti/Gqpmf/2/

更新 2: 我想我还是不明白,但如果你想让它坚持[bottom,center] 屏幕位置,那么这个 css 就可以了:

#object {
    position: fixed;
    bottom: 0;
    left: 50%;
    width: 200px;
    margin-left: -100px; /* half of the width in negative */
}

小提琴:http://jsfiddle.net/inti/Gqpmf/3/

更新 3: 真的是我最后的猜测。如果您希望一个项目绝对定位在另一个元素内并相对于它,您必须将容器元素的位置设置为相对(或绝对)。

#container {
    position: realtive;
}
#object { /* inside #container */
    position: absolute;
    left: 0; /* will stick to the left side of #container */
    bottom: 0; /* will stick to the bottom side of #container */
}

【讨论】:

  • CSS 对于他正在尝试做的事情可能更容易。 jQuery 似乎有点矫枉过正,也许吧?
  • 实际上,如果没有一些代价高昂的折衷折衷方案,使用 CSS 做到这一点要困难得多。这个 jQuery 非常清晰和简单,你可能会称它为矫枉过正:) 这不是最好的解决方案,但它是有效的。
  • 嘿 Aorcsik - 实际上我没有提到它需要驻留在容器中,我认为修复将是通用的。看一下这个。 jsfiddle.net/Gqpmf/1 有什么想法吗?
  • @aorcsik 不完全是,它停留在底部并从左到右(虽然那很酷:)),我需要它能够像人们一样滚动页面的左侧向右滚动。我真正寻找的是它永远不会改变页面上的位置。它绝对像一个“绝对”位置,但需要注意的是它的“绝对性”是相对于它嵌入的 div 或表格......所以它不会粘在实际 Web 浏览器的左下角,而是粘在到一个居中的表格的左手角,我猜是浏览器的底部.... thx much!!
  • @JohnEgbert 不确定这次我是否明白了,但也许(见更新)。我仍然看不到你想要达到的视觉目标是什么,省略 css 和 html 部分,只说你想看到的。
【解决方案2】:

我修改了你 Fiddle 中的代码。

我将 bottomfadebar 移动到内容内部,将内容高度更改为 100%,并将 bottomfadebar 更改为绝对高度

http://jsfiddle.net/EzuTT/1/ - 这就是你要找的吗?

【讨论】:

  • 感谢贾斯汀,实际上我有点搞砸了,因为我认为这很容易解释,但后来我意识到绝对因素会出现。它实际上应该位于居中的 NAV div 中。 jsfiddle.net/u5GuG/4 它确实需要坚持“容器”区域内的绝对左侧:0 ......我应该指定,我很抱歉。不知道该怎么做。
  • 我还是有点困惑......只是因为你的要求似乎已经在你的新 Fiddle 中完成了
  • 好的,让我简化一下。看看这个全新的小提琴。 jsfiddle.net/LVBVq 所以表格宽度为 400 且居中。如果我当前在“thefooter”上使用了底部 0,它会完美地将其扔到页面底部(使用正确的其余语法)。但是如果查看器的分辨率小于 400 宽度,就会出现水平滚动条。因此,如果我们水平滚动,“thefooter”会停留在“thecontent”滚动离开屏幕左侧的位置。最终,我只是想让“thefooter”相对于其余数据滚动滚动。
  • 更好的是@doitlikejustin,看看这个:jsfiddle.net/DS6yg/1。注意页面加载时,一切都很好地居中,400 px,页脚粘在底部。现在使用您的 jfiddle 窗口并使输出窗口更小,以便获得水平滚动条。如果向右滚动,您会看到页眉和内容按原样滚动离开页面,页脚不会水平滚动离开页面。我只是想让页脚滚动与页眉和内容保持一致。很抱歉没有很好地解释这一点!
  • 哦,我现在明白了。好的...这工作:) jsfiddle.net/DS6yg/2 这就是你要找的吗?
【解决方案3】:

只需将底部淡入淡出位置切换为“绝对”。由于您已经设置了 'bottom:0' ,因此它将粘在页面底部。当您水平滚动时它不会保持可见,因为绝对定位的元素将默认为“left:0”,除非您另有指定(除非在旧版本的 IE(我认为是 7 及以下)中您可能需要声明“left:0” ;' 来避免奇怪的渲染。

【讨论】:

  • 好的,所以我有点夸大其词,因为我认为它很容易解释,但后来我意识到绝对因素会出现。它实际上应该位于居中的 NAV div 内。 jsfiddle.net/u5GuG/4 它确实需要坚持“容器”区域内的绝对左侧:0....我应该指定,我很抱歉。不知道该怎么做。
【解决方案4】:

不要使用固定定位,而是使用 absolute 并将 left 和 bottom 属性设置为 0。 这会将 div 定位在页面的左下角,而不是浏览器视口的左下角。

#bottomfadebar {
position:absolute;
z-index: 2; 
left: 0;
bottom: 0;
width:267px;
height:84px;
    background-color:#666;
}

小提琴在这里:http://jsfiddle.net/u5GuG/3/

【讨论】:

  • 好的@james,所以我有点吹嘘它,因为我认为它很容易解释,但后来我意识到绝对因素会出现。它实际上应该位于居中的 NAV div 内。 jsfiddle.net/u5GuG/4 它确实需要坚持“容器”区域内的绝对左侧:0 ......我应该指定,我很抱歉。不知道该怎么做。
  • 没问题,所以你试图让 navcontainer div 位于页面的中心,并且让 bottomfadebar 位于左下角,或者 navcontainer 的底部中心?
  • @JamesHebden 看看这个:jsfiddle.net/DS6yg/1。注意页面加载时,一切都很好地居中,400 px,页脚粘在底部。现在使用您的 jfiddle 窗口并使输出窗口更小,以便获得水平滚动条。如果向右滚动,您会看到页眉和内容按原样滚动离开页面,页脚不会水平滚动离开页面。我只是想让页脚滚动与页眉和内容保持一致。很抱歉没有很好地解释这一点!
猜你喜欢
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多