css之position(定位)的理解

css中的position(定位)有四个属性,比较容易搞混,这里做一个小结来区分方便以后的使用。

position的四个属性值:1.static     2.fixed     3.relative      4.absolute

1.static定位:position的默认值,一般不设置position属性时,元素会按照正常的文档流进行排列。静态定位的元素不会受到top, bottom, left, right影响。

2.relative: 相对于本身的位置进行偏移(static定位下的元素位置为本身的位置,因为static不受top, bottom, left, right的影响),所以会发生与其他元素重叠的情况,但原本所占的空间不会改变(即static和relative在文档流中,与fixed和absolute相反)。相对定位元素经常被用来作为绝对定位元素的容器块。

3.fixed定位: 元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会随之移动。fixed定位使元素的位置与文档流无关,因此不占据空间。会与其他元素重叠。(总之,fixed是特殊的absolute)

4.absolute: 绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>,即浏览器窗口。这句话可以做以下详解:                                                                                                                                                                                                               <div id="parent">
  <div id="sub1">sub1</div>
    <div id="sub2">sub2</div></div>                                                                                                                                                                                                                   当sub1的position设置为absolute后,其到底以谁为对象进行偏移呢?这里分为两种情况:
  (1).当sub1的父对象(或曾祖父,只要是父级对象)parent也设置了position属性,且position的属性值为absolute或者relative时,也就是说,不是默认值的情况,此时sub1按照这个parent来进行定位。
  注意,对象虽然确定好了,但有些细节需要您的注意,那就是我们到底以parent的哪个定位点来进行定位呢?如果parent设定了
margin,border,padding等属性,那么这个定位点将忽略padding,将会从padding开始的地方(即只从padding的左上
角开始)进行定位,这与我们会想当然的以为会以margin的左上端开始定位的想法是不同的。
接下来的问题是,sub2的位置到哪里去了呢?由于当position设置为absolute后,会导致sub1溢出正常的文档流,就像它不属于
parent一样,它漂浮了起来,在DreamWeaver中把它称为“层”,其实意思是一样的。此时sub2将获得sub1的位置,它的文档流不再基于
sub1,而是直接从parent开始。
  (2)如果sub1不存在一个有着position属性的父对象,那么那就会以body为定位对象,按照浏览器的窗口进行定位。

  绝对定位的元素位置与文档流无关,与fixed一样,不占据空间。

时间: 2024-08-06 16:04:59

css之position(定位)的理解的相关文章

Css中Position定位属性与层级关系

今天同事发现一个有意思的问题,关于position的层级关系的,他要不说我也没注意过 测试后果然有趣,有待深入研究: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Css中Position定位属性与层级关系</title> 6 <style type="text/css"> 7 #W{ 8

归纳篇(一)CSS的position定位和float浮动

近期会更新一系列博客,对基础知识再度做个巩固和梳理. 一.position定位 (一):position的属性 1.absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位: 2.relative:生成相对定位的元素,相对于其所在普通的文档流位置进行定位: 3.static:默认值,没有定位,元素出现在正常的文档流中; 4.fixed:老IE不支持,和absolute一致,相对于窗口进行定位,当出现滚动条时,不随着滚动而滚动: 5.sticky:(CSS3)有兼

css元素position定位和z-index

网页元素定位 1.注意点: 1)给元素设定高度要小心,除非给已知大小的图片设置高度,否则无法得知指定元素在页面上会有多高.此时最好通过padding等来控制高度. 2)对于同一个元素,不要讲float属性和任何一种定位方式(static,absolute,relative,fixed)结合使用(但是圣杯布局貌似就有将float与position:relative相结合的例子,虽然通过自己的测试,似乎没啥必要) 2.css提供了四种类型的定位: 1)静态定位static:这是浏览器默认的定位方式,

CSS中position定位

定义和用法 position 属性规定元素的定位类型. 说明 这个属性定义建立元素布局所用的定位机制.任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型.相对定位元素会相对于它在正常流中的默认位置偏移. 默认值: static 继承性: no 版本: CSS2 JavaScript 语法: object.style.position="absolute" 可能的值 值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元

CSS中position属性的理解,相对位置relative,绝对位置absolute,固定fixed,页脚固定的实现2种方法

页脚固定的底部的两种方式: 1.使用fixed属性值 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 </head> 6 <body> 7 <div style="height: 1500px;width: 100%;background-color: green;margin-bottom: 320px;"> 8 9 <

css 之 position定位

position属性一共有4个值,分别是static.absolute.relative.fixed. static为默认值,指块保持在原本应该在的位置上,即该值没有任何移动的效果. absolute属性是参照浏览器的左上角,配合top.right.bottom.left进行定位,在没有设定top.right.bottom.left时,默认根据父级的坐标原点为原点.如果设定了top.right.bottom.left,并且父级没有设定position属性,那么当前的absolute则以浏览器的左

对CSS中position属性的理解

 ① static(默认值) ② relative:相对于自己本来的位置进行定位.即相对于自己不加position属性的位置定位.移位后同样占有当初的物理空间位. ③ absolute:如果有父元素设定了position属性(relative或absolute)则相对于父元素的父元素的左上角定位.如果没有position属性的父对象,则以body为定位对象,按照浏览器窗口进行定位. ④ fixed:总是以body为定位对象,按照浏览器的窗口进行定位,即使拖动滚动条,位置也不会改变

深入理解css中的定位属性:position

深入理解css中的定位属性:position 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共有四种不同的定位方法,分别是static.fixed.relative.absolute. 第一部分:static static定位是HTML元素的默认值,即没有定位,元素出现在正常的流中,因此,这种定位就不会收到top,bottom,left,right的影响. 如html代码如下: <div class=&qu

position定位的解析与理解

每当我们在制作页面布局的时候总会遇到各种各样的让元素进行移动的时候,我们要不就是用margin属性来使元素进行移动,要不就是用position定位来进行,下面我就说下position定位的使用以及注意事项. 我们常用的position它有4种值,分别是  static    relative     absolute     fixed. static它是position的默认值: 给代码添加和不添加没有任何的不同,它是没有任何定位于效果的,也不会脱离文档流. relative是position