CSS学习总结3:CSS定位
CSS 定位机制
CSS 有三种基本的定位机制:普通流、浮动和绝对定位。
⼀、普通流
除⾮专门指定,否则所有框都在普通流中定位。普通流中元素框的位置由元素在(X)HTML中的位置决定。块级元素从上到下依次排列,框之间的垂直距离由框的垂直margin计算得到。⾏内元素在⼀⾏中⽔平布置。
⼆、定位
在讲解定位之前先说明相对定位和绝对定位到底是“以何为依据进⾏定位”:相对定位是“相对于”元素在⽂档中的初始位置;⽽绝对定位是“相对于”最近的已定位祖先元素(关于祖元素的概念在下⾯有实例说明),如果不存在祖先元素,那么“相对于”最初的包含块。如果想学会相对定位和绝对定位,那么必须了解这两点的区别。
2.1、相对定位
设置为相对定位的元素框会偏移某个距离。元素仍然保持其未定位前的形状,它原本所占的空间仍保留。
注意,在使⽤相对定位时,⽆论是否进⾏移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。
#box_relative {/*图中的框 2*/
position: relative;
left: 30px;
top: 20px;
}
相对定位的⼯作原理图如下:
2.2、绝对定位
绝对定位使元素的位置与⽂档流⽆关,因此不占据空间。这⼀点与相对定位不同,相对定位实际上被看作普通流定位模型的⼀部分,因为元素的位置相对于它在普通流中的位置。
普通流中其它元素的布局就像绝对定位的元素不存在⼀样:
#box_relative {/*图中的框 2*/
position: absolute;
left: 30px;
top: 20px;
}
绝对定位的原理图:
这⾥⽤实例说明⼀下祖元素的概念
<div>
<p><span></span></p>
</div>
/* div 相对于span来讲,就是祖辈(爷爷) */
/* span相对于p来讲,就是⼉⼦ */
/* p相对于span来讲,就是爸爸*/
/* ~.~ */
2.3、浮动
CSS浮动部分请参考下⼀篇博客:
附录:
CSS position 属性总结:
所有主流浏览器都⽀持 position 属性。position属性规定元素的定位类型,影响元素框⽣成的⽅式。可能的值
值描述
absolute ⽣成绝对定位的元素,相对于 static 定位以外的第⼀个⽗元素进⾏定位,如果不存在这样的⽗元素,则依据最初的包含快。根据⽤户代理的不同,最初的包含块可能是画布或 HTML 元素。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进⾏规定,也可以通过z-index进⾏层次分级。
(元素框从⽂档流完全删除,并相对于其包含块定位。包含块可能是⽂档中的另⼀个元素或者是初始
包含块。元素原先在正常⽂档流中所占的空间会关闭,就好像元素原来不存在⼀样。元素定位后⽣成⼀个块级框,⽽不论原来它在正常流中⽣成何种类型的框。)
fixed ⽣成固定/绝对定位的元素,相对于浏览器窗⼝进⾏定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进⾏规定。
(元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本⾝。)
relative ⽣成相对定位的元素,相对于其正常位置进⾏定位。
因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
(相对定位实际上被看作普通流定位模型的⼀部分,因为元素的位置相对于它在普通流中的位置。元素框偏移某个距离。元素仍保持其未定位前的形状,仍保留原本所占的空间。)
static
默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明,即上述声明⽆效)。
(元素框正常⽣成。块级元素⽣成⼀个矩形框,作为⽂档流的⼀部分,⾏内元素则会创建⼀个或多个⾏框,置于其⽗元素中。)inherit规定应该从⽗元素继承 position 属性的值。(任何版本的IE浏览器均不⽀持此属性值)
CSS 定位属性
CSS 定位属性允许你对元素进⾏定位。
css固定定位属性描述
把元素放置到⼀个静态的、相对的、绝对的、或固定的位置中。
定义了⼀个定位元素的上外边距边界与其包含块上边界之间的偏移。
定义了定位元素右外边距边界与其包含块右边界之间的偏移。
定义了定位元素下外边距边界与其包含块下边界之间的偏移。
定义了定位元素左外边距边界与其包含块左边界之间的偏移。
设置当元素的内容溢出其区域时发⽣的事情。
设置元素的形状。元素被剪⼊这个形状之中,然后显⽰出来。
设置元素的垂直对齐⽅式。
设置元素的堆叠顺序。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论