一、简介

今天在网上看到了一条言论说:子元素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定位,因为定位方式不同,所以哪怕topleft的值相同,位置也不会相同。

给父元素增加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两个元素的topleft的值相同,所以son1元素与son2元素位置完全重叠。

CSS 之 posiiton:fixed 固定定位在父元素含有 tranform 属性时会失效,变成 absolute 的效果相关推荐

  1. html中fixed属性,css fixed固定定位属性

    [实例介绍] css fixed固定定位属性 当容器的position属性值为fixed时,这个容器即被固定定位了.固定定位和绝对定位非常 相似,不过被定位的容器不会随着滚动条的拖动而变化位置.在视野 ...

  2. 固定定位失效问题(position:fixed;固定定位)

    PC端项目: 父级设置了transform: translate(0, 0);后,子级的固定定位会失效:(解决办法,去除父级的transform: translate(0, 0); 即可) html: ...

  3. position:fixed 固定定位

    一.定位 1.position:fixed 固定定位 元素的位置相对于浏览器窗口是固定位置.即使窗口是滚动的它也不会移动: 特性 特性:1.元素脱离正常文档流,不占位(也脱离文本流,全脱)2.始终相对 ...

  4. 1、position:fixed 固定定位

    一.定位 1.position:fixed 固定定位 元素的位置相对于浏览器窗口是固定位置.即使窗口是滚动的它也不会移动: 特性 特性:1.元素脱离正常文档流,不占位(也脱离文本流,全脱)2.始终相对 ...

  5. postionfixed固定_详解如何解决position:fixed固定定位偏移问题

    问题 css固定定位position:fixed很容易使用,就是相对浏览器的viewport进行定位,top:0;left:0就是在左上角. .container{ width: 100px; hei ...

  6. position:fixed 实现相对于父元素定位

    position:fixed 实现相对于父元素定位 比如:中间内容区域的大小固定为1000px,对应不同的浏览器宽度,要使得某一个资源子固定在相对于内容区域的某一个位置,就不能使用 left:xxx, ...

  7. 定位:relative相对定位、absolute绝对定位、fixed固定定位

    作者有话说:在学定位之前有了解过吗?再没学浮动之前,这些块元素标签会出现在一列,要想实现并排就可以使用浮动float,现在我们可以学习定位,给背景图片或者图片.div.border等添加属性等,有定位 ...

  8. No.11 position定位 之 fixed固定定位

    在css中,使用position(定位),它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素.甚至是浏览器窗口本身的位置. 本篇介绍: fixed(固定定位) fixed定 ...

  9. CSS-position: fixed固定定位

    固定定位 <!DOCTYPE html> <html><head><meta charset="utf-8"><title&g ...

最新文章

  1. Xamarin Android项目提示SDK版本太老
  2. [算法学习] 线段树,树状数组,数堆,笛卡尔树
  3. 浅谈Python和VC中的编码问题(转)
  4. 软件测试职业发展之路的反思(转)
  5. NOIP模拟测试6「那一天我们许下约定(背包dp)·那一天她离我而去」
  6. 怎么格式化电脑_U盘格式化后数据能恢复吗?人人都能学会的恢复方法!
  7. 如何在Wireshark确定数据集?
  8. 幼儿园ppt计算机考试试题,全国“xx杯”计算机应用基础类说课大赛优秀作品:幼儿园里的各类朋友说课课件.ppt...
  9. java.net.BindException: Address already in use解决方法
  10. JavaScript:综合案例---房贷计算器的实现
  11. 使用grep命令快速定位代码位置
  12. vue-router小案例-后台管理路由
  13. Lua解析器管理器(封装解析器通用函数(销毁解析器,垃圾清理),通过ab包加载lua文件的加载器)
  14. android虚拟摇杆
  15. 植物大战僵尸_修改存档和金钱
  16. 华为路由器ospf路由表解读_华为路由如何建立OSPF网络详解
  17. 用户登录和用户注册案例
  18. 天猫2月咖啡行业数据分析(咖啡品牌销量排行)
  19. springboot使用flyway
  20. Win32绘图总结篇(点、直线、折线、贝塞尔曲线、矩形、椭圆、圆弧、弓形、扇形、多边形等)

热门文章

  1. 生活娱乐 医院体检谷丙转氨酶偏高的会影响入职吗
  2. 树莓派-02-网线直连电脑问题-网络不稳定
  3. php blog ---- 感谢一位朋友
  4. java mkfifo_命名管道FIFO和mkfifo函数
  5. 从零开始搭建hadoop集群01
  6. IDEA中代码格式化快捷键冲突如何解决
  7. 视觉SLAM十四讲笔记-第五讲 相机与图像
  8. C++显示调用析构函数
  9. 软件设计原则之高内聚与低耦合
  10. 用Packstack 安装 Openstack,无法启动实例,cpu affinity is not supported