【问题标题】:justifying inline-block elements using "text-align: justify" not working使用“text-align: justify”来对齐 inline-block 元素不起作用
【发布时间】:2018-08-03 17:14:00
【问题描述】:

我有以下标记,我正在尝试沿我的 uls 宽度证明我的列表是这样的:

ul {
  width: 100%;
  text-align: justify;
}

ul::after {
  content: '';
  display: inline-block;
  width: 100%;
}

li {
  display: inline-block;
}
<ul>
  <li>some text</li>
  <li>some text</li>
  <li>some text</li>
  <li>some text</li>
  <li>some text</li>
  <li>some text</li>
</ul>

实际上,这是沿父项宽度分布项目的常用方法。但由于某种原因,它在我当前的项目中不起作用。你有什么想法可以分享吗?


更新

查看这个小提琴以获得我正在使用的更真实的标记和样式: https://jsfiddle.net/gqL8rqje/

【问题讨论】:

  • 到底是什么问题?如果是水平滚动,是这样的吗? codepen.io/mcoker/pen/ayNZrJ
  • 是的,工作正常,但不知何故在我的项目环境中它没有
  • 这可能是一个 css 特异性问题。尝试在ul 上使用padding-left: 0 !important;,看看是否可以。除非有必要,否则您不应使用 !important,但这会告诉您这是否是特异性问题。如果这不能解决问题,请发布足够的代码来复制问题,并从 ul 中删除填充
  • 你得到的最终结果是什么?
  • @UncaughtTypeError 结果看起来像常规的 text-align: left;更改 ul 上的填充没有任何效果,请在此处检查更真实的 css 并标记我正在使用:jsfiddle.net/gqL8rqje

标签: html css text-align text-justify


【解决方案1】:

我会使用带空格的弹性框

ul {
  width: 100%;
  display: flex;
  justify-content: space-between;
}


li {
  display: inline-block;
}
<ul>
  <li>some text</li>
  <li>some text</li>
  <li>some text</li>
  <li>some text</li>
  <li>some text</li>
  <li>some text</li>
</ul>

【讨论】:

  • 虽然我不想使用 flexbox
【解决方案2】:

您的具体问题来自您的代码缩进。 事实上,display: inline-block + text-align: justify 仅在元素之间存在一定间隔时才有效。

换句话说,通用方法分布适用于

<ul>
<li><a>some text</a></li>
<li><a>some text</a></li>
<li><a>some text</a></li>
</ul>

但它不适合

<ul>
<li><a>some text</a></li><li><a>some text</a></li><li><a>some text</a></li>
</ul>

我认为此类代码缩进无法解决您的问题。 如果你想让它工作,你需要在生成页面时在&lt;li&gt; 标记之间插入一些断行。

否则,@Gerard 提供的解决方案是最防弹的,即使您不想使用 flexbox,它也将是您的上下文中最简单的方法。

【讨论】:

    【解决方案3】:

    你应该使用text-align-last: justify;,因为text-align: justify;最后一行总是左对齐,在你的情况下,唯一的一行是最后一行...

    在此处查看您改编的小提琴:

    https://jsfiddle.net/bnwvj1q4/1/

    这里是你改编的 sn-p。

    ul {
      width: 100%;
      text-align-last: justify;
      margin: 0;
      padding: 0;
    }
    
    li {
      display: inline-block;
    }
    <ul>
      <li>some text</li>
      <li>some text</li>
      <li>some text</li>
      <li>some text</li>
      <li>some text</li>
      <li>some text</li>
    </ul>

    【讨论】:

    • 我使用 ::after 元素来拉伸最后一行,所以常规的 text-align: justify 应该可以完成这项工作 (jsfiddle.net/o2ywLbjx).. 但不知何故它没有。不管我是按照你的方式还是按照我的方式做,至少在我的项目中,小提琴是有效的-.-
    • 我无法在小提琴中复制问题...可能问题可能与某些父样式有关..
    • 因为 text-align-last 显然不支持 safari,有没有比这更好的替代方案?
    猜你喜欢
    • 2015-10-07
    • 2012-04-18
    • 2021-12-17
    • 2020-09-24
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多