可视化编辑项目 编辑区 iframe 以外的解决方案

63 阅读1分钟

最近做一款简单的可视化编辑项目,需要可视化编辑 position 属性 为 fixed的元素。

但左边有菜单栏,左边有属性框,上边工具栏,哪一头都不靠边,关键右侧还是可拖动,左侧可展开,都改变中间元素的大小。

用 js 控制它实在有点过于复杂了。

当时能解决的办法,只想到了 iframe 标签,但这样会破坏原有的设计模式,中间还要插入各种传值方法,还要做数据同步,事件传递等等。

有没有一种办法能直接改变 position: fixed; 定位的父级元素?

有!

先说结论:

.ContentFixed {
    transform: scale(1);
    width: 100%;
    height: 100%;
    overflow: hidden;
}

效果:

image.png

蓝色框为 定位的边界,可以看到元素直接 相对于父级 left:-20px,top:-40px;完全可以满足需求

另外测试过,无宽度定位:

image.png

可以完全满足需求

这样就不用考虑 iframe 烦人的数据同步问题了!

这个方法用到的是 transform 的 值 不为 none 的情况下,会改变 position: fixed 的定位坐标。

引用一位博主的文章,解释了 position: fixed 为什么会出现这种现象。

www.jb51.net/article/213…

好家伙。。别人都是出现这个问题怎么解决。。

曾几何时,我也认为这个BUG。。

现在想想,只是我没有遇到真正需求它的时候吧。