【问题标题】:SVG in flexbox messes up height of other elementsflexbox 中的 SVG 弄乱了其他元素的高度
【发布时间】:2015-09-18 11:41:21
【问题描述】:

我正在尝试使用一个 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;
}

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>

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

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

【问题讨论】:

    标签: html css svg


    【解决方案1】:

    您对 flex-box 的问题是在使用 flex 速记属性时出现的。您将其设置为:flex: 1 1 auto,即:flex-grow: 1; flex-shrink: 1; flex-basis: auto;

    因为您不希望包含 text 内容的容器缩小。您只需将flex-shrink: 0; 设置为此节点。 这是您的分叉演示:http://codepen.io/anon/pen/GJQqog

    附带说明: 在我看来,在 html5 中组成新属性仍然是非法的。这不是失败的原因,但也许最好选择data-attributes

    【讨论】:

    • 这只是一个非常精简的 angular/material.angular 网站演示,只是为了解释为什么我使用非data-attributes。不过还是谢谢!
    • 大声笑非法。编码警察会和那位朋友一起敲门。
    • 你先生是我的英雄!
    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 2019-06-10
    • 2016-01-02
    • 1970-01-01
    • 2015-04-21
    • 2016-12-03
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多