CSS定位中最难理解的她——absolute的探讨

由于放假,近来无事就随便找点事来玩一下,就学了以后要用到的web开发,看到CSS样式中定位时absolute非常不理解,在网上找了很多解释反而弄得我更困惑了,于是决定自己实验,找出各种关系。关于CSS定位中absolute的特点,我总结起来无非是以下几点:

1.定位position为absolute属性的容器会脱离标准文档流,可以放在整个页面的各个位置(这个当然要与其他属性结合使用);

2.定位的标准为整个页面或者外包裹容器,同级元素不会成为absolute容器的定位标准;

3.当定位为absolute的容器的所有外包裹标签没有用position修饰的,则该容器以整个页面为标准进行定位;

4.当定位为absolute的容器的所有外包裹标签有用position修饰的,则该容器以离他最近的容器为标准进行定位;

首先展示一下实验的基础,以后所有的改动都是在此基础上进行的。

HTML文件如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>WebPageLayout_absolute</title>
    <link rel="stylesheet" type="text/css" href="WebPageLayout_absolute.css" />
</head>
<body>
<div id="wrap_out">
<div id="wrap_in">
    <div id="box1">box1</div>
    <div id="box2">box2</div>
    <div id="box3">box3</div>
</div>
</div>
</body>
</html>

CSS样式如下:

*{
    padding: 0;
    margin: 0;

}
#wrap_out{
    background: lightseagreen;
    height: 600px;
    width: 80%;
    margin: 0 auto;
    border: 3px solid #000000;
}
#wrap_in{
    background: lightblue;
    height: 500px;
    width: 70%;
    margin: 0 auto;
    border: 3px solid #000000;
}
#box1{
    background: lightsalmon;
    height:30%;
}
#box2{
    background: lightcoral;
    height:30%;
}
#box3{
    background:lightgreen;
    height:30%;
}

效果如下:

一.首先进行所有外包裹没有position修饰的实验:

1.下面为box2添加absolute属性,不加偏移量;

*{    padding: 0;    margin: 0;

}#wrap_out{    background: lightseagreen;    height: 600px;    width: 80%;    margin: 0 auto;    border: 3px solid #000000;}#wrap_in{    background: lightblue;    height: 500px;    width: 70%;    margin: 0 auto;    border: 3px solid #000000;}#box1{    background: lightsalmon;    height:30%;}#box2{    background: lightcoral;    height:30%;    position: absolute;}#box3{    background:lightgreen;    height:30%;}

效果如下:

总结:不加偏移的absolute容器并未完全脱离文档流,只是和她后边同级的其他容器脱离了,而与她前面的容器依然保持着文档中的顺序。

2.为position为absolute的容器加上偏移量

a.只加left偏移

b.只加top偏移

c.以上两个偏移都加上

*{
    padding: 0;
    margin: 0;

}
#wrap_out{
    background: lightseagreen;
    height: 600px;
    width: 80%;
    margin: 0 auto;
    border: 3px solid #000000;
}
#wrap_in{
    background: lightblue;
    height: 500px;
    width: 70%;
    margin: 0 auto;
    border: 3px solid #000000;
}
#box1{
    background: lightsalmon;
    height:30%;
}
#box2{
    background: lightcoral;
    height:30%;
    position: absolute;
    left:10px;
    top:10px;
}
#box3{
    background:lightgreen;
    height:30%;
}

效果如下:

总结:要想让absolute完全脱离文档流,必须在两个方向上都加偏移,哪怕是left:0;

   此时absolute容器以整个页面为标准定位

二.再进行外包裹有position修饰的容器的实验

1.外包裹有一个position修饰的容器:

*{
    padding: 0;
    margin: 0;

}
#wrap_out{
    background: lightseagreen;
    height: 600px;
    width: 80%;
    margin: 0 auto;
    border: 3px solid #000000;

}
#wrap_in{
    background: lightblue;
    height: 500px;
    width: 70%;
    margin: 0 auto;
    border: 3px solid #000000;
    position: relative;
}
#box1{
    background: lightsalmon;
    height:30%;
}
#box2{
    background: lightcoral;
    height:30%;
    position: absolute;
    left:10px;
    top:10px;
}
#box3{
    background:lightgreen;
    height:30%;
}

2.外包裹中有多个position修饰,即wrap_out和wrap_in都有position

效果图同上

总结:absolute定位的容器只以离她最近的外包裹元素为标准进行定位,而无论外包裹有几个容器被position修饰。

3.外包裹位置变化对absolute定位的影响

*{
    padding: 0;
    margin: 0;

}
#wrap_out{
    background: lightseagreen;
    height: 600px;
    width: 80%;
    margin: 0 auto;
    border: 3px solid #000000;
    position: relative;

}
#wrap_in{
    background: lightblue;
    height: 500px;
    width: 70%;
    margin: 0 auto;
    border: 3px solid #000000;
    position: relative;
    left: 10px;
    top: 10px;
}
#box1{
    background: lightsalmon;
    height:30%;
}
#box2{
    background: lightcoral;
    height:30%;
    position: absolute;
    left:10px;
    top:10px;
}
#box3{
    background:lightgreen;
    height:30%;
}

效果如下:

总结:absolute修饰的容器随着外包裹容器位置的变化而变化。

时间: 2024-12-29 11:21:38

CSS定位中最难理解的她——absolute的探讨的相关文章

深入理解CSS定位中的偏移

× 目录 [1]定位 [2]包含块 [3]偏移属性[4]绝对定位[5]格式化 [6]auto 前面的话 CSS有三种基本的定位机制:普通流.浮动和绝对定位.利用定位,可以准确地定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素甚至浏览器窗口本身的位置.但元素究竟如何定位,定位到什么位置,主要依靠top/right/bottom/left这四个偏移属性.本文就定位中的偏移做详细介绍. position定位 值: static | relative | absolute | fi

CSS定位中的必须深究的常用技法

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">关于CSS定位,有人很多时候都是随便用

CSS样式中ClearBoth的理解

在CSS中我们会经常要用到“清除浮动”Clear,比较典型的就是clear:both; CSS手册上是这样说明的:该属性的值指出了不允许有浮动对象的边.这个属性是用来控制float属性在文档流的物理位置的. 当属性设置float(浮动)时,其所在的物理位置已经脱离文档流了,但是大多时候我们希望文档流能识别float(浮动),或者是希望float(浮动)后面的元素不被float(浮动)所影响,这个时候我们就需要用clear:both;来清除. 比如: 这个是第1列, 这个是第2列, 这个是第3列.

JS中的phototype是JS中比较难理解的一个部分

本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javascript的方法可以分为三类: a 类方法 b 对象方法 c 原型方法 例子: function People(name){this.name=name;//对象方法this.Introduce=function(){alert("My name is "+this

JS中的prototype理解

JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javascript的方法可以分为三类: a 类方法 b 对象方法 c 原型方法 例子: function People(name){  this.name=name;  //对象方法  this.Introduce=functi

认识和理解css布局中的BFC

认识和理解css布局中的BFC BFC的定义 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. Block Formatting Context 的元素的特点 其子元素会一个接一个地放置.垂直方向上他们的起点是一个包含块的顶部,两个相邻的元素之间的垂直距离取决于 ‘margin’ 特性. 相邻的块级元素的垂直边距会折叠(collapse). 每一个元素左外边(margin)与包含块的左边相接触(对于从右到左的格式化,右外边接触右边)

CSS定位深入理解 完全掌握CSS定位 相对定位和绝对定位

其实前面的标准流和浮动流都很理解,就是定位不太好理解,特别是相对定位和绝对定位,很多刚开始学的同学不好区分.因此这里,小强老师和大家一起分享CSS定位的学习. 通过我们前面的学习,我们网页布局方法: 1. 标准流   (最稳定) 2. 浮动流   (float 其次) 3. 定位流    ( 稳定性最后) 定位是完全脱离标准流的一种布局方式. 其实前面的标准流和浮动流都很理解,就是定位不太好理解,特别是相对定位和绝对定位,很多刚开始学的同学不好区分.因此这里,小强老师和大家一起分享CSS定位的学

简要的谈一谈我对CSS中长度单位的理解

CSS中的长度单位目前分为两种,分别是绝对长度和相对长度.绝对长度单位包括: in:英寸 cm:厘米 mm:毫米 pt:磅(1磅等于1/72英寸) pc:pica(1pica等于12磅) 以上五个就是CSS中定义的绝对长度单位,他们都是在我们实际生活中用的很多,但是在写CSS代码制作要在屏幕上显示的网页的时候,这种绝对长度单位用到的很少,我能想到的比较有用的地方只有给印刷品设置长度单位时可能会用到,虽然我没有接触过. 接下来就是相对长度单位,相对,顾名思义就是以某个长度作为参照,设置的相对长度的

Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链接等.比如在用户名输入框和密码输入框输入正确的用户名和密码,然后点击登录按钮进行登录.在Selenium自动化中,Selenium提供多种API来对HTML元素进行操作,对于每个HTML元素,需要一个可以标识它的标识符,在Selenium中称之为定位器,Selenium支持多种不同类型的定位器,有标