在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 如何讓子元素不受父元素 overflow:auto 的影響?

如何讓子元素不受父元素 overflow:auto 的影響?

父元素固定高度并設(shè)置overflow:auto;
子元素中有個(gè)下拉框,當(dāng)里面元素足夠多(高度超出父元素高度)時(shí),內(nèi)容被父元素遮擋
圖片描述

原諒我打碼。
我也考慮過(guò)把overflow:auto移到最外層,但是與需求還是有點(diǎn)區(qū)別,所以想問(wèn)下有沒(méi)有更好的實(shí)現(xiàn)方法

回答
編輯回答
久礙你

簡(jiǎn)單粗暴的例子如果是父元素固定高度,overflow:auto,當(dāng)子元素下拉框超過(guò)其父元素時(shí)并不會(huì)被遮擋。所以查找下你的代碼,看哪里是否有設(shè)置z-index或者其他之類的。

聲明一下,因?yàn)轭}主之前說(shuō)的是select下拉框加option,所以我上面那個(gè)回答是回答他之前那個(gè)問(wèn)題的,現(xiàn)在可以忽略這個(gè)回答。
--------------------------------更新分割線----------------------------------
可以設(shè)置下拉框樣式為position:fixed,然后點(diǎn)擊選擇時(shí),計(jì)算該選擇器距離左邊和頂部的距離,然后賦值給模擬的下拉框的樣式來(lái)實(shí)現(xiàn)

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Document</title>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<style>
.table{width:500px; height:100px; overflow-y:auto; border:1px solid #000;}
*{padding:0; margin:0;}
ul li{list-style:none;}
.choose-wrap{text-align:center;}
.choose-wrap p{width: 200px; border:1px solid #000; margin:0 auto;}
.choose-list{position:fixed; width:200px; text-align:center; border:1px solid #efefef; display:none; background-color:#fff;}
</style>

<body>
    <div class="table">
        <div class="choose-wrap">
            <p onclick="showChoose();">請(qǐng)選擇</p>
            <ul class="choose-list">
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
                <li>6</li>
                <li>7</li>
                <li>8</li>
                <li>9</li>
            </ul>
        </div>
    </div>
    <script>
    function showChoose(){
        $('.choose-list').css({'left':$('.choose-wrap p').offset().left,'display':'block','top':$('.choose-wrap p').offset().top+$('.choose-wrap p').height()})
    }
    </script>
</body>
</html>
2018年3月21日 03:36
編輯回答
拽很帥

外層有了overflow,內(nèi)層無(wú)法脫離這個(gè)范圍,即使絕對(duì)定位也不行。

像這個(gè)地方,有個(gè)思路,因?yàn)檫@里的下拉是div模擬的,可以把模擬的下拉框?qū)懺谀阍O(shè)置overflow的元素外,然后點(diǎn)擊下拉框,把模擬下拉框的東西通過(guò)位置計(jì)算定位過(guò)來(lái)。

舉栗:

clipboard.png
這個(gè)下拉就脫離不了外層的overflow。

但是這個(gè)日期就可以:

clipboard.png

因?yàn)檫@個(gè)日期寫在這個(gè)overflow元素的外面(body最后),然后當(dāng)我點(diǎn)擊文本框,它計(jì)算位置然后把這個(gè)日期控件給定位過(guò)來(lái)顯示。

clipboard.png

2017年2月12日 22:51
編輯回答
離魂曲

寫在父元素外面,通過(guò)position: fixed;定位到你點(diǎn)擊你那個(gè)下面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .box{
                width: 200px;
            }
            ul{
                overflow-y: auto;
                height: 100px;
                overflow-x: hidden;
            }
            ul li{
                position: relative;
                width: 200px;
            }
            .a{
                position: fixed;
                background: red;
                z-index: 100;
                display: none;
                width: 500px;
                height: 500px;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <ul>
                <li>11111</li>
                <li>11111</li>
                <li>11111</li>
                <li>11111</li>
                <li>11111</li>
                <li>11111</li>
            </ul>
        </div>
        <div class="a">jjjjjffffffffffjj</div>
        <script>
            var list = document.querySelectorAll('li');
            var a = document.querySelector('.a')
            list.forEach(function(el){
                el.onclick=function(event){
                    a.style.display = 'block';
                    a.style.top =el.offsetTop+'px';
                    a.style.left =el.offsetLeft+el.offsetWidth/2+'px';
                }
            })
        </script>
    </body>
</html>
2018年5月16日 11:10