html - Flexbox 页脚错误地收缩

标签 html css svg flexbox

我正在使用 flexbox 来划分网页上的空间。我有一个带有 SVG 和粘性页脚的主要区域。页脚有一个按钮,可在鼠标进入和离开时更改其文本。问题是发生这种情况时页脚会暂时向下滑动。

参见此处:http://jsfiddle.net/nicmcd/zb149q0k/49/

通过调试我发现导致这种情况的令人讨厌的 CSS 样式是 SVG 区域设置为 100% 的高度:

svg {
    width: 100%;
    height: 100%;  /* this is the offensive style */
    top: 0;
    left: 0;
}

我的困境是我需要将 SVG 设置为 100% 的高度,因为我希望它占用页脚未占用的所有空间。

一件奇怪的事情是,在页脚滑开后,如果调整窗口大小,它又会回来。

请帮忙!

最佳答案

取而代之的是:

#content #drawing {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 100%;
    background-color: red;
}

svg {
    width: 100%;
    height: 100%; /* this is the offensive style */
    top: 0;
    left: 0;
}

试试这个:

#content #drawing {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 100%;
    background-color: red;
    display: flex; /* new */
}

svg {
    width: 100%;
    /* height: 100%; removed offensive style :-) */
    top: 0;
    left: 0;
}

revised jsfiddle

当你将一个元素设置为 display: flex(使其成为一个 flex 容器)时自动激活 align-items: stretch ,它告诉子元素(又名“flex 元素”;在本例中为 svg 元素)沿着 cross-axis 扩展容器的全长(在这种情况下,高度)。

因此不需要百分比高度、固定高度或calc() 函数。借助 flex 属性,可以引导 svg 占用可用空间,消除对页脚的任何干扰。

关于html - Flexbox 页脚错误地收缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51157547/

相关文章:

javascript - 选择菜单更改时执行以下 jquery 代码

css - href 乱七八糟的 css 动画

css - HTML背景渐变重复

javascript - Angular block svg xmlns 作为 $sce :insecurl

javascript - 使用 d3.js 从动态生成的数据中绘制数据点

javascript - 在javascript中使框边缘跟随鼠标指针

html - margin : 0 auto not working IE?

javascript - 如何为 html5 音频播放器创建自定义时间线?

javascript - 为什么我的 svg 图表无法在 IE 中正确呈现?

html - 进入两列的 Bootstrap 行