flex引起的table响应式问题

发布于 2022-09-11 15:22:23 字数 5670 浏览 39 评论 0

问题:在做响应式开发时遇到了flex布局,与table表格一起使用的情况,table是采用bootstrap的响应式table,但发现在flex布局中,table的宽度就不会变化。如图:

flex布局中的table

图片描述

图片描述

float布局中的table
图片描述

图片描述

在flex布局中的table当页面宽度不够时页面有了横向滚动条,这显然不是我响应的效果,但不知道这是为什么

代码如下:
1、flex布局:

<style>
<style>
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    table{
        width: 100%;
        max-width: 100%;
        border-spacing: 0;
        border-collapse: collapse;
    }
    th,td{
        padding: 5px;
        border: 1px solid #ccc;
        white-space: nowrap;
    }
    .main{
        border: 1px solid #f60;
    }
    .table-responsive{
        overflow-x: auto;
    }
    .clearfix::before,
    .clearfix::after{
        display: table;
        content: " ";
        clear: both;
    }


    .container{
        display: flex;
        max-width: 1200px;
        margin: 20px auto;
    }
    .left-menu{
        flex: 0 0 200px;
        height: 400px;
        border: 1px solid #ccc;
    }
    .right-container{
        flex: 1;
        padding-left: 30px;
    }
</style>
<div class="container">
    <div class="left-menu">左侧菜单</div>
    <div class="right-container">
        <div class="main">
            <div class="table-responsive">
                <table>
                    <thead>
                        <tr>
                            <th>列1</th>
                            <th>列2</th>
                            <th>列3</th>
                            <th>列4</th>
                            <th>列5</th>
                            <th>列6</th>
                            <th>列7</th>
                            <th>列8</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>td列1td列1</td>
                            <td>td列2td列2</td>
                            <td>td列3td列3</td>
                            <td>td列4td列4</td>
                            <td>td列5td列5</td>
                            <td>td列6td列6</td>
                            <td>td列7td列7</td>
                            <td>td列8td列8</td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

2、float布局

<style>
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    table{
        width: 100%;
        max-width: 100%;
        border-spacing: 0;
        border-collapse: collapse;
    }
    th,td{
        padding: 5px;
        border: 1px solid #ccc;
        white-space: nowrap;
    }
    .main{
        border: 1px solid #f60;
    }
    .table-responsive{
        overflow-x: auto;
    }
    .clearfix::before,
    .clearfix::after{
        display: table;
        content: " ";
        clear: both;
    }


    .container-float{
        max-width: 1200px;
        margin: 20px 50px;
    }
    .left-menu-float{
        float: left;
        width: 200px;
        height: 400px;
        border: 1px solid #ccc;
    }
    .right-container-float{
        padding-left: 230px;
    }    
</style>
<div class="container-float clearfix">
    <div class="left-menu-float">左侧菜单</div>
    <div class="right-container-float">
        <div class="main-float">
            <div class="table-responsive">
                <table>
                    <thead>
                        <tr>
                            <th>列1</th>
                            <th>列2</th>
                            <th>列3</th>
                            <th>列4</th>
                            <th>列5</th>
                            <th>列6</th>
                            <th>列7</th>
                            <th>列8</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>td列1td列1</td>
                            <td>td列2td列2</td>
                            <td>td列3td列3</td>
                            <td>td列4td列4</td>
                            <td>td列5td列5</td>
                            <td>td列6td列6</td>
                            <td>td列7td列7</td>
                            <td>td列8td列8</td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心如荒岛 2022-09-18 15:22:23

图片描述

图片描述

图片描述

flex不是宽度没有变化,只是里面内容到极限了,它把这个极限宽度当做了min-width,
float相应的处理就是对表格做overflow-x: auto;

图片描述

.right-containeroverflow-x: auto;就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文