Css 在容器分区内弹出,扩展容器高度,不显示在顶部

Css 在容器分区内弹出,扩展容器高度,不显示在顶部,css,html,Css,Html,我在一个类似Excel的网格上工作,在正确显示弹出窗口时遇到了问题,因为底部似乎被container div截断了 问题非常类似于,我正在寻找类似的结果,但在包含div中。我可以在没有包含视口的情况下实现我想要的布局 基本布局和样式为: <body> <div class="viewport"> <div class="canvas"> <div class="rows">

我在一个类似Excel的网格上工作,在正确显示弹出窗口时遇到了问题,因为底部似乎被container div截断了

问题非常类似于,我正在寻找类似的结果,但在包含div中。我可以在没有包含视口的情况下实现我想要的布局

基本布局和样式为:

<body>
    <div class="viewport">
        <div class="canvas">
            <div class="rows">
                <div class="row">
                    <div class="cell">
                        <div class="cell__Value">
                            <div>
                                <div class="popup">
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

.viewport {
    height: 150px;
    width: 400px;
    background-color: blue;
    overflow: hidden;
    position: absolute;
    top: 35px;
}

.canvas {
    height: 149px;
    width: 399px;
    background-color: lightblue;
    overflow-y: scroll;
    overflow-x: auto;
    position: absolute;
}

.rows {
    height: 100px;
    width: 700px;
    background-color: red;
    overflow: hidden;
}

.row {
    background-color: darkred;
    height: 35px;
    overflow: hidden;
}

.cell {
    background-color: green;
    position: absolute;
    left: 100px;
    width: 100px;
    height: 35px;
    overflow: visible;
}

.popup {
    background-color: lightgreen;
    opacity: 0.8;
    position: relative;
    width: 150px;
    height: 200px;
}

.视口{
高度:150像素;
宽度:400px;
背景颜色:蓝色;
溢出:隐藏;
位置:绝对位置;
顶部:35px;
}
.帆布{
高度:149px;
宽度:399px;
背景颜色:浅蓝色;
溢出y:滚动;
溢出-x:自动;
位置:绝对位置;
}
.行{
高度:100px;
宽度:700px;
背景色:红色;
溢出:隐藏;
}
.行{
背景色:暗色;
高度:35px;
溢出:隐藏;
}
.细胞{
背景颜色:绿色;
位置:绝对位置;
左:100px;
宽度:100px;
高度:35px;
溢出:可见;
}
.弹出窗口{
背景颜色:浅绿色;
不透明度:0.8;
位置:相对位置;
宽度:150px;
高度:200px;
}
我已经使用JSFIDLE-创建了一个模拟版本,但我也无法在这里使用它

基本上,画布必须滚动y-overflow内容,以便网格行可以滚动,而不会填满整个页面。小提琴中的弹出窗口是一个信息div,当用户单击单个单元格时,它应该出现。如模拟所示,大弹出窗口的高度会导致视口和画布滚动,而不允许该弹出窗口显示在视口的顶部和部分外部

我试图听从这里的建议,但没有用。我还尝试浮动弹出窗口并增加z索引


如何根据需要显示弹出窗口?

如果我了解您的问题,修复应该很容易

只需将位置设置为“固定”,那么它将位于所有其他位置之上。 这是弹出窗口的一种非常常见的方法

.popup {
background-color: lightgreen;
opacity: 0.8;
position: fixed;
width: 150px;
height: 200px;}

height
正在影响..您是否错过了父div(cell\u值)的css?我没有在你的提琴或代码片段中找到它,你链接到的文章说,它和祖父母div与孩子的关系是导致这种效果发生的原因。如果我有时间制作和测试小提琴,我会为你测试,但我今天早上得上班。如果我有时间的时候仍然没有回答这个问题,我会进一步研究。试试这个:.popup{overflow-y:hidden;}@Chris-在我尝试任何操作之前,小提琴与当前的标记/样式一样&类为
.cell\u Value
的div没有应用任何有意义的样式。根据文章将溢出样式从祖父母单元格移到这个div中似乎并没有达到我想要的效果-我怀疑这是由于与其他位置的关系:绝对祖先@zer00ne,隐藏弹出窗口的溢出不是我想要实现的。我希望整个弹出内容都是可见的,在网格顶部,并在必要时从视口中展开。在小提琴中工作得非常好,但当我对实际标记执行相同操作时,弹出内容仍然被切断。需要找出是什么原因造成的…这是因为你使用了溢出:隐藏;打开。视口