关于position属性的设置,头脑中一直觉得不是很清楚,所以借助这次机会单独自己测试了一下,记作学习笔记。
 
首先,css的position属性包含下面四种设置情况:
  1. static:默认属性。指定元素按照常规的文档内容刘(从左到右,从上到下)进行定位。
  2. absolute:独立定位,它的定位要么是相对于最近的定位祖先元素,要么是相对于文档本身。
  3. fixed:该值指定元素是相对于浏览器窗口进行定位的。不会随着文档其他部分而滚动。
  4. relative:元素按照常规文档流进行布局,它的定位相对于文档流中的位置进行调整。
上面是定义,下面开始我的测试:
 
演示代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
  <style>
    *{
      margin:0;
      padding:0;
    }
    #father{
      width:300px;
      height:300px;
      background:black;
    }
    #child1{
      width:100px;
      height:100px;
      background:blue;
    }
    #child2{
      width:100px;
      height:100px;
      background:yellow;
    }
    #cousin{
      width:100px;
      height:100px;
      background:green;
    }
  </style>
</head>
<body>
<div id="father">
  <div id="child1">child1</div>
  <div id="child2">child2</div>
</div>
<div id="cousin">cousin</div>
</body>
</html>
 
上述代码在浏览器中展示的样式:
 
 
case1:
测试最简单的fixed,首先我们把id为father的元素设置为fixed
#father{
  width:300px;
  height:300px;
  background:black;
  position:fixed;
  top:100px;
  left:100px;
}
 
为了展示浏览器滚动情况下,元素位置相对于浏览器窗口不动,将cousin设置为
#cousin{
  width:100px;
  height:2000px;
  background:green;
}
 
效果:
 
 
滚动滚动条,father元素的位置不变
 
 
case2:
接下来主要区分relative和absolute的情况
删除之前的设定,重新设置child1的元素如下
#child1{
  width:100px;
  height:100px;
  background:blue;
  position:relative;
  top:100px;
  left:100px;
}
 
预测效果:元素并不脱离文档流,但是偏离原来的位置,因为只设定了这么一个元素的position,因此偏离应该是相对于文档。
效果:(不出所料,只有child1偏离了原来位置,哈哈哈哈)
 
 
 
好,现在在上面的基础上,修改father元素的position,变成relative
#father{
  width:300px;
  height:300px;
  background:black;
  position:relative;
  top:100px;
  left:100px;
}
 
预测效果:整个father元素偏离原来位置,child1和child2元素相对于father的位置不变,cousin的位置同样也不变。
效果:(不出所料,贼哈哈哈哈)
 
 
 
接着,关键的来了,看一下absolute和relative的区别,将上面father元素的position修改为absolute
#father{
  width:300px;
  height:300px;
  background:black;
  position:absolute;
  top:100px;
  left:100px;
}
 
预测效果:absolute因为会使元素脱离原来的位置,所以后面的元素会顶上去,这一点有点像浮动,但是其实我们能控制它的具体位置,所以比浮动更强一点。
效果:(不出所料,呀吼吼吼)
 
 
 
此时,紧接着我们再设置cousin的属性,将他也absolute起来,看它是相对于谁来设定位置
#cousin{
  width:100px;
  height:100px;
  background:green;
  position:absolute;
  top:100px;
  left:100px;
}
 
预测效果:因为cousin没有父元素,所以它应该是会按照文档来进行绝对定位,和father没关系
效果:(不出所料,我真是佩服自己)
 
 
我们再把cousin的position改为relative,此时会怎么样呢
#cousin{
  width:100px;
  height:100px;
  background:green;
  position:relative;
  top:100px;
  left:100px;
}
 
预测效果:因为father元素已经脱离了原来的文档流,所以cousin元素会顶到最前面,此时的相对定位,就是相对于文档,所以cousin的位置应该不会改变。
效果:(不出所料,我感觉自己快超神了)
 
 
 
再次,我们把father元素的position改回为relative,此时father元素回归文档流,把cousin元素顶回原来的位置,也就是father元素的后面
#father{
  width:300px;
  height:300px;
  background:black;
  position:relative;
  top:100px;
  left:100px;
}
 
预测效果:因为father回到文档流中了,cousin元素只好屈居father后面,而他本身的绝对定位使得他的top是相对father元素在文档流中的位置来设定的,所以cousin的top应该会在father正下方的位置,注意是文档流中的位置,而非重新定位后的位置
效果:(不出所料,妈妈喊我回家吃饭了)
 
 
总结一下:
  1. static就是默认设定,此时top,left,right,buttom无效,不再阐述
  2. fixed就是相对于浏览器窗口来进行定位,就像有些网站上固定在窗口中,挥之不去的小广告,跟着你走
  3. relative不会使得元素脱离文档流,元素仍然在原来的位置占有空间,而显示出来是偏离的位置,同时,如果父元素是relative或者absolute的话,就相对于父元素进行偏离
  4. absolute会使得元素脱离文档流,类似于flow浮动,同样,如果父元素是relative或者absolute的话,就相对于父元素进行偏离
  5. 注意所有元素的位置定位都是根据在文档流中原来的位置,而非top,left,right,buttom等设定后显示出来的位置,切记切记。
 
原创内容,转载请注明出处~
吃饭吃饭~

css中关于position属性的探究(原创)的更多相关文章

  1. Css中的Position属性

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

  2. 对CSS中的Position属性的一些深入探讨

    转:http://www.cnblogs.com/coffeedeveloper/p/3145790.html Position属性 Position的属性值共有四个static.relative.a ...

  3. 理解css中的position属性

    理解css中的position 两种类型的定位 static类型:只有一个值position: static.position默认值 relative类型:包括三个值,这三个值会相互影响,允许你以特定 ...

  4. css中的position属性值的探究

    css的position属性指定了元素的定位类型,然后通过top,botton,left,right来具体定位. 在具体定位之前必须使用position属性,否则所有的具体定位属性都无法生效. pos ...

  5. 详解css中的position属性

    这一次直接进入主题. css中最常用的布局类属性,一个是float,另一个就是定位属性position. 对于position来讲,有以下属性值: static : 无特殊定位,对象处于正常文档流.其 ...

  6. 细说css中的position属性

    有过css开发经验的同学,对于position这个属性一定不会陌生,然而这个熟悉的属性确是面试题中的常客,也就说明了该属性在css的世界是有一定的江湖地位的,那么我们就来详细的说说position这个 ...

  7. 浅谈css中的position属性

    我觉得吧,css如果不考虑浏览器的兼容问题的话,最让人头疼的应该就是position了,反正我是这么觉得的,为了能基本上搞清楚position的几种情况,我找了一些资料,做了一个小实验,下面是实验的过 ...

  8. CSS中的position属性笔记

    一般有5个属性,分别是:static,absolute,relative,fixed,inherit static 自然定位:这个是默认值,没有定位,再设置top,rignt,bottom,left会 ...

  9. 关于css中的position定位

    希望这波position可以有帮助^_^! css中的position属性主要分为:static.relative.absolute.fixed.center.page.sticky(红色是css3中 ...

随机推荐

  1. socket网络通信

    1.socket通常也称作"套接字",用于描述IP地址和端口.在internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个socket,并绑定到一个端口上 ...

  2. C# 配置文件 AppSettings和ConnectionStrings的区别

      web.config是web应用程序的配置文件,为web应用程序提供相应配置(B/S).app.config是桌面应用程序的配置文件,为桌面应用程序提供相应配置(C/S).Configuratio ...

  3. 为什么重写equals时必须重写hashCode方法?

    原文地址:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452206.html 首先我们先来看下String类的源码:可以发现Stri ...

  4. 第七章 consul docker集群

    --net=host:运行consul的docker镜像必须带有的参数,因为consul的consensus和gossip协议对于网络的延迟和丢包很敏感,所以引入额外的其他网络类型的层是不可取并且不必 ...

  5. 关于yii2框架活动记录activeRecord添加默认字段的问题

    平时使用sql的时候可以如下添加默认字段flag: "select a.*,0 as flag from user_info a", 对于yii2框架则需要这样: $query = ...

  6. [题解]USACO 1.3 Wormholes

    Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfire ...

  7. linux之find命令详解

    linux之find命令详解 查找文件find ./ -type f查找目录find ./ -type d查找名字为test的文件或目录find ./ -name test查找名字符合正则表达式的文件 ...

  8. JavaWeb 学习001-登录页面-Servlet

    那什么是Servlet呢? 我理解的Servlet 就是一个中间媒介,jsp页面原本需要一些操作,但是现在让jsp页面只是显示就好,把操作的工程转移给Servlet中. 使用Servlet时候有个固定 ...

  9. [刘阳Java]_快速搭建MyBatis环境_第2讲

    1.MyBatis的环境配置 导入MyBatis包, mybatis-3.2.8.jar 导入MySQL驱动包, mysql-connector-java-5.1.24-bin.jar 创建表的实体类 ...

  10. memcached 分布式

    memcached定义 memcached 是一套分布式的高速缓存系统,被广泛应用于应用系统的缓存层来提升应用程序的访问速度:memcache缺乏认证以及安全管制,这表明应将memcached服务器放 ...