0

我正在使用新display: -webkit-flex;语法来定义“flexbox”,但我无法-webkit-box-flex: 1;正常工作,因此元素占用了剩余空间。

当我使用display: box;旧语法时,它可以正常工作(http://flexiejs.com/playground/上的示例)。我可以使用建议,chrome 支持新标准(http://flexiejs.com/playground/)。

在 Firefox 中它工作正常(现在无法在 IE 中测试它)

这是我的示例代码(小提琴):

<html>
<head>
    <title>Test</title>
    <script src="modernizr.min.js"></script>
    <style>
        .wrapper {
            /* old syntax */
            display: -webkit-box;
            display: -moz-box;
            /* new syntax */
            display: -webkit-flex;
            display: -moz-flex;
            display: -o-flex;
            display: -ms-flex;
            display: flex;
            border: 1px solid;
        }

        html, body, .wrapper {
            width: 100%;
            margin: 0;
            padding: 0;
        }

        .element {
            border: 1px solid black;
            margin: 10px;
            padding: 10px;
            min-width: 300px;
            -moz-box-flex: 1;
            -webkit-box-flex: 1;
            box-flex: 1;
        }

        .no-flexbox .wrapper .element {
            float: left;
            width: 300px;
        }

        .no-flexbox .wrapper .clear {
            clear: both;
        }

        .flexbox .wrapper .clear {
            display: none;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="element">
            <h1>hello world</h1>
            <p>
                Lorem ipsum<br />
                Lorem ipsum
            </p>
            <p>Lorem ipsum</p>
        </div>
        <div class="element">
            <h1>hello world</h1>
            <p>
                Lorem ipsum
            </p>
            <p>Lorem ipsum</p>
        </div>
        <div class="clear"></div>
    </div>
</body>
</html>
4

1 回答 1

1

谢谢@BoltClock。

如果我使用 display:-webkit-flex;我当然必须使用-webkitx-flex: 1;而不是-webkit-box-flex: 1;!

代码更新(提琴手):

<html>
<head>
    <title>Test</title>
    <!-- Library zum erkennen von html5 features -->
    <script src="modernizr.min.js"></script>
    <style>
        /*Elemente im wrapper werden nebeneinader angeordnet*/
        /*da es nicht nicht fertig standardisert ist, gibt es pro browser eine andere schreibweise,
            "display: flex;" ist die aktuellste und jene die in zukunkft alle verweneden sollten*/
        .wrapper {
            /* old syntax */
            display: -webkit-box;
            display: -moz-box;
            /* new syntax */
            display: -webkit-flex;
            display: -moz-flex;
            display: -o-flex;
            display: -ms-flex;
            display: flex;
            border: 1px solid;
        }

        html, body, .wrapper {
            width: 100%;
            margin: 0;
            padding: 0;
        }

        .element {
            border: 1px solid black;
            margin: 10px;
            padding: 10px;
            min-width: 300px;
            -moz-box-flex: 1;
            -webkit-flex: 1;
            -moz-flex: 1;
            -ms-box-flex: 1;
            box-flex: 1;
            flex: 1;
        }

        /* no-flexbox wird von modernizr hinzugefügt wenn flex nicht utnerstützt ist*/
        .no-flexbox .wrapper .element {
            float: left;
            width: 300px;
        }

        .no-flexbox .wrapper .clear {
            clear: both;
        }
        /* flexbox wird von modernizr hinzugefügt wenn flex nicht utnerstützt ist*/
        /* clear tag wird nicht benötigt, da elemente mit flexbox angeordnet sind */
        .flexbox .wrapper .clear {
            display: none;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="element">
            <h1>hello world</h1>
            <p>
                Lorem ipsum<br />
                Lorem ipsum
            </p>
            <p>Lorem ipsum</p>
        </div>
        <div class="element">
            <h1>hello world</h1>
            <p>
                Lorem ipsum
            </p>
            <p>Lorem ipsum</p>
        </div>
        <div class="clear"></div>
    </div>
</body>
</html>
于 2013-04-30T08:58:48.660 回答