在(X)HTML DOM中,CSS识别四种类型的定位。默认情况下,HTML中的每个元素都是静态定位的。这意味着它根据它在正常流程中出现的位置进行定位。
相对定位 当对象被定位relative
,这意味着它修改基于原点的位置,这是它会被定位在正常流动(静态)。但是,Relative也会做其他特殊的事情,并告诉浏览器它的所有孩子都将根据这个元素进行定位,无论是使用相对还是绝对。
绝对定位 当对象被定位absolute
,它根据其最接近的非static
定位的祖先的位置被放置。如果没有,那么它使用<body>
来确定它的位置。如果它的兄弟姐妹或祖先没有被定位absolute
,这有可能中断文档流。如果全部从最外层的顶层节点到当前节点定位absolute
,则它将保持流量。
固定定位 这需要的元件从流,并根据窗口物体位置的对象。这意味着无论文档的滚动状态,文档大小还是其他属性,它都会始终显示在该位置。 (这是你如何获得与你一起滚动的对象)。
您的问题 一是多的解决方案,如由他人描述,您可以添加position:relative
到#header
。它将像上面解释的那样,将你的标题放在最近的非祖先处,并将用它和确定位置的基础。这对你来说可能并不理想,因为你是一个被认可的新手,这个absolute
可能很容易打破足够的流量,你可能会与兄弟元素斗争。
或者,您可以将徽标从position:absolute
更改为position:relative
。这会将您的徽标保留在流程中,但会根据文档流程中自然出现的位置移动徽标。机会是,除非你在#header中使用浮动,这可能是你想要的,因为它a)保持流动,b)允许使用子元素floats
而不会丢失流动,c)实现你的理想定位,d)保留父元素的继承(当它很重要时)。
另一种选择是将#header
更改为position:absolute
。然而,这可能会改变一切交互的方式,除非您将所有父母和兄弟元素都更改为position:absolute
。此外,您可能无法访问祖先定义的宽度和高度,因为如果它们处于相同的流程中,它们仅被继承。这对于您来说是第二好的情况,因为您可以简单地添加规则body * { position:absolute; }
,并且所有条款都将保留在您的流程中。然而,它忽视了真正教会你需要了解定位的东西,而只是一个拐杖。
希望这有助于 FuzzicalLogic
进入粗略,因为他们是全尺寸的文档在同一个地方。 –
@XcodeDev:也许你应该使用'%'而不是'px'? – RichieHindle
@XcodeDev - 你为什么不把你的实际CSS和标记发布到某个地方,让人们可以看一看?试试jsFiddle。 –