html - Flexboxs child 溢出 parent

标签 html css flexbox

我见过几个像我这样的问题,但似乎没有一个得到成功回答。我的问题可能很简单,但我没有弄错。

我在彼此之间使用了多个 flexbox。当我更改浏览器大小时,它应该以相同的方式调整大小。但在某一时刻, children 溢出了 parent 的 flexbox - 丑陋的

因为我没有发现我的错误,所以我开始了一个新的 HTML 文档 - 我仍然有错误。 “游戏盒”的 children 不按我的意愿行事。

这是一个 fiddle :Live-Demo

感谢您的帮助 - RoetzerBub

html , body, main {
    margin: 0;
    padding: 0;
    min-height: 100%;
    min-width: 100%;
}

body{
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
}
header, footer{
    display: flex;
    min-width: 100%;
    justify-content: center;
}
header{
    flex-shrink: 0;
    background-color: #cc0000;
    color: white;
    z-index: 10;
    margin-bottom: 10px;
}

main{
    display: flex;
    justify-content: center;
    align-items: center;
}

footer{
    background-color: #444444;
    color: white;
    flex-shrink: 0;
    z-index: 10;
    margin-top: 10px;
}
/*as*/
.gamebox{
    display: flex;
    flex-direction: row;
    min-width: 30%;
    max-width: 45%;
    border: 2px solid #b30000;
    justify-content: space-between;
    align-items: center;
}

.gb_left, .gb_center, .gb_right{
    margin: 2%;
    justify-content: space-around;
    background-color: yellow;
}

.gb_left{
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-grow: 1;
}

.gb_right{
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-grow: 1;
    
}

.gb_center{
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="flexstyle.css">
    </head>
    <body>
        <header>HEADER</header>
        <main>
            
            <div class="gamebox">
                <div class="gb_left">
                    FLAG
                    TEAM-A
                </div>
                <div class="gb_center">
                    type<br/>
                    SCORE<br/>
                    date
                </div>
                <div class="gb_right">
                    TEAM-B
                    FLAG  
                </div>
              
            </div>
        
        </main>
        <footer>FOOTER</footer>
    </body>
</html>

最佳答案

在这里再次将子项定义为 flex 容器并没有真正意义 - 它们中没有元素(div 或 span),只有文本(即没有任何东西可以用作 flex 元素)。

在下面的 fiddle 中,我删除了所有这些并使用了以下 CSS 设置:

 .gamebox{
    display: flex;
    flex-direction: row;
    min-width: 30%;
    max-width: 45%;
    border: 2px solid #b30000;
    justify-content: space-between;
    align-items: center;
}

.gb_left, .gb_center, .gb_right{
    margin: 2%;
    background-color: yellow;
    min-width: 29%;
    word-wrap: break-word;
}

最后一个确保当一个词的长度超过其容器的宽度时,它就被破坏了。

这是你的 fiddle 的分支:https://jsfiddle.net/o6wxy5z7/

关于html - Flexboxs child 溢出 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37286979/

相关文章:

css - 通过 Flex Box 进行简单布局

javascript - Material-UI - slider 范围内的拇指切换样式

javascript - 如何在图形的悬停转折点上显示 Y 轴值

html - Bootstrap 4 导航栏在 div 内打开

html - IE 中的空白 iFrame

css - Flexbox - Firefox 不居中绝对元素

html - Flex box 的最后一项占据容器的整个宽度。我该如何解决这个问题?

html - 如何在不破坏一切的情况下将导航栏固定并在右侧设置菜单?

html - 使用 Julia 从 HTML 文件中提取和构建表格

jquery - 如何使用等列脚本重新计算高度