【问题标题】:Part of list item's text aligned left and rest aligned right列表项的部分文本左对齐,其余部分右对齐
【发布时间】:2017-04-20 18:27:35
【问题描述】:

我想让<li> 的一部分内容向左对齐(“标题”),其余部分(“[按钮]”)向右对齐。对于每个项目。

我正在使用以下HTML 代码:

<ul class="dual-align-list">

    <li><div>Title</div><div>[button]</div></li>

    <li><div>Title</div><div>[button]</div></li>

</ul>

和样式:

ul.dual-align-list li
{
    display: block;
    height: 25px;
}

ul.dual-align-list li div:first-child {float: left}

ul.dual-align-list li div:nth-child(2) {float: right}

但我有一种不好的感觉,我做错了什么。

这个问题有更好的方法/解决方案吗?

【问题讨论】:

  • 您的代码有效 > FIDDLE。有什么问题?
  • @3rror404 是的,我知道它有效! :] 你有没有注意到最后两行:“但我有一种不好的感觉,我做错了什么。有没有更好的方法/解决方案来解决这个问题?”。我正在努力让自己确定,它不仅可以工作,而且在语义上也可以,并且符合现代标准。

标签: html css html-lists text-align


【解决方案1】:

但我有一种不好的感觉,我做错了什么。 这个问题有更好的方法/解决方案吗?

唯一的问题是你的类和伪元素的使用不是很语义化。更好的方法是为您的divs 提供描述其内容的类,并以这种方式设置它们的样式。

<ul class="title-content-list">
    <li><div class="title">Title</div><div class="content">[button]</div></li>
</ul>

和 CSS

ul.title-content-list > li { display: block; height: 25px; }
ul.title-content-list > li > div.title { float: left }
ul.title-content-list > li > div.content { float: right }

或者类似的东西。

使用“left”或“right”作为类名是非常不好的做法 - 如果您后来决定要将标题放在右边而按钮放在左边怎么办?您必须更改所有 HTML,或者使用奇怪的 CSS,其中 .right 将元素定位在左侧,.left 定位在右侧。

【讨论】:

  • 约书亚,我使用leftright 作为类名!这来自上述NuclearApe的回答,而不是来自我的问题! :] 对我来说,这和你一样明显。顺便说一句:类而不是伪元素的想法听起来很有趣,谢谢!
  • ...It's very bad practice to use "left" or "right" 真的吗? Bootstrap 及其狂热的追随者会不同意。 Bootstrap 包括常用的类pull-leftpull-right。由于开发人员无法在其源代码中找到替换类名而不使用类名left,这不是不使用它们的正当理由。实际上,给许多元素自己单独的类名而不是使用像pull-leftpull-right 这样的可重用类名是不好的做法。
  • Bootstrap 做什么并不重要,重要的是类名和元素是否具有语义,给div 类“正确”绝对不是。 Bootstrap 可以为所欲为,它并不能使他们所做的事情成为良好的实践。
【解决方案2】:

您正在做的事情似乎正在发挥作用(至少根据您如何描述您在此处寻找的内容)。我假设您的问题是选择器的复杂性?如果是这样,您可以尝试的一件事是将选择器移动到单个元素。我知道他们称之为引导程序,所以我继续这样做:

<ul class="dual-align-list">
    <!-- Title really only needs to be in a div if you
         plan on styling it further -->
    <li> Title <div class="pull-right">[button]</div></li>
    <li> Title <div class="pull-right">[button]</div></li>
</ul>

请参阅 this JSFiddle 以获取其中的工作示例。希望这能解决实际问题!

编辑

顺便说一句,如果问题只是按钮向右移动多远,您可以将所有内容放在一个固定宽度的容器中,或者您可以在“pull-right”类中添加一个margin-right。对于固定宽度的容器,只需将 ul 包裹在:

<div class="container"> <!-- "ul" here --> </div>

您还需要以下样式规则:

/* edited to use percents for a responsive layout */
.container { margin-left: 5%; margin-right: 5% }

我把它放在对上一个小提琴 you can find here 的更新中。希望这也能帮助一些人。祝你好运!

编辑(2)

将固定宽度布局更改为具有 5% 边距的响应式布局。这些可以根据所需的结果进行调整,甚至可以使用@media 元素设置样式以根据屏幕大小而变化!

【讨论】:

  • 感谢不必要的&lt;div&gt; 标题(实际上,不需要样式)和制作 JsFiddle 的想法。至于你的编辑——不。这是一个类似流体的主题,因此不允许固定宽度。再次感谢!
  • 即使宽度固定,如果需要边距,您仍然可以按百分比设置样式。我会相应地更新
【解决方案3】:

试试这个:

HTML

<ul class="dual-align-list">
    <li>
        <div class="left">Title</div>
        <div class="right">[button]</div>
    </li>
    <li>
        <div class="left">Title</div>
        <div class="right">[button]</div>
    </li>
</ul>

CSS

ul.dual-align-list li {
    display: block;
    height: 25px;
    position: relative;
}
ul.dual-align-list li .left {
    text-align: left;
    position: absolute;
    left:0;
}
ul.dual-align-list li .right {
    text-align: right;
    position: absolute;
    right:0;
}

希望这会有所帮助:)

【讨论】:

  • 你的代码在哪方面比我的好?除此之外,您使用的是绝对定位,这是非常糟糕的主意,AFAIK
猜你喜欢
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2021-08-26
相关资源
最近更新 更多