この問題では、ページに2つのコンテナがあります。それぞれはoverflow:autoに設定されています。位置絶対divのスクロールコンテナ上に表示されるCSS
上部のコンテナ(緑色)には一連のボタンがあります。各ボタンはポップアップ(青色)の表示を切り替えます。この青いコンテナは、上のコンテナのスクロール位置に関係なく、下のコンテナ(赤色)の上に表示する必要があります。
このスクリーンショットのように、ポップアップをposition:absoluteに設定することで、そこに行く途中に入ることができます。
しかし、我々はさらに下にスクロールし、以前にそれが正しくボタンの下に配置されていない隠されたボタンをクリックしようとします。
私は、ボタンを押して上のJavascriptの計算を必要としないソリューションをしたいと思います。私はまた、ポップアップをページのサイズ変更時でもボタンの下に残しておきたいので、位置固定を使用したくありません。
次は、この問題を再現するためのコードです。ここで
function togglePopup(index) {
var element = document.getElementById('popup'+index);
if (element.style.display === 'none') {
element.style.display = '';
} else {
element.style.display = 'none';
}
}
.outerWrapper {
width: 200px;
height: 400px;
}
.upper {
height: 30%;
overflow:auto;
border: 1px solid green;
}
.lower {
height: 70%;
overflow: auto;
border: 1px solid red;
}
.row {
height: 70px;
}
.popup {
border: 1px solid blue;
background-color: white;
height: 100px;
width: 50px;
position:absolute;
}
<div class="outerWrapper">
<div class="upper">
<div class="row">
<button onclick="togglePopup(1)">test</button>
<div class="popup" id="popup1" style="display:none">
popup content
</div>
</div>
<div class="row">
<button onclick="togglePopup(2)">test</button>
<div class="popup" id="popup2" style="display:none">
popup content
</div>
</div>
<div class="row">
<button onclick="togglePopup(3)">test</button>
<div class="popup" id="popup3" style="display:none">
popup content
</div>
</div>
</div>
<div class="lower">
</div>
</div>
を赤いボックス。私はそれが押されたボタンの真下に現れるようにしようとしています。これは本当にドロップダウンに似ていることを意図しています。 – Andrew