Flexbox 溢出在换行前截断项目

Flexbox overflow truncating items before wrap

问题

我在使用弹性框时遇到问题。它按照应有的方式包装内容,但是任何溢出 parent 容器的项目都会被截断。见下图:

这是整个页面的HTML:

    <html lang="enUS">
        <head>
            <!-- Page Title (Shows up in title bar of browser) -->
            <title>Test Page: User Drill Down</title>
            <!-- Favirotie Icons (Shows up next to the URL in the browser address bar)
                 Generated from https://realfavicongenerator.net/ -->
            <link rel="apple-touch-icon" sizes="180x180" href="http://localhost:22080/core/images/favicons/apple-touch-icon.png">
            <link rel="icon" type="image/png" sizes="32x32" href="http://localhost:22080/core/images/favicons/favicon-32x32.png">
            <link rel="icon" type="image/png" sizes="16x16" href="http://localhost:22080/core/images/favicons/favicon-16x16.png">
            <link rel="manifest" href="http://localhost:22080/core/images/favicons/site.webmanifest">
            <link rel="mask-icon" href="http://localhost:22080/core/images/favicons/safari-pinned-tab.svg" color="#5bbad5">
            <link rel="shortcut icon" href="http://localhost:22080/core/images/favicons/favicon.ico">
            <meta name="msapplication-TileColor" content="#da532c">
            <meta name="msapplication-config" content="http://localhost:22080/core/images/favicons/browserconfig.xml">
            <meta name="theme-color" content="#ffffff">
            <!-- JavaScript Core Files -->
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/ajax.js"></script>
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/heartbeat.js"></script>
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/treewalker.js"></script>
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/verify.js"></script>
            <!-- Install Bootstrap CSS -->
            <link rel="stylesheet" type="text/css" href="http://localhost:22080/APIs/bootstrap/bootstrap-3.3.7-dist/css/bootstrap.css">
            <!-- Install FontAwsome CSS -->
            <link rel="stylesheet" type="text/css" href="http://localhost:22080/APIs/fontawsome/fontawesome-free-5.15.1-web/css/all.min.css">
            <!-- Install Custom Common CSS -->
            <link rel="stylesheet" type="text/css" href="http://localhost:22080/core/css/common.css">
            <!-- Install Custom Header CSS -->
            <link rel="stylesheet" type="text/css" href="http://localhost:22080/core/css/header.css">
            <!-- Install Slider CSS -->
            <link rel="stylesheet" type="text/css" href="http://localhost:22080/core/css/toggle.css"> 
            <!-- Install Bootstrap Datepicker -->
            <link rel="stylesheet" type="text/css" href="http://localhost:22080/APIs/datepicker/css/bootstrap-datepicker3.min.css">
            <style type="text/css">.table-hover > tbody > tr:hover
    {
        color: #FFFFFF;
        background-color: #000000;
    }
    .table-striped > tbody > tr:nth-of-type(odd)
    {
        background-color: #000033;
    }
    .table > thead > tr > th,.table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td
    {
        border-top-color: #660000;
    }
    .table > thead > tr > th
    {
        border-bottom-color: #660000;
    }
    table-bordered
    {
        border-color: #660000;
    }
    .table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td
    {
        border-color: #660000;
    }
    .table-bordered th,.table-bordered tdborder-color
    {
        #660000: undefined;
    }
    .slider
    {
        background-color: #000033;
    }
    .slider:before
    {
        background-color: #808080;
    }
    input:checked:disabled + .slider
    {
        background-color: #FFFFFF;
    }
    input:disabled + .slider
    {
        background-color: #FFFFFF;
    }
    input:checked + .slider
    {
        background-color: #9999FF;
    }
    input:focus + .slider
    {
        box-shadow-color: #9999FF;
    }
    .cb-std:before
    {
        color: #99FF99;
    }
    .cb-std:checked:before
    {
        color: #99FF99;
    }
    .rb-std:before
    {
        color: #99FF99;
    }
    .rb-std:checked:before
    {
        color: #99FF99;
    }
    legend
    {
        border-bottom-color: #FF9999;
    }
    tooltip
    {
        color: #FFFFFF;
        background-color: #000000;
    }
    tooltip-inner
    {
        color: #FFFFFF;
        background-color: #000000;
    }
            </style>
        </head>
        <body href-link="drilldown.php" session-timeout="600" popup-time="30" style="color: rgb(0, 0, 0); text-decoration-color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
            <!-- Timeout Modal Dialog -->
            <div class="container">
                <!-- Modal -->
                <div class="modal fade" id="logoutDialogBox" role="dialog" style="color: rgb(0, 0, 0); text-decoration-color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
                    <div class="modal-dialog">
                        <!-- Modal content-->
                        <div class="modal-content">
                            <div class="modal-header" id="logoutHead">
                                <h4 class="modal-title">Login Session Expired</h4>
                            </div>
                            <div class="modal-body" id="logoutBody">
                                <p>You have been inactive for some time. Your session will expire 
                                in <span id="logoutTime"></span> seconds. Click on 
                                the Stay Logged In button to stay logged in, or to logout now, click 
                                the Logout button.</p>
                            </div>
                            <div class="modal-footer" id="logoutFoot">
                                <button type="button" class="btn btn-default" id="buttonStayLoggedIn">Stay Logged In</button>
                                <button type="button" class="btn btn-default" id="buttonLogout">Logout</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!-- Beginning of header Nav Bar -->
            <div id="navigationBarHeader">
                <!-- Navbar header with logo, time, and logout button -->
                <nav id="navigationBar" class="navbar navbar-default">
                    <div class="container-fluid">
                        <div class="navbar-header">
                            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                                <span class="sr-only">Toggle navigation</span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                            </button>
                            <!-- Sea-Core Logo Image -->
                            <img class="navbar-brand" alt="Brand" src="http://localhost:22080/core/images/branding/base_small.png">
                            <!-- Div for the time -->
                            <div class="navbar-text" id="timeday">9:29:11 PM</div>
                        </div>
                        <!-- Collect the nav links, forms, and other content for toggling -->
                        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                            <!-- Nav Bar, Left Side -->
                            <ul class="nav navbar-nav">
                                <button type="button" id="returnHome" class="btn btn-default navbar-btn">Home</button>
                            </ul>
                            <!-- Nav Bar, Right Side -->
                            <ul class="nav navbar-nav navbar-right">
                                <li>
                                    <!-- All pages have the logout button -->
                                    <button type="button" id="logout" class="btn btn-default navbar-btn">Logout</button>
                                </li>
                            </ul>
                            <span class="icon-bar"> </span>
                        </div><!-- /.navbar-collapse -->
                    </div><!-- /.container-fluid -->
                </nav>
                <!-- End of header Nav Bar -->
                <!-- Beginning of function bar -->
                <nav id="functionBar1" class="nav nav-inline" hidden="">
                    <button type="button" id="something" class="btn btn-default navbar-btn">Item 1</button>
                    <button type="button" id="something" class="btn btn-default navbar-btn">Item 2</button>
                    <div class="btn-group" role="group" aria-label="...">
                        <button type="button" id="something" class="btn btn-default navbar-btn">Item 3.1</button>
                        <button type="button" id="something" class="btn btn-default navbar-btn">Item 3.2</button>
                    </div>
                    <div class="btn-group" role="group" aria-label="...">
                        <button type="button" id="something" class="btn btn-default navbar-btn">Item 4.1</button>
                        <button type="button" id="something" class="btn btn-default navbar-btn">Item 4.2</button>
                        <button type="button" id="something" class="btn btn-default navbar-btn">Item 4.3</button>
                        <button type="button" id="something" class="btn btn-default navbar-btn">Item 4.4</button>
                    </div>
                </nav>
                <!-- End of function bar -->
            </div>
            <!-- Start of main content area -->
            <div id="mainFrame">
                <div style="color: rgb(0, 0, 0); text-decoration-color: rgb(0, 0, 0);" id="errorTarget"></div>
                <div style="color: rgb(0, 0, 0); text-decoration-color: rgb(0, 0, 0);" id="responseTarget"></div>
                <div class="row row-list">
                    <div id="link-nav" class="col-xs-2 link-nav-div"></div>
                    <div id="main" class="col-xs-8 link-main-div">
<div>
    <div class="row" style="place-content: center; text-align: center;">
        <span style="font-size: 24px; font-weight: bold;">Drill Down Test Module</span>
        <span> </span>
    </div>
    <div class="row" style="place-content: center; text-align: center;">
        <span style="font-size: 24px; font-style: italic;">Users</span>
    </div>
</div>
<div class="image-border" style="left: 67px !important; width: 1211px !important; height: 6px !important; padding-bottom: 18px !important; padding-top: 12px !important;">
    <canvas width="1211" height="6"></canvas>
</div>
<form class="form-horizontal">
    <div class="row">
        <div class="container" id="ddlink" style="color: rgb(0, 0, 0); text-decoration-color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
            <div class="flex-box-row" id="xddlink2">
                <span class="text-control"> 0 </span>
                <span class="text-control"> 1 </span>
                <span class="text-control"> 2 </span>
                <span class="text-control"> 3 </span>
                <span class="text-control"> 4 </span>
                <span class="text-control"> 5 </span>
                <span class="text-control"> 6 </span>
                <span class="text-control"> 7 </span>
                <span class="text-control"> 8 </span>
                <span class="text-control"> 9 </span>
                <span class="text-control"> A </span>
                <span class="text-control"> B </span>
                <span class="text-control"> C </span>
                <span class="text-control"> D </span>
                <span class="text-control"> E </span>
                <span class="text-control"> F </span>
                <span class="text-control"> G </span>
                <span class="text-control"> H </span>
                <span class="text-control"> I </span>
                <span class="text-control"> J </span>
                <span class="text-control"> K </span>
                <span class="text-control"> L </span>
                <span class="text-control"> M </span>
                <span class="text-control"> N </span>
                <span class="text-control"> O </span>
                <span class="text-control"> P </span>
                <span class="text-control"> Q </span>
                <span class="text-control"> R </span>
                <span class="text-control"> S </span>
                <span class="text-control"> T </span>
                <span class="text-control"> U </span>
                <span class="text-control"> V </span>
                <span class="text-control"> W </span>
                <span class="text-control"> X </span>
                <span class="text-control"> Y </span>
                <span class="text-control"> Z </span>
            </div>
        </div>
    </div>
</form>
<div class="image-border" style="left: 168px !important; width: 1009px !important; height: 6px !important; padding-bottom: 18px !important; padding-top: 12px !important;">
    <canvas width="1009" height="6"></canvas>
</div>
<div class="row">
    <div class="container" id="dddata">
    </div>
</div>
<div class="image-border" style="left: 67px !important; width: 1211px !important; height: 6px !important; padding-bottom: 18px !important; padding-top: 12px !important;">
    <canvas width="1211" height="6"></canvas>
</div>
<div class="bottom-links">
    <div class="row">
        <div class="col-xs-2">
        </div>
        <div class="col-xs-2">
            <a onclick="window.open('http://localhost:22080/core/misc/privacy.php');">Privacy Policy</a>
        </div>
        <div class="col-xs-2">
            <a onclick="window.open('http://localhost:22080/core/misc/cookie.php');">Cookie Policy</a>
        </div>
        <div class="col-xs-2">
            <a onclick="window.open('http://localhost:22080/core/misc/about.php');">About Us</a>
        </div>
        <div class="col-xs-2">
            <a onclick="window.open('http://localhost:22080/core/misc/contact.php');">Contact Us</a>
        </div>
        <div class="col-xs-2">
        </div>
    </div>
</div>
<div class="vspace10"></div>
</div>
                    <div id="link-stat" class="col-xs-2 link-status-div"></div>
                </div>
            </div>
            <!-- End of main content area -->
    
        <div>
            <form id="token_form">
                <input type="hidden" name="token_data" id="token_data" value="144542ef22e58a893ce414ddbd3cdad9342037fe12194ad94003f6ac85471b53">
            </form>
        </div>      <!-- Install Timer -->
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/timer.js"></script>
            <!-- Install regular jQuery -->
            <script type="text/javascript" src="http://localhost:22080/APIs/jquery/BaseJQuery/jquery-3.3.1.min.js"></script>
            <!-- Install Bootstrap -->
            <script type="text/javascript" src="http://localhost:22080/APIs/bootstrap/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
            <!-- Install FontAwsome -->
            <script type="text/javascript" src="http://localhost:22080/APIs/fontawsome/fontawesome-free-5.15.1-web/js/fontawesome.min.js"></script>
            <!-- Install Logout Modal Handlers -->
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/modal.js"></script>
            <!-- Common Javascript -->
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/common.js"></script>
            <!-- Install Custom Checkbox -->
            <script src="http://localhost:22080/APIs/checkbox/dist/js/bootstrap-checkbox.js"></script>
            <!-- Install Datepicker -->
            <script src="http://localhost:22080/APIs/datepicker/js/bootstrap-datepicker.min.js"></script>
            <!-- Install Header Custom JavaScript -->
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/header.js"></script>
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/common.js"></script>
            <script type="text/javascript" src="http://localhost:22080/core/js/baseline/html.js"></script>
            <script type="text/javascript" src="http://localhost:22080/test/drilldown.js"></script>
            <!-- Checkbox Boot Script -->
            <script type="text/javascript">
                function featureCheckbox() {
                    $(':checkbox').checkboxpicker({
                        html: true,
                        offLabel: '<span class="glyphicon glyphicon-remove">',
                        onLabel: '<span class="glyphicon glyphicon-ok">'
                    });
                }
            </script>
            <!-- Tooltip Boot Script -->
            <script type="text/javascript">
                function featureTooltip() {
                    $('[data-toggle="tooltip"]').tooltip();
                }
            </script>
            <!-- Datepicker Boot Script -->
            <script type="text/javascript">
                function featureDatepicker() {
                    $('.datepicker').datepicker();
                }
            </script>
        </body>
    </html>

这里是相关的 CSS:

/* Flex boxes */
.flex-box-row {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    justify-content: flex-start;
    overflow-wrap: break-word;
    overflow: hidden;
}

.flex-box-row>*{
    flex: 0 0 auto;
}

span.text-control {
    font-size: 14pt;
    font-weight: bold;
    cursor: pointer;
}

以下是一些其他屏幕截图,显示了我尝试过的其他解决方案的结果:

在这个中,零从头开始被截断。

这里截掉了部分开头和结尾的文字。

注意:overflow-wrap 和溢出 CSS 属性无效。两种方法我都试过了。

注意:由于有一系列 SPAN 元素作为 flex child,我尝试添加 min-width: 0;正如一些链接问题所建议的那样,但它不起作用。

注意:这与此处关于将大型数据库表分区为较小部分的另一个问题有关。它位于: 不用说,我已经解决了那个问题。

基本上,这两个框内 parent 容器之外的任何内容都不会显示(您甚至无法点击它们),但内容会在下一行正常显示。如图中突出显示的 flexbox 所示,它延伸到容器之外。我需要限制它。

另外 Bootstrap 3 正在加载,但未用于 flexbox。

研究

过去两天我对此进行了大量研究,以下是我的发现:

Flexbox item multiline text overflow

https://codepen.io/ScottWhittaker/pen/apKqpK

https://css-tricks.com/flexbox-truncated-text/

还有更多....

我尝试过的东西

我尝试了多种解决方案,但结果各不相同。但是,无论我尝试过什么解决方案,截断项目的主要问题仍然存在。

编辑:2021 年 6 月 5 日 2230 PDT

正如人们指出的关于混合内联和样式表的问题,我现在正在努力。但是,这里的大问题是无法避免样式表和内联样式之间的某些混合。主要原因是主题颜色(很难有很多带有样式表的主题)和计算大小,例如 image-border 东西。此外,一些标题为 headers 的字体内容也必须内联指定,因为服务器中的 JSON 可以指定它。 DIV 中带有 id="main" 的所有内容都是在客户端生成的,其中 JavaScript 从服务器解释 JSON。其他所有内容都是由 PHP 在服务器上生成的模板页面。此外,当我尝试使用最少的代码集来重现问题时,我做不到。这告诉我这是导致问题的样式表,但我不确定是哪一个。 Bootstrap 3 正在加载并在整个页面中使用。我想知道这是 Bootstrap 问题还是我的某个样式表有问题。不过,我将继续尝试构建一个最小示例来重现该问题。至于所有指向本地主机的外部链接,我也在努力。

首先,我建议不要将内联样式和样式表混为一谈 - 当大型 html 文档中有如此多的内联样式时,很难判断问题出在哪里。 (还要记住,任何内联样式都将优先于外部样式表中的 类)

也许您可以仅使用代码笔或 jsfiddle 中与问题相关的 HTML 和 CSS 位提供错误的最小重现?这样可以更轻松地帮助您

经过大量研究、测试和调试后,我发现了问题所在。似乎 bootstrap-3 的容器 class 是罪魁祸首。删除 HTML 层次结构的 class 可以解决所有情况下的问题。考虑到这一点,我看了一下 class。根据 window 的宽度,它具有不同的属性。查看文档,它是响应式页面功能的一部分,允许在不同尺寸的设备上以最佳方式查看页面。

它也导致表格出现问题。行将缺少列。这也已更正。

感谢所有回复的人。