css - 为什么这个愚蠢的定位会导致这个网站发生变化?

标签 css

如果您访问此站点:http://www.marketwatch.com/story/social-networking-for-social-smokers-2011-05-11并进入样式并更改<div id="blanket"></div>有一个静态的位置,然后在它外面(或 body 上)添加一个包装器把 position:relative在它上面,页面发生了巨大的变化(此时标题基本上与内容区域重叠。

我所知道的关于定位的一切都告诉我这不应该发生,但我不太明白为什么。我也无法在 CSS 中找到任何导致此行为的内容。有人有什么想法吗?

编辑:这与我的工作或其他任何事情都无关,但我的 friend 让我注意到了它,我认为这是一个大脑发痒的问题。

我试过这样做:

<body>
  <div style="position: relative;">
    <div style="position: static;">
        <div id="blanket">...</div>
    </div>
  </div>
</body>

这不会导致问题,所以该页面上显然有一些内容,但我无法弄清楚。它在 chrome/FF/IE 中执行此操作。

最佳答案

尝试检查 header 中的元素。您将在 div#topchrome 元素上看到以下样式规则:

position: absolute;
top: 0;
width: 981px;
z-index: 10000;

此元素上的位置(absolutetop: 0)导致它被推到页面的最顶部(默认,未修改的行为)。如果您将 body 更改为具有 position: relative;,您基本上已经告诉 #topchrome 是“绝对的,但相对于 的位置 body 是。”所以现在,#topchrome 实际上位于 body 的顶部,也就是页面的最顶部。即便如此,这仍然不会改变事情。真正的罪魁祸首是第三个 Actor div#breakingnews,它具有属性 margin-top: 177px。在新流程中,我们有:

body { position: relative; }
     div#breakingnews { margin-top: 177px; }
     div#chrome
          div#topchrome { position: absolute; top: 0; }

因此,div#breakingnews 导致内容被下推。事实上,将 div#blanket 更改为 position: static 与它无关,因为它是 static (默认值)开始.

关于css - 为什么这个愚蠢的定位会导致这个网站发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5970184/

相关文章:

javascript - knockout 移动/滑动突出显示的选择 CSS

javascript - 制作两个高度相等的并排div

html - 如何在 Shopify 中向装箱单模板添加 GiftShip 消息?

html - CSS - 绝对定位的移动响应问题

javascript - 创建 "appearing content"效果的好方法

php - 跨页面的多个内容 (html)

html - 如何使我的页面响应任何屏幕尺寸?

html - 推送 ul li 的每个子级别

html - 为什么我的导航栏和页脚没有拉伸(stretch)到全宽?

javascript - 如何更改范围 slider 标记?