html - 使列内容宽度,而不是宽度 : 100%

标签 html css flexbox

我把flex-direction: columnflex-wrap: wrap for ul实现columns。

如果 ul 将元素分成几列,则它们的宽度为列中最宽的 li 内容。但如果只有一列,它的宽度为 100%。

我想要的是让这一列与其内容一样大。

/* boilerplate */

* {
  margin: 0;
  padding: 0;
}

div {
  max-height: 100px;
  background-color: #cacaca;
}

ul {
  list-style-type: none;
  height: 100px;
  background-color: #dadada;
}

li {
  margin-right: 10px;
  background-color: #eaeaea;
}


/* actual code */

div {}

ul {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-content: center;
}

li {}
<div>
  <ul>
    <li>normal</li>
    <li>x</li>
    <li>y</li>
    <li>z</li>
    <li>short</li>
    <li>a</li>
    <li>b</li>
    <li>c</li>
    <li>wiiiiiiiiiiiiiiide</li>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>normal</li>
    <li>just two</li>
  </ul>
</div>

<div>
  <ul>
    <li>why</li>
    <li>full</li>
    <li>width?</li>
  </ul>
</div>

https://codepen.io/anon/pen/eRYjLd

最佳答案

使用 display: inline-flex 代替 display: flex

这会将容器从 block 级(占用其父级的整个宽度)切换到行内级(占用其内容的宽度)。

这种调整大小的行为类似于 display: blockdisplay: inline-block

使用 justify-content: center 使父 div 成为 flex 容器。

这将 ul flex 容器限制为 flex 元素的宽度,其默认值为 flex-basis: auto(内容宽度)。

/* boilerplate */

* {
  margin: 0;
  padding: 0;
}

div {
  max-height: 100px;
  background-color: #cacaca;
}

ul {
  list-style-type: none;
  height: 100px;
  background-color: #dadada;
}

li {
  margin-right: 10px;
  background-color: #eaeaea;
}


/* actual code */

div {
  display: flex;             /* NEW */
  justify-content: center;   /* NEW */
}

ul {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-content: center;
}

li {}
<div>
  <ul>
    <li>normal</li>
    <li>x</li>
    <li>y</li>
    <li>z</li>
    <li>short</li>
    <li>a</li>
    <li>b</li>
    <li>c</li>
    <li>wiiiiiiiiiiiiiiide</li>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>normal</li>
    <li>just two</li>
  </ul>
</div>

<div>
  <ul>
    <li>why</li>
    <li>full</li>
    <li>width?</li>
  </ul>
</div>

关于html - 使列内容宽度,而不是宽度 : 100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44349629/

相关文章:

javascript - jQuery .html() 用 html/javascript 代码填充一个 div

javascript - 对从 CSV 表生成的 HTML 表进行排序

javascript - 如何使用 jQuery 添加一个特定的 HTML block

html - 带有填充溢出容器的 Flex 元素

react-native - React Native 和 { flex : 1 }

css - 在 bootstrap 中定位 div

css - 如何使 px 大小响应?

iPhone 上的 jQuery/CSS 导航故障

html - ionic 复选框高度不成比例

html - Flexbox - 如何创建这种布局