固定尺寸父元素(overflow:auto/scroll;)中下拉菜单组件如何全部显示而不会把父元素撑高

https://jsfiddle.net/6p30m3of/2/ 类似于这种情况
CSS父元素有横向滚动条,子元素中的按钮弹出内容比父元素内容高,如何使按钮的弹出内容不会把父元素撑高,并且可以显示出来,下面是相关代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
    <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
    <!-- 新 Bootstrap 核心 CSS 文件 -->
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
</head>
<body>
    <div style="width: 500px;height: 100px;border: 1px solid #000000;overflow:auto;">
        <table style="width: 800px!important;" class="table" width="">
            <tr  ><td >1</td><td width="100">1</td><td width="100" >1</td><td width="100"> 1</td><td><td width="100">1</td><td width="100">1</td><td width="100">1</td><td width="100" >1</td><td>
                <div class="dropdown">
                <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
                    Dropdown
                    <span class="caret"></span>
                </button>
                <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
                    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
                </ul>
            </div></td></tr>
        </table>

    </div>
</body>
</html>
阅读 5.2k
2 个回答

使用了 overflow 只要不是默认的 visible 会把子元素的内容给控制住的。

我想的解决方案是:最外层的div在来个包裹,然后<ul>根据这个div定位,然后还需要js配合动态判断lefttop。想想都疯了。

有个方法 挺麻烦的。
<ul>需要absolute脱离文档流。
但是bootstrap给他的父级元素 <div class="dropdown">开了相对定位。你需要给他恢复默认 <div class="dropdown" style="position: static;">然后自己再算<ul>的位置和宽度。
最后右侧会有超出,看起来效果不太好。

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