柔性柱的自动宽度

Iva*_*pić 5 css flexbox

如何设置第一个flex列的宽度,使其宽度仅为其内容的大小? http://codepen.io/anon/pen/rrKkOW

<div class="flex">
  <div class="inside inside-left">Left</div>
  <div class="inside inside-right">RIght</div>
</div>

.flex {
  display: flex;
}

.inside {
  flex: 1;
  border: 1px solid #000;
}
Run Code Online (Sandbox Code Playgroud)

设置width: auto不起作用...有点像是flex-basis: content很高兴:)

Pau*_*e_D 13

不要提供该列,flex:1因为它会扩展以占用尽可能多的空间.

事实上,根本不给它任何弹性值,它将默认为width:auto.

.flex {
  display: flex;
}
.inside {
  border: 1px solid #000;
}
.inside-right {
  flex: 1;
  background:#c0ffee;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex">
  <div class="inside inside-left">Left</div>
  <div class="inside inside-right">RIght</div>
</div>

<div class="flex">
  <div class="inside inside-left">Left Left Left LeftLeft Left</div>
  <div class="inside inside-right">RIghtRIghtRIght RIght</div>
</div>

<div class="flex">
  <div class="inside inside-left">Left Left Left LeftLeft LeftLeft Left Left LeftLeft Left</div>
  <div class="inside inside-right">RIghtRIghtRIght RIghtRIghtRIght</div>
</div>
Run Code Online (Sandbox Code Playgroud)

编辑:似乎意图是每个"左"元素都是相同的大小.

这对Flexbox来说是不可能的,但CSS Tables可以实现这一点.

.row {
  display: table-row;
}
.inside {
  display: table-cell;
  border: 1px solid grey;
}
.inside-left {
  background: lightgreen;
}
Run Code Online (Sandbox Code Playgroud)
<div class="row">
  <div class="inside inside-left">Left</div>
  <div class="inside inside-right">RIght</div>
</div>

<div class="row">
  <div class="inside inside-left">Left Left Left LeftLeft Left</div>
  <div class="inside inside-right">RIghtRIghtRIght RIght</div>
</div>

<div class="row">
  <div class="inside inside-left">Left Left Left LeftLeft LeftLeft Left Left LeftLeft Left</div>
  <div class="inside inside-right">RIghtRIghtRIght RIghtRIghtRIght</div>
</div>
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您希望每列的宽度与其内容一样宽,则需要使用align-item:flex-start,请在此处检查此链接


Yin*_*ang 5

你必须稍微重构你的 HTML 来实现你想要的:

.flex {
  display: flex;
}
.inside {
  border: 1px solid #000;
}
.flex-grow {
  flex: 1;
}
.inside-right {
  background:#c0ffee;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex">
  <div>
    <div class="inside">Left</div>
    <div class="inside">Left Left Left LeftLeft Left</div>
    <div class="inside">Left Left Left LeftLeft LeftLeft Left Left LeftLeft Left</div>
  </div>
  <div class="flex-grow">
    <div class="inside inside-right">Right</div>
    <div class="inside inside-right">RIghtRIghtRIght RIght</div>
    <div class="inside inside-right">RIghtRIghtRIght RIghtRIghtRIght</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)