【问题标题】:The 'justify-content' property isn't working'justify-content' 属性不起作用
【发布时间】:2014-07-25 23:55:10
【问题描述】:

我遇到了一个奇怪的问题。我一直在研究这个使用Flexbox 的原型HTML5 模板。虽然我遇到了一个小问题。

我正在尝试通过将“justify-content”属性应用于父 div 来为模板的侧边栏和内容区域留出一个小空间。虽然它没有在侧边栏和内容区域之间添加那个空间。我不确定我做错了什么。因此,如果有任何人可以帮助我,那就太好了。

这是我的 HTML 内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="../scripts/javascript/responsive_drop_down.js"></script>
    <link href="../css/protoflexcss.css" rel="stylesheet" type="text/css" media="screen"/>
    <title>Welcome to My Domain</title>
</head>

<body>
    <header>
        <h1>This is a placeholder <br />
            for header</h1>
    </header>
        <nav class="main">
            <div class="mobilmenu"></div>
                <ul>
                    <li><a href="#">Home</a></li>
                    <li><a href="#">Video</a></li>
                    <li><a href="#">Pictures</a></li>
                    <li><a href="#">Audio</a></li>
                    <li><a href="#">Other Work</a></li>
                    <li><a href="#">About Me</a></li>
                    <li><a href="#">Contact Me</a></li>
                </ul>
        </nav>
        <div id="wrapper">
            <article class="content-main">
                <section>
                    <h2>Heading goes here...</h2>
                    <time datetime="2014-05-21T02:43:00">Officialy Posted On May 21<sup>st</sup> 2:35 A.M.</time>
                    <p>Content will go here...</p>
                </section>
            </article>
            <aside>
                <p>More content soon...</p>
            </aside>
    </div>
    <footer>
            <div class="copyright">
                <span>All rights reserved 2014.</span>
            </div>
        <nav class="foot">
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">Video</a></li>
                <li><a href="#">Pictures</a></li>
                <li><a href="#">Audio</a></li>
                <li><a href="#">Other Work</a></li>
                <li><a href="#">About Me</a></li>
                <li><a href="#">Contact Me</a></li>
            </ul>
        </nav>
    </footer>
</body>

</html>

这是相关的 CSS:

#wrapper
{
    display: flex;
    flex-direction: row;
    justify-content: space-around;
    flex-flow: row wrap;
    flex: 1 100%;
    width:92.5%;
    align-self: center;
    padding-top: 3.5em;
    padding-bottom: 2.5em;
    margin: 0;
}

#wrapper article.content-main
{
    flex: 6;
    order: 2;
}

#wrapper article.content-main section
{
    background-color: rgba(149, 21, 130, 0.61);
    border: 2px solid #c31cd9;
    padding: 0.9em;
}

#wrapper aside
{
    flex: 1;
    padding: 0.4em;
    background-color: rgba(17, 208, 208, 0.56);
    border: 2px solid #15d0c3;
    position: sticky;
}

注意:如果有人需要与我的 html 的任何其他元素相关的任何其他 CSS 代码,请告诉我,我也很乐意将其添加到问题中。

【问题讨论】:

  • 请确保元素上没有clearfix或任何伪代码
  • TL;DR: 摆脱你的flex-grow: 1;,让justify-content 做它的事。

标签: css flexbox spacing article


【解决方案1】:

有时justify-content 不是您应该使用的属性。当您的flex-directioncolumn 时尤其如此,这使主轴垂直(y)。你应该试试align-item 属性,这可能就是魅力所在。

【讨论】:

    【解决方案2】:

    这个答案可能很愚蠢,但我花了很长时间才弄明白。

    发生在我身上的是我没有display: flex 设置为容器。当然,如果没有具有该属性的容器,justify-content 将无法工作。

    【讨论】:

    • 还有我将justify-content 设置为项目
    • @Abhi,谢谢,我从来没有向父母添加 display: flex,因为我检查了孩子,发现他们已经 display: flex for the grandchildren
    • @technophyle,你能详细说明为什么display: flex 需要justify-content
    • @PrateekGupta justify-content 是一个可以在 flexbox 中使用的属性。如果你不给容器设置display: flex,默认情况下它不是一个flexbox。
    【解决方案3】:

    我在 justify-content 方面遇到了很多问题,我发现问题是“margin: 0 auto”

    自动部分会覆盖 justify-content,因此它始终根据边距而不是 justify-content 显示。

    【讨论】:

    • 谢谢,如果使用 justify-content: space-between; 作为弹性网格,margin-right: auto; 很重要
    【解决方案4】:

    检查元素并检查 .justify-content-center 是否在“样式”选项卡下列为类名。如果没有,您可能正在使用未定义 justify-content-center 的 bootstrap v3。

    如果是这样,请更新引导程序,为我工作。

    【讨论】:

      【解决方案5】:

      在对 CMS 中的现有代码进行主题化时,还有一个问题让我困扰了一段时间。我想将 flexbox 与justify-content:space-between 一起使用,但左右元素不齐。

      在该系统中,项目是浮动的,并且容器有一个 :before 和/或 :after 来清除开始或结束时的浮动。所以将那些鬼鬼祟祟的:before:after 元素设置为display:none 就行了。

      【讨论】:

        【解决方案6】:

        justify-content 在您的 flex 项目弯曲以吸收可用空间后剩余空间时有效。在大多数/许多情况下,不会有任何可用空间,实际上justify-content 不会做任何事情。

        产生影响的一些例子:

        • 如果您的 flex 项目都是不灵活的(flex: noneflex: 0 0 auto),并且小于容器。

        • 如果您的弹性项目是灵活的,但由于每个弹性项目上都有一个max-width,因此无法增长以吸收所有可用空间。

        在这两种情况下,justify-content 将负责分配多余的空间。

        但是,在您的示例中,您的弹性项目具有 flex: 1flex: 6 且没有 max-width 限制。您的灵活项目将增长到吸收所有可用空间,并且没有空间可供justify-content 使用。

        【讨论】:

        • 好的,谢谢。不过,我能够找到一个简单的解决方法。我刚刚在文章容器的左侧添加了填充。之后一切似乎都运行良好。
        • 谢谢!指定宽度是解决方案!
        • 如果justify-content 内有文本,无论此答案中指出的限制如何,都会很有用。
        • 非常感谢您了解“是否还有剩余空间”
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        • 2023-02-06
        • 2020-09-01
        • 1970-01-01
        • 2018-06-22
        • 2016-02-07
        相关资源
        最近更新 更多