CSS那些破B事儿系列之position:fixed定位失效
闲言:自己css水平不够导致前段时间碰到position:fixed定位失效的问题,麻蛋,fixed定位不是一直都是相对于屏幕视口(viewport)的位置来指定fixed属性元素的位置么?哎,碰到这种问题只能说自己太菜了,于是各种翻资料,看看fixed到底基于什么定位,于是就有了下面这些拗心的解释!!!首先看下MDN上是怎么说的:
fixed
:不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform 属性非 none 时,容器由视口改为该祖先。
What?
好吧,我承认这部分MDN看的实在是少,工作最初就接触html、css,遵循着老路就走下来了,这里有两个我之前不知道的概念,
层叠上下文
与元素祖先的 transform 属性非 none
,看到MDN的解释就是要fixed定位的元素如果其所在DOM结构的父元素或者祖先元素出现transform 属性非 none 时
fixed相对的位置会由基于屏幕视口(viewport)变为基于其父元素或者祖先元素。好坑啊!!!引用个例子来说明一下:
.transformEle {
width: 400px;
height: 400px;
transform: translateY(200px);
background: #00D287;
}
.fixedEle {
position: fixed;
bottom: 0;
width: 50px;
height: 50px;
background: #FF3131;
}
文章图片
文章图片
【CSS那些破B事儿系列之position:fixed定位失效】如果
transformEle
使用了transform
,而fixedEle
使用了position: fixed
,那么position: fixed
不会有固定在visual viewport
上,实际结果相当于相对transformEle
元素定位,就是fixed
相对的不是visual viewport
,而是transformELe
, 产生这样的原因主要是因为transform
和position: fixed
使用了不同的坐标系统。- 层叠上下文
这个有时间再继续写一下。
推荐阅读
- 汇讲-勇于突破
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 思友人
- 那些年我们玩过的街机
- 那些反串过的艺人-最是美色如醉人
- 罗塞塔石碑的意义(古埃及文字的起源,圣书体文字是如何被破解的)
- 行走诗丨那书生在破石村喊了五声
- 【挑战日更】Day6.《终身学习.10个你必须掌握的未来生存法则》摘录之三
- 糖尿病肾病那些事儿
- 那些年,我们一起追过的《流星雨》