css里面设置滚动条用的overflow-y,可是里面有用到了position就不气作用了怎么办?

不加滚动条时,样式是:

clipboard.png
但是列表是要加上下的滚动条,加了以后就变成了

clipboard.png
里面的定位就不生效了 ,谁知道该如何解决啊?试了很多办法了 没用

阅读 6.4k
4 个回答

你层级有问题,而且有滚动条的div不能有relative

建议你这种就把窗口写在body里面吧,让弹窗基于body position fixed定位,都通用一个,点击时获取你点击的event clientX,clientY坐标,然后动态赋值给弹窗的left和top。

<!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: #FFF;
                z-index: 100;
                display: none;
            }
        </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';
                    console.log(el.offsetTop)
                    a.style.top =el.offsetTop+'px';
                    a.style.left =el.offsetLeft+el.offsetWidth/2+'px';
                    //a.style.left = event.clientX+'px';
                    //a.style.top = event.clientY+'px';
                }
            })
        </script>
    </body>
</html>

赞同二楼的解决方法,灵活;而且这个项目里,类似的弹出框很多的话,还可以专门写个这样的组件,方便使用~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题