【问题标题】:Why are list items not filling the width of scrolled unordered list?为什么列表项不填充滚动无序列表的宽度?
【发布时间】:2018-06-01 15:22:44
【问题描述】:

围绕这个问题有很多问题,但似乎没有一个可以为我找到解决方案。

我有一个设置宽度的无序列表,overflow-x 以便它可以水平滚动,并且它的列表项具有不换行的空白。这个想法是所有列表项都占一行,如果需要,用户可以水平滚动。

这在大多数情况下都有效,但我发现如果项目具有背景颜色或其他样式,很明显项目本身不会填充 ul 内容区域的宽度,包括其可滚动部分。

这是演示:

ul {
  border: 1px solid;
  list-style: none;
  overflow-x: auto;
  padding: 2em;
  width: 300px;
}

li {
  border: 1px solid red;
  white-space: nowrap;
}
<ul>
  <li>
      This is very long.
      This is very long.
      This is very long.
      This is very long.
  </li>
    <li>
      This is short.
  </li>
</ul>

我希望所有列表项都填充列表的可滚动宽度。所以在我的演示中,这两个项目的红色边框会一直延伸到最后。

【问题讨论】:

  • 可能尝试为您的 ul 创建一个“溢出包装器”,它设置了溢出属性并将其从 ul 本身中删除。

标签: html css


【解决方案1】:

使用您的宽度和溢出属性创建一个 div 溢出包装器。然后将ul 设置为display: inline-block,你应该得到你想要的。

div {
  overflow-x: auto;
  width: 300px;
  padding: 2em;
  border: 1px solid;
}
ul {     
  list-style: none;
  padding: 0;
  display: inline-block;
}

li {
  border: 1px solid red;
  white-space: nowrap;
}
<div>
<ul>
  <li>
      This is very long.
      This is very long.
      This is very long.
      This is very long.
  </li>
    <li>
      This is short.
  </li>
</ul>
</div>

更新

在不添加任何额外标记的情况下,您可以尝试将li 设置为display: inline-block; 或者min-width: 100%; 以匹配容器的宽度(至少)。

ul {     
  list-style: none;
  overflow-x: auto;
  width: 300px;
  padding: 2em;
  border: 1px solid;
}

li {
  border: 1px solid red;
  white-space: nowrap;
  display: inline-block;
  min-width: 100%;
}
<ul>
  <li>
      This is very long.
      This is very long.
      This is very long.
      This is very long.
  </li>
    <li>
      This is short.
  </li>
</ul>

【讨论】:

  • 哎呀。感谢您的快速回答,这确实有效。但是我团队的应用程序可能有一百个这样的应用程序,我有点希望找到一个只有 CSS 的一刀切。必须包裹在一个 div 中并不是最理想的解决方案。
  • 再次感谢。不幸的是,更新并没有实现我让所有列表项具有相同宽度的目标(本质上与最宽列表项的宽度相同)。您最初的解决方案实现了我想要的 UI,但添加标记是问题所在。
  • 是的,没有额外的标记可能是不可能的。当兄弟元素只知道父元素的宽度时,您希望兄弟元素知道彼此溢出的内容并确定最长的内容。溢出的东西的宽度未知。你需要javascript。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多