CSS - position属性详解

相信很多同学在编写、设计网站的时候多多少少用过css里的position这个属性,但是很多时候网页显示出来的和自己想象的不太一样,这篇笔记来教你怎么使用position。

position属性一共有5个不同的值,下表借鉴于W3Schools

描述
absolute 生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。元素的位置通过left, right, top, bottom进行规定
fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过left, right, top, bottom进行规定
relative 生成相对定位的元素,相对于其正常位置定位。元素的位置通过left, right, top, bottom进行规定
static 默认值,忽略 top, bottom, left, right和z-index
inherit 从父元素继承该属性的值

熟悉了表格里的属性后,请看如下代码示例:

<div class="outer"> <!-- 黑色 -->
  <div class="inner1"></div> <!-- 红色 -->
  <div class="inner2"></div> <!-- 黄色 -->
  <div class="inner3"></div> <!-- 蓝色 -->
</div>
.outer {
  width: 400px;
  height: 300px;
  background: black;
  margin: auto;
  position: absolute;
  z-index: -1;
}

.inner1 {
  width: 100px;
  height: 100px;
  background: red;
  position: absolute;
}

.inner2 {
  width: 100px;
  height: 100px;
  background: yellow;
  position: relative;
  left: 100px;
}

.inner3 {
  width: 100px;
  height: 100px;
  background: blue;
  position: inherit; /* absolute */
  left: 50px;
  top: 50px;
  /* z-index: -1; */
}
上方代码执行结果

  1. 设置了一个外部container,为三个inner的父元素,absolute绝对定位
  2. 子元素 inner1 被设为absolute,使其跳出了当前DOM流的约束
  • 因为父元素不是static,所以子元素将相对于父元素来定位。
  • 当top, bottom, left, right四个属性没有被赋值时,并且父元素里没有其它元素在DOM tree里位于它前面时,它将位于父元素的左上角;有其它元素在它前面时,它将位于此元素下面的左上角。
  • 当top, bottom, left, right四个属性被赋值时,它的位置将相对于父元素来定位。
  • 如果父元素为static,那么absolute元素将相对于浏览器绝对定位。
  1. 子元素 inner2 被设为relative,它将相对于正常位置,通过left, right, top, bottom来定位
  • 重要:inner2的left被设置为100px,但它却紧挨着inner1元素,由此可以看出inner1元素因被设置为absolute绝对定位而脱离了DOM,不然inner2应该距离inner1 100px的长度。
  1. 子元素 inner3 用来解释inherit和属性z-index
  • inner3继承了父元素outer的position属性的值,所以为absolute。
  • z-index属性 非常有用,用来设置z轴上元素的排列,也就是上下层叠关系,值越大元素越在上层。z-index在UI布局上发挥了很大作用,让手机屏幕成为了一个三维空间,著名的Material UI对z-index的应用是一个典例。
  1. fixed在例子中没有出现,fixed的元素将相对于viewport(视口)进行定位,不受何上下滚动条的约束,感兴趣的同学可以去尝试一下。
  2. 最后,给大家一个在线编辑代码的地址,可以去自己尝试一下,自己动手永远记得更加深刻
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,744评论 1 92
  • 当在这一个页面上实现布局和定位有几种不同的技术。使用哪种技术,很大程序上取决于内容和目标页面,因为有很多技术比别人...
    lulu_c阅读 1,049评论 0 5
  • CSS的position总是属性很容易让人弄混~ 为了仔细区别它们,所以今天总结一下CSS的position属性~...
    fehysunny阅读 2,914评论 0 7
  • 之前介绍过CSS浮动float详解,本篇介绍的绝对定位absolute和浮动float有部分相似性。如果能理解浮动...
    张歆琳阅读 96,614评论 39 192
  • 原本是有课的 因为驾校体检耽误了 室友说上课很无聊 我索性就不去了 没有钥匙 就坐在湖边晒晒太阳咯 最近一个月发生...
    林深时见鹿有阅读 267评论 0 0