css 迷惑的position
迷惑的position
小加发现实际开发中position使用频率很高,但很多人却对position不是很了解,导致开发中出现各种问题,现在让我门一起来看看这个迷惑的position吧~
static
元素未定位,默认出现在普通流中,即元素从左到右,从上到下的方式布局~
HTML
<div class="section">
<h3 class="section__title">Static - 普通流</h3>
<div class="section__boxes row text-center">
<div class="header-box col-xs-12">
header box
</div>
<div class="left-box col-xs-4">
left box
</div>
<div class="right-box col-xs-8">
right box
</div>
<div class="bottom-box col-xs-12">
bottom box
</div>
</div>
</div>
CSS
.section {
margin-bottom: 100px;
}
.section__boxes {
font-size: 22px;
}
.header-box {
background-color: #0981B2;
height: 100px;
}
.left-box {
background-color: #FF002D;
height: 200px;
}
.right-box {
background-color: #FFF419;
height: 200px;
}
.bottom-box {
background-color: #B037B2;
height: 100px;
}
效果图
relative
相对于该元素所在普通流的位置进行定位,现在我门让left box
相对于其位置向右边移动100像素
。
CSS
.section--relative > .left-box {
position: relative;
left: 100px;
}
效果图
对比static和relative两个效果图,你可以看到left box
确实是相对于其所在正常流位置进行定位,向右移动了100像素
。
absolute
相对于static定位以外的第一个父元素进行定位,即相对于第一个非处于正常流的父元素定位,现在我们将left box
设置为absolute
,并且向下移动1150像素
。
CSS
.section--absolute > .left-box {
position: absolute;
top: 1150px;
}
效果图
由于查找left box
的祖先元素中,未发现有设置非static
的元素,其绝对定位是相对于根元素进行移动的。
relative和absolute对比
CSS
我们设置其父亲元素为relative
,然后让其元素向下、右各移动100像素
。
.section--absolute {
position: relative;
}
.section--absolute > .left-box {
position: absolute;
top: 100px;
left: 100px;
}
效果图
由于其父元素设置了relative
,此时该元素是相对于其父亲进行定位的,而非根元素了~
我们再对比下relative和此时的效果图,你会发现left box
的实现效果一致,但是right box
却有一点不一样。这是因为当元素设置relative
时,其元素依然会<mark>占据所在普通流的的位置</mark>,而absolute
会<mark>脱离普通文档流</mark>,此时right box
就往左边布局了。
fixed
不管浏览器内容怎么滚动等操作,都是相对于浏览器窗口进行定位,即固定位置。我门将元素固定在浏览器的顶部。
HTML
<div class="section">
<div class="section__boxes section-fixed row text-center">
<p>fixed - 固定位置 - 相对浏览器窗口定位</p>
</div>
</div>
CSS
.section-fixed {
position: fixed;
top: 0;
right: 0;
left: 0;
background-color: #15FF44;
}
.section-fixed > p {
margin: 0;
}
效果图
你可以看到随着浏览器滚动,其元素的位置依然在浏览器窗口的顶部,未发生任何变化。
关键知识点
value description static 默认值。没有定位,元素出现在<mark>正常的流中</mark>(忽略 top, bottom, left, right 或者 z-index 声明)。 relative 生成相对定位的元素,<mark>相对于其正常位置</mark>进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。 absolute 生成绝对定位的元素,<mark>相对于static定位以外</mark>的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 fixed 生成绝对定位的元素,<mark>相对于浏览器窗口</mark>进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 inherit 规定应该从<mark>父元素继承</mark> position 属性的值。 w3school
资源
在线测试
源代码
本文转载于:css 迷惑的position
css 迷惑的position的更多相关文章
- 对CSS中的Position、Float属性的一些深入探讨
对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个CSS属性,对于这两个属性的使用上面可能大多数人存在一些模糊与不 ...
- Css中的Position属性
Css中的Position属性 Css属性在线查询地址: http://www.css88.com/book/css/properties/index.htm CSS 中的 position 属性 在 ...
- 装载:对CSS中的Position、Float属性的一些深入探讨
对CSS中的Position.Float属性的一些深入探讨 对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个 ...
- DIV CSS布局中position属性用法深入探究
本文向大家描述一下DIV CSS布局中的position属性的用法,position属性主要有四种属性值,任何元素的默认position的属性值均是static,静态.这节课主要讲讲relative( ...
- CSS定位属性Position详解
CSS中最常用的布局类属性,一个是Float(CSS浮动属性Float详解),另一个就是CSS定位属性Position. 1. position:static 所有元素的默认定位都是:position ...
- 关于css中的position定位
希望这波position可以有帮助^_^! css中的position属性主要分为:static.relative.absolute.fixed.center.page.sticky(红色是css3中 ...
- css中对position的几种定位方式的最佳诠释
关于元素的position定位的理解,牛客网的hardy给出了一个比较好的理解: 在html中网页可以看成一个立体的空间,一个完整的页面是由很多个页面堆积形成的,如上图所示 CSS中Positio ...
- 理解css中的position属性
理解css中的position 两种类型的定位 static类型:只有一个值position: static.position默认值 relative类型:包括三个值,这三个值会相互影响,允许你以特定 ...
- css定位 与position
本文同时发表于本人个人网站 www.yaoxiaowen.com 在正式讨论position之前,我们需要知道几个概念. 块元素:独占一行的元素.比如div,h1~h6,p等,它是自带换行的. 内联元 ...
随机推荐
- VT 入门篇——最小 VT 实现(上)
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- Qt:QJsonArray
0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...
- (六)目标检测算法之YOLO
系列文章链接: (一)目标检测概述 https://www.cnblogs.com/kongweisi/p/10894415.html (二)目标检测算法之R-CNN https://www.cnbl ...
- 大学英语四级之听力Key Words
Key Words关键词 所谓关键词,指的是短文中能够标志着正确答案的词,也就是说,关键词后面往往是正确答案 听力中的关键词可为宏观和微观两方面,一般出现在如下10种位置. 一.宏观方向(主旨大意) ...
- iOS 产品新需求,要让collectionView 的背景跟着Cell 一块儿动!!!
标题如上!看如何解决 最近产品经理来需求了,就像标题上的一样,要求,给collectionView添加一个背景,并且这个背景,还能跟着cell滑动这么一个效果,这个需求把我看懵了,让我不知所措,这该如 ...
- petite-vue-源码剖析-v-for重新渲染工作原理
在<petite-vue源码剖析-v-if和v-for的工作原理>我们了解到v-for在静态视图中的工作原理,而这里我们将深入了解在更新渲染时v-for是如何运作的. 逐行解析 // 文件 ...
- Lua中如何实现类似gdb的断点调试--04优化钩子事件处理
在第一篇的01最小实现中,我们实现了一个断点调试的最小实现,在设置钩子函数时只加了line事件,显然这会对性能有很大的影响.而后来两篇02通用变量打印和03通用变量修改及调用栈回溯则是提供了一些辅助的 ...
- Mysql引擎、隔离机制、存储结构、索引
目录 数据库常用的两种引擎 两种引擎差异对比 如何选择引擎 两个引擎索引结构 查找mysql数据存储位置方式 MyISAM InnoDB 1. 非独立表空间 2. 独立表空间 3. idb文件存的哪些 ...
- 从零开始,开发一个 Web Office 套件(11):支持中文输入法(or 其它使用输入法的语言)
这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
- Go值类型和引用类型+作用域+空白标识符+常量
值类型和引用类型 所有像 int.float.bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值: 当使用等号 = 将一个变量的值赋值给另一个变量时,如:j ...