关于htmlCSS绝对相对布局问题
CSS定位属性
position:把元素放置到⼀个静态的、相对的、绝对的、或固定的位置中。
top:定义了⼀个定位元素的上外边距边界与其包含块上边界之间的偏移。
right:定义了定位元素右外边距边界与其包含块右边界之间的偏移。
bottom:定义了定位元素下外边距边界与其包含块下边界之间的偏移。
left:定义了定位元素左外边距边界与其包含块左边界之间的偏移。
overflow:设置当元素的内容溢出其区域时发⽣的事情。
clip:设置元素的形状。元素被剪⼊这个形状之中,然后显⽰出来。
vertical-align:设置元素的垂直对齐⽅式。
Z-index:设置元素的堆叠顺序。
css布局中的 position:static|absolute|fixed|relative 的4中属性
从上⾯语法可以看出,定位的⽅法有很多种,它们分别是静态(static),绝对定位(absolute),固定(fixed),相对定位(relative)。在这个教程⾥,我不逐⼀讲,只讲最常⽤也是最实⽤的两个定位⽅法:绝对定位(absolute)、相对定位(relative)。
绝对定位(absolute):将被赋予此定位⽅法的对象从⽂档流中拖出,使⽤left,right,top,bottom等属性相对于其最接近的⼀个最有定位设置的⽗级对象进⾏绝对定位,如果对象的⽗级没有设置定位属性,即还是遵循HTML定位规则的,则依据body对象左上⾓作为参考进⾏定位。绝对定位对象可层叠,层叠顺序可通过z-index属性控制,z-index值为⽆单位的整数,⼤的在最上⾯,可以有负值(⽬前负值FF不⽀持)。css固定定位
相对定位(relative):对象不可层叠,依据left,right,top,bottom等属性在正常⽂档流中偏移⾃⾝位置。同样可以⽤z-index分层设计。
static:是默认属性,元素框正常⽣成。块级元素⽣成⼀个矩形框,作为⽂档流的⼀部分,⾏内元素则会创建⼀个或多个⾏框,置于其⽗元素中。
relative:元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。
相对定位实际上被看作普通流定位模型的⼀部分,因为元素的位置相对于它在普通流中的位置。
注意,在使⽤相对定位时,⽆论是否进⾏移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。
absolute:元素框从⽂档流完全删除,并相对于其包含块定位。包含块可能是⽂档中的另⼀个元素或者是初始包含块。元素原先在正常⽂档流中所占的空间会关闭,就好像元素原来不存在⼀样。元素定位后⽣成⼀个块级框,⽽不论原来它在正常流中⽣成何种类型的框。尽量不要使⽤left:px.right:px等属性。尽量使⽤margin-left:多少px;这样不容易错位。
fixed:元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本⾝。是固定死的。⽆论你浏览器上下如何滚动,距离浏览器的具体都不会改变的
浮动不完全是定位,不过,它当然也不是正常流布局。
⼀切皆为框
块框和⾏内元素
使⽤改变⽣成的框的类型
这意味着,通过将 display 属性设置为 block,可以让⾏内元素(⽐如 <a> 元素)表现得像块级元素⼀样。还可以通过把 display 设置为none,让⽣成的元素根本没有框。这样的话,该框及其所有内容就不再显⽰,不占⽤⽂档中的空间。
但是在⼀种情况下,即使没有进⾏显式定义,也会创建块级元素。这种情况发⽣在把⼀些⽂本添加到⼀个块级元素(⽐如 div)的开头。即使没有把这些⽂本定义为段落,它也会被当作段落对待:
<div>
some text
<p>Some more text.</p>
</div>
在这种情况下,这个框称为⽆名块框,因为它不与专门定义的元素相关联。
块级元素的⽂本⾏也会发⽣类似的情况。假设有⼀个包含三⾏⽂本的段落。每⾏⽂本形成⼀个⽆名框。⽆法直接对⽆名块或⾏框应⽤样式,因为没有可以应⽤样式的地⽅(注意,⾏框和⾏内框是两个概念)。但是,这有助于理解在屏幕上看到的所有东西都形成某种框。
CSS 定位机制
CSS 有三种基本的定位机制:普通流、浮动和绝对定位。
除⾮专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。
块级框从上到下⼀个接⼀个地排列,框之间的垂直距离是由框的垂直外边距计算出来。
⾏内框在⼀⾏中⽔平布置。可以使⽤⽔平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响⾏内框的⾼度。由⼀⾏形成的⽔平框称为⾏框(Line Box),⾏框的⾼度总是⾜以容纳它包含的所有⾏内框。不过,设置⾏⾼可以增加这个框的⾼度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论