html – 使flex项为其文本的宽度

我希望有一个包含两列的布局,其中左列是某种侧边栏.

现在我想在侧边栏中使用一些不应该换行的文本.

当我这样做它会导致某种溢出然后使用溢出:隐藏隐藏文本的很大一部分.

如何修改左列以使用未包装文本的宽度和右列来使用剩余空间而不丢弃溢出:隐藏?

#container {
    display: flex;
}
#sidebar {
    border: 1px solid red;
    flex 1 auto;
    overflow: hidden;
}
#sidebar .column {
    white-space: nowrap;
}
#sidebar .column span {
    margin: 2px;
    padding: 2px;
    border: 1px solid green;
    display: inline-block;
}
#content {
    border: 1px solid black;
    flex: 1 100%;
}
<div id="container">
    <div id="sidebar">
        <div class="column">
            <span>Howdy Cowboy,some text is missing here</span>
        </div>
    </div>
    <div id="content">
        Some funny content
    </div>
</div>

JSFIDDLE

解决方法

How can I modify the left column to use the width of the unwrapped text and the right column to use the remaining space without dropping overflow:hidden?

告诉左列只有与其内容一样宽.

所以不是这样的:

#sidebar {
  flex: 1 auto;            /* 1 */
  overflow: hidden;
  border: 1px solid red;
}

用这个:

#sidebar {
  flex: 0 1 auto;        /* 1 */
  overflow: hidden;
  border: 1px solid red;
}

并告诉正确的列消耗任何剩余空间.

而不是这个:

#content {
  flex: 1 100%;         /* 2 */
  border: 1px solid black;
}

用这个:

#content {
  flex: 1;              /* 2 */
  border: 1px solid black;
}

revised fiddle

笔记:

> flex:1 auto是flex-grow的简写:1(已定义),flex-shrink:1(默认情况下)和flex-basis:auto(已定义).切换到flex-grow:0,因为您不希望框扩展到内容之外.

顺便提一下,flex-grow:0,flex-shrink:1和flex-basis:auto都是default values.因此,你可以省略flex规则并得到相同的结果.

请注意,您的代码在任何情况下都不会起作用,因为您有语法错误(缺少:).> flex-basis:100%将强制项目在容器的宽度上尽可能多地扩展,如果可以的话甚至会侵入侧边栏空间.只需使用flex:1(与flex-grow:1相同,flex-shrink:1,flex-basis:0),它告诉项目只消耗空闲空间.

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在&#39;&#39;,则表示换行,用&#39;&#39;切割。
代码实现 option = { backgroundColor: &amp;#39;#080b30&amp;#39;, tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...