【问题标题】:Fixed container relative to a DIV - is this possible?相对于 DIV 的固定容器 - 这可能吗?
【发布时间】:2013-02-05 22:54:26
【问题描述】:

我正在寻找一种使导航箭头(红色框)以这种方式跟随屏幕的方法:

但我找不到将它们放在那里的方法......将它们放在最左边和最右边很容易,但我希望它放在中间,这有点问题。我设法让它在 90% 的浏览器中运行(绿色解决方案),但它并不完美,在一些流行的浏览器中也无法运行。

更新 #1:还有一件更重要的事情 - 我希望红色框的内容有时超过 600 像素(在 600 像素及以下的小分辨率上)。

更新 #2:600px 容器实际上具有:max-width: 1600px; width: 90%;600px 只是一个示例分辨率,以更好地说明差距。

【问题讨论】:

  • 考虑不为红色框使用父容器。您也可以将它们放在 600px 宽的元素内(需要position: relative;)。

标签: html css position css-position


【解决方案1】:

类似this 的东西?

您可以使用 max-width 来测试多个宽度。

检查是否适合您。


我在这里复制代码,以“面向未来”(如果有一天 codepen 消失)

HTML

<div id="buttons">
  <div id="left">L</div>
  <div id="right">R</div>
</div>

<div id="foobar">
  <div id="content">
    <p>content</p>
    <p>content</p>
    <p>content</p>
    <p>content</p>
    <p>content</p>
    <p>content</p>
  </div>
</div>

CSS

#foobar {
  max-width: 800px;
  margin: 0 auto;
  padding: 0 50px;
}

#content {
  background-color: #ddd;
}

#buttons {
  width: 700px;
  margin-left: -350px;
  background-color: #aaa;
  position: fixed;
  left: 50%;
  top: 50%;

}
#left, #right {
  width: 50px;
  height: 50px;
  position: absolute; 
  background-color: red;
}
#right {
  right: 0
}

JS (JQUERY)

$(function(){
  refresh_buttons = function(){
    w = $('#foobar').width() + 100;
    $('#buttons')
      .css('width', w)
      .css('margin-left', -w/2);
  };

  refresh_buttons();
  $(window).resize(refresh_buttons);
})

【讨论】:

  • 谢谢!快到了!但是当我添加更多内容时,按钮会下降,它们不再位于当前屏幕的中间,而是位于内容下方。
  • 我设法使箭头出现在内容的中间,但它们仍然不跟随屏幕。我认为在某处使用position: fixed; 是不可避免的。
  • 是的,这也是我设法做到的,但是如果您添加更多内容,您会注意到箭头位于中间并且它们不跟随屏幕。我得出的结论是,在这种特殊情况下,最好使用@media 查询,也许还有 2 组容器。甚至更多的手机控制到最底层:) 这会省去很多麻烦。感谢您的所有帮助!
  • 删除了“高度:300px;”我把它只是为了演示,但它应该在这里。编辑:我想我不明白......你只想要屏幕中间的箭头吗?内容是什么?
  • 也许有一点 jQuery :codepen.io/ByScripts/pen/psihx ? (尝试调整窗口大小以查看效果)
【解决方案2】:

是的,你可以。在 50% 处使用左侧或右侧,然后根据您使用的方式向左或向右调整边距。 假设你的盒子有 100px 宽度:

#box1{
    position: fixed;
    right: 50%;
    margin-right:-300px; //adjust more or less as you want
}
#box2{
    position: fixed;
    left: 50%;
    margin-left:-300px; //adjust more or less as you want
}

【讨论】:

  • 如果您的盒子位于居中容器的内部或外部,这将起作用
  • 如果中间的容器是响应式的(比如:max-width: 1000px; width: 92%;)怎么办?实际上它是响应式的,我仅以 600px 为例 :)
  • 他指定容器是600px
  • 这句话我心里有数,让我试试
  • 如果您给它一个百分比值,例如 82%,您将差值除以 100,得到 9%。所以,#box1 {left: 9%; margin-left: -100px;} #box2 {right: 9%;右边距:-100px;}
猜你喜欢
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
相关资源
最近更新 更多