绝对定位( Absolute positioning )
绝对定位( Absolute positioning )
之前在介绍定位体系的时候,已经简单的介绍了绝对定位和固定定位。一般情况下,这两种定位的元素, 在 3D 的可视化模型中,处于浮动元素的上方,或者说比浮动元素更靠前1。
参照元素
绝对定位(Absolute positioning)元素定位的参照物是其包含块,既相对于其包含块2进行定位,不一定是其父元素。
示例代码:
<div style="position:relative; width:300px; height:300px; border:5px solid red;">
<div style="width:100px; height:100px; "></div>
<div style="margin:0 0 0 100px; width:200px; height:200px; ">
<div style="position:absolute; left:100px; top:100px; width:100px; height:100px; ">
</div>
</div>
</div>
示意图:
绝对定位元素完全脱离了常规流
绝对定位元素完全脱离了常规流3(对后继的兄弟节点没有影响)。
常规流中的框,都在同一个层上,浮动框是处于常规流之上的一个特殊层,它可能会对常规流中的框的定位产生影响。但绝对定位的框不会,
每个绝对定位的框都可以看做一个单独的图层,不会对其他层框的定位产生影响。这与层叠级别和层叠上下文1有关。
有一点需要注意,那就是绝对元素定位的 top 和 left 值跟绝对元素未脱离常规流之前在常规流中位置有关。
<div style="position:absolute; width:100px; height:100px; "> absolute</div>
<div style="height:50px; border:1px solid blue; width:200px;">DIV 中的普通文本元素</div>
<div style="position:absolute; left:60px; width:100px; height:100px; "> absolute</div>
示意图:
两个绝对定位框中间的 DIV 在常规流中,影响了后面的绝对定位元素的位置,但没有受到其前面的绝对定位框的影响。
绝对定位框生成的包含块
一个绝对定位框会为它的常规流子元素和定位子元素(不包含 fiexed 定位的元素)生成一个新的包含块。
不过,绝对定位元素的内容不会在其它框的周围排列。
层叠级别
绝对定位框可能会掩盖另一个框的内容,或者被另外一个框掩盖,这取决于互相重合的框的层叠级别1。
注:
- 具体关于元素的层叠级别和层叠上下文的资料,请参见: W3Help - KB013: 分层的显示( Layered presentation )
- 关于包含块的判定,请参见: W3Help - KB008: 包含块( Containing block )
- 关于常规流,请参见: W3Help - KB009: CSS 定位体系概述
固定定位( Fixed positioning )
固定定位是绝对定位的一个子类。唯一的区别是,对于固定定位框,它的包含块由可视窗口( viewport1 )创建。对于连续媒介,固定定位框并不随着文档的滚动而移动。从这个意义上说,它们类似于固定的背景图形。对于页面媒介,固定定位框在每页里重复。对于需要在每一页底部放置一个签名时,这个方法非常有用。
注意,IE6 中不支持固定定位( Fixed positioning )定位,通常的做法是使用绝对定位代替,并使用 Javascript 脚本控制绝对定位框的位置,使随页面滚动而相应的变化。
以下示例代码是修改自 W3C 官方使用固定定位布局的一个例子:
<!DOCTYPE HTML>
<HTML>
<HEAD><TITLE>A frame document with CSS2.1</TITLE>
<STYLE type="text/css"> BODY {
height: 8.5in
} div {
border: 1px solid red;
} /* Required for percentage heights below */
#header {
position: fixed;
width: 100%;
height: 15%;
top: 0;
right: 0;
bottom: auto;
left: 0;
} #sidebar {
position: fixed;
width: 10em;
height: auto;
top: 15%;
right: auto;
bottom: 100px;
left: 0;
} #main {
position: fixed;
width: auto;
height: auto;
top: 15%;
right: 0;
bottom: 100px;
left: 10em;
} #footer {
position: fixed;
width: 100%;
height: 100px;
top: auto;
right: 0;
bottom: 0;
left: 0;
} </STYLE>
</HEAD>
<BODY>
<DIV id="header"> ...</DIV>
<DIV id="sidebar"> ...</DIV>
<DIV id="main"> ...</DIV>
<DIV id="footer"> ...</DIV>
</BODY>
</HTML>
示意图:
无论如何滚动页面,布局区域始终位于可视窗口中。
绝对定位( Absolute positioning )的更多相关文章
- CSS魔法堂:Absolute Positioning就这个样
前言 当我们以position:absolute之名让元素脱离Normal flow的控制后,以为通过left和top属性值即可让元素得以无限的自由时,却发现还有各种神秘的力量左右着它的来去,于是我们 ...
- div+Css绝对定位(absolute)和相对定位(relative)的总结
1.没有外Div的情况下 设置绝对定位(absolute)和相对定位(relative)是没有区别的 2.相对定位占位置 而绝对定位不占位置 会漂浮在别的Div之上 3.若父Div没有设置定位,子Di ...
- Absolute positioning
The programmer specifies the position and the size of each widget in pixels. When you use absolute p ...
- 【随笔】关于绝对定位absolute相对于父元素定位的问题
绝对定位absolute的官方定义: 设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块.元素原先在正常文档流中所占的空间会关闭,就好像该元素 ...
- 【CSS】 布局之浮动float和绝对定位absolute的选择
浮动float: 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样.(W3C) 绝对定位 ...
- CSS绝对定位absolute详解
转:https://www.jianshu.com/p/a3da5e27d22b 之前介绍过CSS浮动float详解,本篇介绍的绝对定位absolute和浮动float有部分相似性.如果能理解 ...
- CSS position绝对定位absolute relative
常常使用position用于层的绝对定位,比如我们让一个层位于一个层内具体什么位置,为即可使用position:absolute和position:relative实现. 一.position语法与结 ...
- 深入理解CSS绝对定位absolute
前面的话 前面已经介绍了定位的偏移和层叠,例子中大量的应用了绝对定位.因为相较于相对定位和固定定位,绝对定位在实际中应用频率更高.应用场景更广泛.本文将介绍使用绝对定位时的具体细节 定义 当元素绝对定 ...
- 相对定位relative与绝对定位absolute
relative:相对定位,并没有脱离原来文档流,依然在原来的位置上,可以通过设置left,top,来设置自己的偏移量,但是它依然占据自己原来的位置,偏移的位置会遮盖其他的元素 absolute:绝对 ...
随机推荐
- JS - 使 input 失去焦点
$(document).ready(function(){ $("body").click(function(){ if(!event.srcElement.type) { ...
- Day2-T1
原题目 Describe:贪心,左边和右边中选字典序小的 code: #include<bits/stdc++.h> using namespace std; int n,step,hea ...
- HZNU-ACM寒假集训Day6小结 线性DP
线性DP 考虑一组硬币面值 1,5,11 给定W,求凑出W的最少硬币个数 我们记凑出n需要用到的最少硬币数量为f(n) 我们注意到了一个很棒的性质 : f(n)只与f(n-1) f(n-5) f( ...
- UVA - 10934 Dropping water balloons(装满水的气球)(dp)
题意:有k个气球,n层楼,求出至少需要多少次实验能确定气球的硬度.气球不会被实验所“磨损”. 分析: 1.dp[i][j]表示第i个气球,测试j次所能确定的最高楼层. 2.假设第i-1个气球测试j-1 ...
- 每天一点点之vue框架开发 - vue坑-This relative module was not found
94% asset optimization ERROR Failed to compile with 1 errors This relative module was not found: * . ...
- DRF框架之DRF的引入
DRF框架是python_web中采用前后端分离开发模式的框架,其处理JSON数据是最快的. 通过DRF框架,我们后端程序员只需要拼接并响应JSON数据即可,并且数据复用性高适用于浏览器端.APP端等 ...
- VUE- iView组件框架的使用
VUE- iView组件框架的使用 1. 下载iView 工程. 引用:https://www.iviewui.com/
- 图解kubernetes容器状态同步机制核心实现
在K8s中将Pod调度到某一台Node节点之后,后续的状态维护信息则是由对应机器上的kubelet进行维护,如何实时反馈本地运行状态,并通知apiserver则是设计的难点, 本节主要是通过感知Pod ...
- DevOps专题 | 大型企业级监控系统设计
10月30日,全球权威数据调研机构IDC正式发布<IDCMarketScape: 中国DevOps云市场2019,厂商评估>报告.京东云凭借丰富的场景和实践能力,以及高质量的服务交付和平台 ...
- apache安装和mysql php配置问题
apache下载和安装: 下载网址:http://httpd.apache.org/ 然后 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ...