css ul 和 li - 每个 li 中的多个跨度以及如何垂直排列跨度

Posted

技术标签:

【中文标题】css ul 和 li - 每个 li 中的多个跨度以及如何垂直排列跨度【英文标题】:css ul and li - multiple spans in each li and how to line up the spans vertically 【发布时间】:2014-10-25 07:54:13 【问题描述】:

我有一个清单:

<ul>
    <li>
        <span class="first">the dog jumped over the fox</span>
        <span class="second">1</span>
        <span class="third">Edit</span>
    </li>
    <li>
        <span class="first">cat and mouse</span>
        <span class="second">1</span>
        <span class="third">Edit</span>
    </li>
    <li>
        <span class="first">doggie</span>
        <span class="second">1</span>
        <span class="third">View report</span>
    </li>        
</ul>

我想将每个&lt;li&gt; 中第一个&lt;span&gt; 的宽度设置为等于文本最长的那个。在这种情况下,最长的文本是“狗跳过狐狸”,所以我希望所有其他 &lt;span class="first"&gt;s 都匹配它。我还想将相同的逻辑应用于&lt;li&gt; 中的任何其他&lt;span&gt;s。基本上,所有&lt;span class="first"&gt; 长度相同,所有&lt;span class="second"&gt; 长度相同,所有&lt;span class="third"&gt; 长度相同。这是我想要实现的目标:

------------------------------------------ 狗跳过狐狸|1|编辑| ------------------------------------------ 猫和老鼠|1|编辑| ------------------------------------------ 小狗 |1|查看报告| ------------------------------------------

谢谢!

【问题讨论】:

您只想在 ul 中使用它?或者你也可以在桌子上使用它吗?因为您的要求与表格概念相似? 这是使用tabletr,td 功能的理想场景 这是在左侧导航中,它正在使用&lt;ul&gt; 【参考方案1】:

使用&lt;table&gt;怎么样?

See this fiddle.

html

<table>
    <tr>
        <td>the dog jumped over the fox</td>
        <td>1</td>
        <td>Edit</td>
    </tr>
    <tr>
        <td>cat and mouse</td>
        <td>1</td>
        <td>Edit</td>
    </tr>
    <tr>
        <td>doggie</td>
        <td>1</td>
        <td>View report</td>
    </tr>        
</table>

【讨论】:

【参考方案2】:

将您的列表放在 html 中的表格中。

<table>

<ul>
  <li>
    <span class="first">the dog jumped over the fox</span>
    <span class="second">1</span>
    <span class="third">Edit</span>
  </li>
  <li>
    <span class="first">cat and mouse</span>
    <span class="second">1</span>
    <span class="third">Edit</span>
  </li>
  <li>
    <span class="first">doggie</span>
    <span class="second">1</span>
    <span class="third">View report</span>
  </li>        
  </ul>

</table>

然后在你的 CSS 中

table
table-layout: fixed;
width: 300px;

像素宽度可以由你决定!

祝你好运!

【讨论】:

【参考方案3】:

你必须将 li 设置为 display: block;并至少浮动第一个跨度,然后给它一定的宽度。尚未测试跨浏览器兼容性,但它应该可以工作。演示:http://jsfiddle.net/fdhu0w07/

`
ul 
    display: block;

ul li 
    display: block;


ul li span 
    display: inline-block;


ul > li > span:first-of-type
    float: left;
    width: 220px;
`

【讨论】:

跨度的宽度可能必须是动态的。【参考方案4】:

像下面这样应用 CSS。

 uldisplay:table; width:100%; padding:0;
 lidisplay:table-row;
 li spandisplay:table-cell; text-align:left;

DEMO

【讨论】:

以上是关于css ul 和 li - 每个 li 中的多个跨度以及如何垂直排列跨度的主要内容,如果未能解决你的问题,请参考以下文章

关于CSS中的ul与li的问题 具体代码如下 怎么解决子级li挤父级li

急!CSS中,怎么让ul li中的图片和文字横向水平居中

求ul中的li布局CSS布局,横向垂直都要居中,如何实现?

<ul>中的<li>我点击一个<li>后其它的<li>全变背景色,求JS和CSS代码

关于css中,ul li的背景小图标属性设置

css怎样设置ul的li 居中均匀排列