最近做一款简单的可视化编辑项目,需要可视化编辑 position 属性 为 fixed的元素。
但左边有菜单栏,左边有属性框,上边工具栏,哪一头都不靠边,关键右侧还是可拖动,左侧可展开,都改变中间元素的大小。
用 js 控制它实在有点过于复杂了。
当时能解决的办法,只想到了 iframe 标签,但这样会破坏原有的设计模式,中间还要插入各种传值方法,还要做数据同步,事件传递等等。
有没有一种办法能直接改变 position: fixed; 定位的父级元素?
有!
先说结论:
.ContentFixed {
transform: scale(1);
width: 100%;
height: 100%;
overflow: hidden;
}
效果:
蓝色框为 定位的边界,可以看到元素直接 相对于父级 left:-20px,top:-40px;完全可以满足需求
另外测试过,无宽度定位:
可以完全满足需求
这样就不用考虑 iframe 烦人的数据同步问题了!
这个方法用到的是 transform 的 值 不为 none 的情况下,会改变 position: fixed 的定位坐标。
引用一位博主的文章,解释了 position: fixed 为什么会出现这种现象。
好家伙。。别人都是出现这个问题怎么解决。。
曾几何时,我也认为这个BUG。。
现在想想,只是我没有遇到真正需求它的时候吧。