定位的基本思想很简单:

它允许你定义元素框相对于其正常位置应该出现的位置(relative),或者相对于父元素(absolute)、另一个元素甚至浏览器窗口本身的位置(fixed)。显然,这个功能非常强大,也很让人吃惊。

一切皆为框:

div、h1 或 p 元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”。

CSS 定位机制

CSS 有三种基本的定位机制:普通流、浮动和绝对定位。

除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。

块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。

行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框(Line Box),行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。

以上介绍皆为铺垫,接下来才是真正的讲解postion这个属性

大家都知道postion属性有四个值,static fixed relative absolute,

今天我们就来剖析这四个值的特点,来揭开他们的神秘面纱:

1、static, 默认值元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。

2、relative,元素框偏移某个距离,相对它在正常流中的位置,元素仍保持其未定位前的形状,它原本所占的空间仍保留。偏移量通过top/left/right/bottom/设置

3、absolute,元素框从文档流完全删除(自然其宽高对父元素毫无影响),并相对于postion值为relative其包含块偏移定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

4、fixed ,元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

补充说明:

relative定位:

1、设置一个元素为相对定位后,如果不设置其偏移量(即 top|right|bottom|left值),则对于其本身而言,和没设相对定位,毫无区别和影响,但可能对子元素有影响(比如有绝对定位的子元素)

2、相对定位的元素偏移到其它地方,其宽度高度不会改变(原本width默认100%,还是100%,这是和absolute不一样的地方),不会挤压掉别的地方原本的元素,但会重叠,重叠的效果是,会覆盖掉未定位(即postion值为static)的元素,而不管其元素的html标签在相对定位元素的前面还是后面,对应定位元素,则是根据z-index属性值来,如果两个值相等,则比较html标签在文档中的先后。

3、设置相对定位元素的高度宽度会影响父元素的高度宽度(因为它的原来的坑还占着,原来的坑会随着元素的宽高改变大小)

 

absoute定位:

1、元素设置成绝对定位后,和父元素脱离关系(如果说有关系的话,就为设置偏移量前还在原来的位置,但不占地方,其坑会被后面的兄弟元素霸占,从而重叠),所以其大小变化对父元素毫无影响

2、元素绝对定位后都是块级元素(即使原本是行级元素如span),不过其宽度不设置的话将是内容的实际大小,不在是默认的父元素的宽度,这点和相对定位是有很大区别的

3、千万记住绝对定位元素是相对于,它的相对定位的父元素,如果父元素中没有相对定位的则是相对于body

最后介绍下 z-index属性,它只对定位元素(级postion不等于static)才有效

 

对css中的定位属性postion刨根解牛的更多相关文章

  1. 对css中的浮动属性float刨根解牛

    1.浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 脱离常规流,由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. 2.几张图说明浮动常 ...

  2. css中的定位属性position(转)

    css中的定位属性position   同样的也是上课的时候发现学生难以理解的一些问题拿出来记录一下,希望帮助初学者. 在css中定位属性position的运用在页面中是很常用的,特别是一些结合js来 ...

  3. css中的定位属性

  4. 总结一下CSS中的定位 Position 属性

    在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之. CSS position 属性值: absol ...

  5. [转]总结一下CSS中的定位 Position 属性

    在CSS中,Position 属性经常会用到,主要是绝对定位和相对定位,简单的使用都没有问题,尤其嵌套起来,就会有些混乱,今记录总结一下,防止久而忘之. CSS position 属性值: absol ...

  6. CSS 中关于background 属性功能

    background 是 css中的核心属性,我们对他应该充分了解. background-image   定义背景图像  这个属性是我们用的最多的属性 设置背景图像有两个方式 background: ...

  7. Css中的Position属性

    Css中的Position属性 Css属性在线查询地址: http://www.css88.com/book/css/properties/index.htm CSS 中的 position 属性 在 ...

  8. css中background背景属性概

    css中background背景属性概 background:url(背景图片路径)  no-repeat;/*不重复默认在左上方*/background:url(背景图片路径)  no-repeat ...

  9. 理解与应用css中的display属性

    理解与应用css中的display属性 display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面, ...

随机推荐

  1. iOS8中的UIActionSheet添加UIDatePicker后,UIDatePicker不显示问题

    解决方法:   IOS8以前: UIActionSheet* startsheet = [[UIActionSheet alloc] initWithTitle:title delegate:self ...

  2. MXNet在64位Win7下的编译安装

    注:本文原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) 我笔记本配置比较低,想装个轻量级的MXNet试试,装完之后报错,不是有效的应用程序,找不到 ...

  3. 学无止境,学习AJAX(一)

    什么是AJAX?异步JavaScript和XML. AJAX是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的 ...

  4. python 删除文件和文件夹

    1.删除文件 '''删除文件 ''' def DeleteFile(strFileName): fileName = unicode(strFileName, "utf8") if ...

  5. web网页前端制作中的SEO方法

    在SEO盛行的今天到处都在谈优化,对于网站前端制作人员来说,有几点是跟SEO相关 的,也就是SEO站内优化中的一部分,下面总结几点: 1.title,.页面的标题,不用多说,这个必须有! 2.keyw ...

  6. linux运维面试题

    一.有文件file1 1.查询file1 里面空行的所在行号 grep -n "^#" file1 or awk ‗{if($0~/^$/)print NR}‘ file or g ...

  7. unity Android 打包后读取 xml 文件

    原地址:http://www.cnblogs.com/wuzhang/p/wuzhang20140731.html 问题:    前天在做东西的过程中发现了一个让人很纠结的问题,为什么Unity 程序 ...

  8. 李洪强漫谈iOS开发[C语言-024]-表达式与赋值运算符

  9. Linux内核spin_lock与spin_lock_irq分析

    http://blog.csdn.net/zhanglei4214/article/details/6837697

  10. javaweb学习总结(三十四)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...