css中position属性fixed于absolute的区别
hmc789 2024-11-24 16:46:11 技术文章 2 ℃
这是摘抄自MDN中对于css属性position的定义:
CSS position属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置
在日常编写html开发时,我总想有一只魔法棒该多好啊,只要一挥手,页面上所有元素都能放在我想要放的位置。可是愿望很美好,现实很残酷,不但残酷,还有个别不听话的元素经常跟我们作对。
新需求来了
领导找到我说,我的产品要有这样一个功能,在浏览器的最底端始终显示我们公司软件的下载按钮,快去做!
拿到需求后心想,这还不简单,这次分分钟中给你搞定。于是我这样写下
然后信心满满的拿着我的杰作给产品经理看
领导看完直说,小伙子不错吗,这么快就完成了,看好你哦。得到领导的夸奖别说多兴奋了 。
。。。
可是好景不长,半夜里领导突然打电话说,有客户投诉了,说咱么这是什么破产品,一个下载按钮不在底下好好呆着,乱跑!
吃了领导一顿劈头盖脸的批评,挂了电话,我陷入了深深的沉思。。我到底哪里做错了,明明用的absolute绝对定位,怎么会出现这种情况呢。
哎,学艺不精又能怪谁呢,问题出现了,现在最重要的是怎么快速解决吧
fixed出场
众里寻他千百度,慕然回首,你在mdn处。
原来css中绝对定位不只是absolute,还有一种叫做fixed的选项,MDN中这样说明的
fixed:元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变
相对于屏幕视口(viewport)的位置来指定元素位置,元素的位置在屏幕滚动时不会改变
一语惊醒梦中人啊,我那个absolute就是被滚动条滚动上去的啊,好想说一句MD.
于是我将我的absolute改成了fixed,终于解决了问题
同为绝对定位,区别在于哪里呢
absolute的位置是相对于整个页面,就像拿一个图钉把它定在了页面,页面滚动元素也会跟着滚动。
而fixed定位呢,是相对于屏幕视口(viewport),即相对于我们肉眼看到的页面屏幕,即使页面滚动,我们的视口是不改变的,所以我们看到的元素就是不动的。
ps:文中的MDN是我经常学习的网站,著名浏览器Fixfox出品