flexbox中的SVG会混淆其他元素的高度

Sta*_*eff 13 html css html5 svg css3

我正在尝试使用一个svg元素,该元素在flexbox中使用容器大小调整大小,但由于某种原因,它会混淆svg下面的div(带文本)的大小.(调整浏览器窗口大小时会有多少更改)

例

以下是我用于所有这些的基本css属性:

[layout] {
    box-sizing: border-box;
    display: flex;
}

[layout=column] {
    flex-direction: column;
}

[layout=row] {
    flex-direction: row;
}

[flex] {
    box-sizing: border-box;
    flex: 1;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="content" style="height: 100%;" layout="row">

    <div class="card" layout="column" flex>
        <div class="toolbar" layout="column">
            <span>Test</span>
        </div>

        <div class="card-content" layout="column" flex>
            <div layout="column" flex>
                <div layout="column" flex>
                    <div layout="column" flex
                         style="background:green;">
                        <svg viewBox="0 0 50 50">
                            <circle r="25" cx="25" cy="25">
                        </svg>
                    </div>
                </div>
                <div>Text</div>
            </div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Codepen: http ://codepen.io/anon/pen/rVJepm

如何在使用SVG时修复尺寸?

Nic*_*o O 12

flex-box的问题出现在flex速记属性的使用上.你将它设置为:flex: 1 1 auto,这意味着:flex-grow: 1; flex-shrink: 1; flex-basis: auto;.

因为您不希望具有内容文本的容器缩小.您只需要设置flex-shrink: 0;为此节点.这是你的分叉演示:http://codepen.io/anon/pen/GJQqog

旁注:在我看来,在html5中构建新属性仍然是非法的.这不是失败的原因,但也许会更好data-attributes.