html - Flexbox 容器中列表项之前的额外空间

标签 html list css flexbox

我有以下代码:

HTML

<ul class="menu">
  <li><a href="#">Item 1</a></li>
  <li>
    <a href="#">Item 2</a>
  </li>
  <li>
    <a href="#">Item 3</a>
  </li>
  <li><a href="#">Item 4</a></li>
</ul>

CSS

ul.menu
{
  display: flex;
  list-style: none;
}
ul.menu li::before
{
  content: "\2022";
}

第 1 项和第 4 项工作正常,但第 2 项和第 3 项之前(就在元素符号之后)有一个额外的空格。我知道这是因为 HTML 中为这些元素新增了一行。但是,如果没有 ul.menu li::before 规则,一切都可以正常工作。

我确信我遗漏了一些明显的东西。有谁知道如何去掉多余的空间并仍然保留 HTML 中的新行吗?也许有一些巧妙的解决方案,而不仅仅是 ul.menu li a::before (这个不好,它也使元素符号可点击)。

JSfiddle

P.S.:即使没有 display: flex; 也会出现同样的问题,所以它显然与 flexbox 无关。

最佳答案

您看到的空间是所有内联元素的特征 - 只需将 display: flex 添加到li 也是。

请参阅下面的演示和我的 updated Fiddle :

body {
  font-family: sans-serif;
}
ul.menu {
  display: flex;
  list-style: none;
}
ul.menu li::before {
  content: "\2022";
}
ul.menu li {
  display: flex;
}
<ul class="menu">
  <li><a href="#">Item 1</a>
  </li>
  <li>
    <a href="#">Item 2</a>
  </li>
  <li>
    <a href="#">Item 3</a>
  </li>
  <li><a href="#">Item 4</a>
  </li>
</ul>

关于html - Flexbox 容器中列表项之前的额外空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41870243/

相关文章:

javascript - 从父元素到子元素覆盖游标值

html - <div> 元素表现得好像隐藏在某些不可见的东西后面

list - 合并序言中的列表列表

python - 对列表进行设置操作

javascript - 使用 scrollTop() 时如何添加固定偏移量

jquery - 像 TheVerge 上的 float 菜单评论帖子 Jquery

具有必需和禁用元素的 Html5 表单验证

javascript - 本地存储和变量

c# linq 如果项目在列表中并从列表中获取匹配项目

javascript - Webpack 没有捆绑 SCSS/CSS