CSS设计指南之定位
原文: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设计指南之定位的更多相关文章
- 《CSS 设计指南》学习笔记 一
本篇文章是对这几天看完 Charles Wyke-Smit 的 <CSS 设计指南> 后的一些学习笔记与心得,笔者好像是大一的时候开始接触网页设计,由于并不是计算机专业的,所以所有都是自己 ...
- CSS设计指南之理解盒子模型
原文:CSS设计指南之理解盒子模型 一.理解盒模型 每一个元素都会在页面上生成一个盒子.因此,HTML页面实际上是由一堆盒子组成的.默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看 ...
- CSS设计指南之浮动与清除
原文:CSS设计指南之浮动与清除 浮动意思就是把元素从常规文档流中拿出来,浮动元素脱离了常规文档流之后,原来紧跟在其后的元素就会在空间允许的情况下,向上提升到与浮动元素平起平坐. 一.浮动 CSS设计 ...
- CSS 设计指南(第3版) 初读笔记
第1章 HTML标记与文档结构 关于<title>标签:搜索引擎会给<title>标签中的文字内容赋予很高的权重.而且这些文字也会作为网页标题出现在搜索结果列表中. 无论你想了 ...
- CSS设计指南之一 HTML标记与文档结构
HTML标记与文档结构 之所以从HTML讲起,是因为CSS的用途就是为HTML标记添加样式. 1.1 HTML标记基础 对于每个包含内容的元素,根据它所包含的内容是不是文本,有两种不同的方式给它们加标 ...
- CSS设计指南之CSS三种机制:继承、层叠和特指
一.继承 CSS中的祖先元素也会向后代传递一样东西:CSS属性的值.body元素是所有元素的祖先,所有标签都是它的后代,比如为body元素设置一种字体,那么文档中的所有元素,无论它在层次结构中多么靠下 ...
- CSS设计指南之伪类
伪类这个叫法源自它们与类相似,但实际上并没有类会附加到标记中的标签上.伪类分两种. UI伪类会在HTML元素处于某个状态时(比如鼠标指针位于链接上),为该元素应用CSS样式. 结构化伪类会在标记中存在 ...
- 《CSS设计指南》阅读笔记
一.HTML实体 HTML实体常用于生成那些键盘上没有的印刷字符.以一个和号(&)开头,一个分号(:)结尾,二者之间是表示实体的字符串. 如:“左引号(") ”右引号(&qu ...
- CSS设计指南之ID属性
1.用于页内导航的ID ID也可以用在页内导航连接中.下面就是一个链接,其目标是同一页的另一个位置. <a href="#bio">Biography</a> ...
随机推荐
- 使用ILmerge合并Exe、Dll文件的帮助类
原文:使用ILmerge合并Exe.Dll文件的帮助类 using System; using System.Collections.Generic; using System.Text; using ...
- POJ 1122 FDNY to the Rescue!
给出某些交叉点的距离,-1 表示无法到达. 然后给出火灾发生点 和 附近的消防局位置. 排列消防局 的 时间 与路径. 反向建图,以火灾出发点为起点做一次SPFA. #include<cstd ...
- 【ASP.NET】验证控件
在软件开发中,验证输入信息是否正确,这是不可缺少的一项工作.就拿我们做过的机房收费系统来说,在登录的时候,我们须要对username和用户password进行验证.推断是否为空,推断输入字符是否合理等 ...
- UML它 时序图
在本文中,我们重点谈谈UML时序图,UML包括在主时序图的建模元素:对象(Actor).生命线(Lifeline).聚焦控制(Focusofcontrol).消息(Message)等等. 一.UML时 ...
- silverlight游戏在坑内发展
最初做<金X>使用silverlight它是由于右手锯的深蓝色silverlight游戏开发教程,在这里,好评,写得很好的教程!基于这样的思想游戏覆盖.你可以给游戏开发商新提供的非常多的思 ...
- Python使用时间戳
1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" 将其转换为时间数组 importtime timeArray = time.strpti ...
- C库函数标准编程之fscanf()函数解读及其实验
函数功能 fscanf()函数用于从参数stream的文件流中读取format格式的内容,然后存放到...所指定的变量中去.字符串以空格或换行符结束(实验1中会对它进一步说明) 函数格式 字符格式说明 ...
- sar使用说明
sar这东西,一开始还以为是内部有的,原来是外部的工具,可以到 http://pagesperso-orange.fr/sebastien.godard/download.html 去下载 1 安装 ...
- Java解惑七:很多其它类之谜
谜题66 继承的问题. 对于实例方法:命名同样时,子类会覆写父类的方法,且訪问权限至少和父类一样大. 对于域:命名同样时,子类会隐藏父类的域,且訪问权限随意. 谜题67 不要重用库中的类名. 谜题68 ...
- Html5 Device API详解
三.四月曾学习过html5相关知识,并就html5 device api做过一次讲解 课程时长一个小时,预期达到level 200目标,即知道html5 device api是什么,且知道怎么实现 面 ...