原文:CSS设计指南之定位

CSS布局的核心是position属性,对元素盒子应用这个属性,可以相对于它在常规文档流中的位置重新定位。position属性有4个值:static、relative、absolute、fixed。默认值为static。

一.定位类型

1.静态定位static

在静态定位的情况下,每个元素都处于常规文档流中。它们都是块级元素,所以就会在页面中自上而上的堆叠起来。

2.相对定位

到底相对哪里定位呢,相对的是它原来在文档流中的位置(或者说是默认位置)。

要注意,除了这个元素自己相对于原始位置挪动了一定的位置之外,页面没有发生任何变化。这个元素原来占据的空间没有动。

3.绝对定位

绝对定位跟静态定位及相对定位比,绝对不一样。因为绝对定位会把元素彻底从文档流中拿出来,原来占据的空间会被"回收"。

从上图可以看到,绝对定位的元素完全脱离了常规文档流,它现在是相对于顶级元素body在定位。而这自然而然的引起了一个关于定位的重要概念:定位上下文。

关于定位上下文,首先应该清楚的是:绝对定位元素默认的定位上下文是body元素。关于定位上下文的详细信息接下来再仔细说明。

4.固定定位

从完全脱离文档流的角度说,固定定位与绝对定位类似。但不同之处在于,固定定位的定位上下文是视窗(浏览器窗口或者手持设备的屏幕),因此它不会随页面滚动而滚动。固定定位最常用的情况是创建不随页面滚动而滚动的导航元素。

二.定位上下文

在讲绝对定位的时候,我们了解到绝对定位元素默认的定位上下文是body元素,因为body是标记中所有元素唯一的祖先元素。而实际上,绝对定位元素的所有祖先元素都可以成为它的定位上下文,只要把相应祖先元素的position设定为relative即可。

如上图所示,可能会感觉非常奇怪,为什么inner元素的top、left属性没有起作用。原因在于,内外部div默认都是静态定位,它们之间不存在谁是谁的定位上下文这个问题。只有将元素的position属性设置为relative、absolute、fixed,这个元素的top、right、bottom和left属性才会起作用。

如上图所示,设置了内部div的position属性为absolute之后,内部div就会脱离原来的位置,默认相对于body重新定位。

如上图所示,设置了外部div的position属性为relative值之后,它就变成了内部div的定位上下文。此时内部div的top、left属性参照的就是外部div了。如果你再用left和top属性重新定位外部div,内部div也会跟着移动相同的距离,以保住它与外部div之间的位置关系。

事实上,只要把元素的外边距和内边距设定好,多数情况下只用默认的静态定位就足以实现页面布局了。很多刚接触CSS的初学者(include myself)都会错误的设定position属性,最终发现从文档流中挪出来的元素很难控制。因此,除非真需要那么做,否则不要轻易修改元素默认的position属性。

以上就是我所了解的关于定位的知识,不足之处欢迎指正,因为本人也是在学习交流之中。

CSS设计指南之定位的更多相关文章

  1. 《CSS 设计指南》学习笔记 一

    本篇文章是对这几天看完 Charles Wyke-Smit 的 <CSS 设计指南> 后的一些学习笔记与心得,笔者好像是大一的时候开始接触网页设计,由于并不是计算机专业的,所以所有都是自己 ...

  2. CSS设计指南之理解盒子模型

    原文:CSS设计指南之理解盒子模型 一.理解盒模型 每一个元素都会在页面上生成一个盒子.因此,HTML页面实际上是由一堆盒子组成的.默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看 ...

  3. CSS设计指南之浮动与清除

    原文:CSS设计指南之浮动与清除 浮动意思就是把元素从常规文档流中拿出来,浮动元素脱离了常规文档流之后,原来紧跟在其后的元素就会在空间允许的情况下,向上提升到与浮动元素平起平坐. 一.浮动 CSS设计 ...

  4. CSS 设计指南(第3版) 初读笔记

    第1章 HTML标记与文档结构 关于<title>标签:搜索引擎会给<title>标签中的文字内容赋予很高的权重.而且这些文字也会作为网页标题出现在搜索结果列表中. 无论你想了 ...

  5. CSS设计指南之一 HTML标记与文档结构

    HTML标记与文档结构 之所以从HTML讲起,是因为CSS的用途就是为HTML标记添加样式. 1.1 HTML标记基础 对于每个包含内容的元素,根据它所包含的内容是不是文本,有两种不同的方式给它们加标 ...

  6. CSS设计指南之CSS三种机制:继承、层叠和特指

    一.继承 CSS中的祖先元素也会向后代传递一样东西:CSS属性的值.body元素是所有元素的祖先,所有标签都是它的后代,比如为body元素设置一种字体,那么文档中的所有元素,无论它在层次结构中多么靠下 ...

  7. CSS设计指南之伪类

    伪类这个叫法源自它们与类相似,但实际上并没有类会附加到标记中的标签上.伪类分两种. UI伪类会在HTML元素处于某个状态时(比如鼠标指针位于链接上),为该元素应用CSS样式. 结构化伪类会在标记中存在 ...

  8. 《CSS设计指南》阅读笔记

    一.HTML实体 HTML实体常用于生成那些键盘上没有的印刷字符.以一个和号(&)开头,一个分号(:)结尾,二者之间是表示实体的字符串. 如:“左引号(")     ”右引号(&qu ...

  9. CSS设计指南之ID属性

    1.用于页内导航的ID ID也可以用在页内导航连接中.下面就是一个链接,其目标是同一页的另一个位置. <a href="#bio">Biography</a> ...

随机推荐

  1. Caché Monitor 2.03发布,Caché的SQL开发工具 - 开源中国社区

    Caché Monitor 2.03发布,Caché的SQL开发工具 - 开源中国社区 Caché Monitor 2.03发布,Caché的SQL开发工具

  2. hdu2063+hdu1083(最大匹配数)

    传送门:hdu2063过山车 #include <cstdio> #include <cstring> #include <string> #include < ...

  3. php学习之道:WSDL具体解释(三)

    通过声明方式定义绑定(binding)属性 假设你在服务中採用SOAP binding.你能够使用JAX-WS来指定一定数量的属性binding. 这些属性指定相应你在WSDL中指定的属性.某些设置. ...

  4. java中怎么终止一个线程的执行----个人学习心得

    参考了一下两个网站的介绍: ①:http://blog.csdn.net/liuhanhan512/article/details/7077601 ②:http://www.blogjava.net/ ...

  5. vim配置(vimplus)

    vim配置(vimplus) vimplus vimplus是vim的超级配置安装程序 github地址:https://github.com/chxuan/vimplus.git,欢迎star和fo ...

  6. Kafka - SQL 引擎

    Kafka - SQL 引擎分享 1.概述 大多数情况下,我们使用 Kafka 只是作为消息处理.在有些情况下,我们需要多次读取 Kafka 集群中的数据.当然,我们可以通过调用 Kafka 的 AP ...

  7. 读书笔记:《重来REWORK》

    读书笔记:<重来REWORK> <重来Rework--更为简单有效的商业思维>这本书是看了别人的书单而购买的,初 拿到这本书翻看时,感觉有两点与平常的书不同,一是每个小节非常短 ...

  8. 谈Web应用系统的可维护性

           每一个软件开发人员都十分清楚, 当软件构建得越来越复杂时, 可维护性就成了一个很突出的问题. 如何在构造软件系统的过程中始终保持可控制的可维护性呢?          一. 整体组织   ...

  9. 新版SDK自己主动加入PlaceholderFragment的思考

    自从Android SDK更新到22.6.3,发现新建Activity的时候,会自己主动生成一个Fragment.这个Fragment是activity的静态内部类.同一时候生成了一个xml叫frag ...

  10. 遇过的坑(2)—MyISAM表类型不支持事务操作

    最近需要通过JDBC对数据库做事务型操作,实践时发现,并没有达到想要的效果,表现在:1.每次执行executeUpdate()后,数据就马上能在DB中查到.但按理来说,我还没执行commit(),DB ...