一个关于css的定位问题

最近在用react实践一个类似模态框的组件,要求在中间弹出一个窗口,实际上这个react bootstrap组件库中也有相关实现,但是提到:

这个modal要直接渲染到body下面,否则可能出现定位不准确的问题。

看上去蛮有道理的样子,react bootstrap实现的过程还费了一番周折,用到了unstable_renderSubtreeIntoContainer这个方法。

但是我始终想不明白什么时候会出现定位不对的问题,因为如果用了fixed,那不就是相对于浏览器视窗进行定位了么,跟挂在哪一个节点下有什么关系??

我大概抽象出来了自己实现的css逻辑:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .modal{
            width: 200px;
            height:200px;
            position: fixed;
            top:calc(50% - 100px);
            left:calc(50% - 100px);
            background: grey;
            display: flex;
        }
        .modal p{
            margin: auto;
        }
        .modalOuter{
            width: 400px;
            height:40%;
            position: fixed;
        }
    </style>
</head>
<body>

<div class="modalOuter">
    <div class="modal">
        <p>this is a modal</p>
    </div>
</div>

</body>
</html>

感觉这个class="modal"的div放在哪都可以,并没有什么所谓的定位不对的问题。

所以想请高手问问:定位不对的问题到底在什么情况下可以浮现?

——————

顺便如果有热心人士想请问: 自己由于在准备前端暑期实习的申请,一直在研究js而忽视css,看了看“html5与css3权威指南-陆凌牛”还有“精通css高级web标准解决方案”绿皮书,但是感觉讲的内容浅又少,想问问有什么书是深入讲解css的?毕竟笔试面试都是考一些刁钻的内容。谢谢

因为fixed元素并不总是相对于视窗进行定位的,父元素发生变换,也就是transfrom属性发生改变,如平移或旋转,会对固定定位的子元素产生影响。
固定定位不固定

  • 如何获取this.props.children里的子节点的状态
  • setInterval为什么只执行一次
  • ios下使用-webkit-overflow-scrolling:touch带来的bug
  • 关于前端速度的优化问题?
  • fixed 定位的div,right为负值,如何能通过水平滚动条让它正常显示出来,像登录百度账户后右侧显示的新闻框那样(如下图)
  • webpack external react 时只能使用其全局变量或相对路径怎么办?
  • 【css】position:absolute;是相对于那个元素定位?
  • 能否实现相对同级元素设置绝对定位?
  • 列表项li为什么会多出来2px的内边距?
  • 想问下网站改版的话怎么样让用户的浏览器自动加载新的静态资源
  • react key的问题