CSS 之 posiiton:fixed 固定定位在父元素含有 tranform 属性时会失效,变成 absolute 的效果
一、简介
今天在网上看到了一条言论说:子元素posiiton:fixed 固定定位在父元素含有 tranform 属性时会失效,变成 absolute 的效果。虽然这个场景,我还没有在实际工作中用到过,但本着多学多记、有备无患的原则,我决定用代码验证一下,并用博客记录下来。
先说结论: 子元素设置 posiiton:fixed 固定定位,在父元素含有 tranform 属性时确实会失效,变成 absolute 的效果。也就是说其定位的参考对象从浏览器窗口变成了其父元素。
推测原因: 我一开始认为是因为父元素设置 tranform
属性后,就创建了一个新的BFC(块格式上下文),该元素内部的样式相对独立,所以子元素的fixed
定位,才会以父元素为参照对象。但是经过实验,其他可以创建BFC的样式却不会导致这种特性,说明还跟tranform
某些特性有关。
浏览器限制: 经过我的测试,这个特性表现,目前在大部分主流浏览器中存在(Chrome、FireFox、Safari、Edge、猎豹、搜狗、360浏览器),在IE和2345浏览器中,fixed还是fixed的表现。
二、实例代码
初始代码:
<style>.father {width: 200px;height: 200px;background-color: antiquewhite;}.son1 {position: fixed;top: 50px;left: 208px;width: 100px;height: 100px;background-color: #ccc;}.son2 {position: absolute;top: 50px;left: 208px;width: 100px;height: 100px;background-color: green;}
</style>
<body><div class="father">father<div class="son1">son1</div><div class="son2">son2</div></div>
</body>
页面效果:
注: 此时两个子元素,一个设置fixed
定位,另一个设置absolute
定位,因为定位方式不同,所以哪怕top
和left
的值相同,位置也不会相同。
给父元素增加transform
属性后的代码:
<style>.father {/* transform属性的三种效果 translate、scale、rotate 都会触发这种效果 */transform: translateX(0px); /* transform: scale(1); *//* transform: rotate(0); */width: 200px;height: 200px;background-color: antiquewhite;}.son1 {position: fixed;top: 50px;left: 208px;width: 100px;height: 100px;background-color: #ccc;}.son2 {position: absolute;top: 50px;left: 208px;width: 100px;height: 100px;background-color: green;}
</style>
<body><div class="father">father<div class="son1">son1</div><div class="son2">son2</div></div>
</body>
页面效果:
注: 因为父元素增加了transform
属性,所以子元素设置的fixed
定位失效,变成absolute
定位的效果,再加上son1和son2两个元素的top
和left
的值相同,所以son1元素与son2元素位置完全重叠。
CSS 之 posiiton:fixed 固定定位在父元素含有 tranform 属性时会失效,变成 absolute 的效果相关推荐
- html中fixed属性,css fixed固定定位属性
[实例介绍] css fixed固定定位属性 当容器的position属性值为fixed时,这个容器即被固定定位了.固定定位和绝对定位非常 相似,不过被定位的容器不会随着滚动条的拖动而变化位置.在视野 ...
- 固定定位失效问题(position:fixed;固定定位)
PC端项目: 父级设置了transform: translate(0, 0);后,子级的固定定位会失效:(解决办法,去除父级的transform: translate(0, 0); 即可) html: ...
- position:fixed 固定定位
一.定位 1.position:fixed 固定定位 元素的位置相对于浏览器窗口是固定位置.即使窗口是滚动的它也不会移动: 特性 特性:1.元素脱离正常文档流,不占位(也脱离文本流,全脱)2.始终相对 ...
- 1、position:fixed 固定定位
一.定位 1.position:fixed 固定定位 元素的位置相对于浏览器窗口是固定位置.即使窗口是滚动的它也不会移动: 特性 特性:1.元素脱离正常文档流,不占位(也脱离文本流,全脱)2.始终相对 ...
- postionfixed固定_详解如何解决position:fixed固定定位偏移问题
问题 css固定定位position:fixed很容易使用,就是相对浏览器的viewport进行定位,top:0;left:0就是在左上角. .container{ width: 100px; hei ...
- position:fixed 实现相对于父元素定位
position:fixed 实现相对于父元素定位 比如:中间内容区域的大小固定为1000px,对应不同的浏览器宽度,要使得某一个资源子固定在相对于内容区域的某一个位置,就不能使用 left:xxx, ...
- 定位:relative相对定位、absolute绝对定位、fixed固定定位
作者有话说:在学定位之前有了解过吗?再没学浮动之前,这些块元素标签会出现在一列,要想实现并排就可以使用浮动float,现在我们可以学习定位,给背景图片或者图片.div.border等添加属性等,有定位 ...
- No.11 position定位 之 fixed固定定位
在css中,使用position(定位),它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素.甚至是浏览器窗口本身的位置. 本篇介绍: fixed(固定定位) fixed定 ...
- CSS-position: fixed固定定位
固定定位 <!DOCTYPE html> <html><head><meta charset="utf-8"><title&g ...
最新文章
- Xamarin Android项目提示SDK版本太老
- [算法学习] 线段树,树状数组,数堆,笛卡尔树
- 浅谈Python和VC中的编码问题(转)
- 软件测试职业发展之路的反思(转)
- NOIP模拟测试6「那一天我们许下约定(背包dp)·那一天她离我而去」
- 怎么格式化电脑_U盘格式化后数据能恢复吗?人人都能学会的恢复方法!
- 如何在Wireshark确定数据集?
- 幼儿园ppt计算机考试试题,全国“xx杯”计算机应用基础类说课大赛优秀作品:幼儿园里的各类朋友说课课件.ppt...
- java.net.BindException: Address already in use解决方法
- JavaScript:综合案例---房贷计算器的实现
- 使用grep命令快速定位代码位置
- vue-router小案例-后台管理路由
- Lua解析器管理器(封装解析器通用函数(销毁解析器,垃圾清理),通过ab包加载lua文件的加载器)
- android虚拟摇杆
- 植物大战僵尸_修改存档和金钱
- 华为路由器ospf路由表解读_华为路由如何建立OSPF网络详解
- 用户登录和用户注册案例
- 天猫2月咖啡行业数据分析(咖啡品牌销量排行)
- springboot使用flyway
- Win32绘图总结篇(点、直线、折线、贝塞尔曲线、矩形、椭圆、圆弧、弓形、扇形、多边形等)