浮动:右转逆转跨度

dem*_*mas 45 css

我有HTML:

<div>
    <span class="label"><a href="/index/1">Bookmix Offline</a></span>
    <span class="button"><a href="/settings/">Settings</a></span>
    <span class="button"><a href="/export_all/">Export</a></span>
    <span class="button"><a href="/import/">Import</a></span>
</div>
Run Code Online (Sandbox Code Playgroud)

和CSS:

span.button {
    float:right;
}

span.label {
    margin-left: 30px;
}
Run Code Online (Sandbox Code Playgroud)

在浏览器中,跨度以相反的顺序显示:导入导出设置.我可以通过仅更改CSS文件并保持HTML原样来更改顺序吗?

Mar*_*row 75

这个问题的一般解决方案是要么颠倒HTML中右浮动元素的顺序,要么将它们包装在一个包含元素中,然后将其浮动到右边.

  • 我更喜欢包含答案,这些答案概述了人们使用的相关领域的解决方案,从而提供了实际答案适合它的位置. (11认同)
  • 他说*"我可以通过仅更改css文件和**左html来改变顺序吗?"* (7认同)
  • @TJ理解,答案可能更加集中在最严格意义上的实际答案.但我想传达的观点是,实际上你不需要在HTML的语义布局中加入一些思考以充分利用CSS. (5认同)
  • @Marcus:无论如何.*"......或将它们包装在......"*读起来就像是在建议改变HTML,尤其是 正如你建议在句子的前半部分更改它. (4认同)

小智 31

如果您想使列表项正确对齐而不撤消订单,请不要浮动列表项.让它们内联而不是.text-align:对你的跨度

div {
    text-align:right;
}

span {
    display:inline;
}
Run Code Online (Sandbox Code Playgroud)

  • 或者您可以使用`display:inline-block;`来获得正确的填充 (8认同)

Dan*_*eld 9

是的,这可以通过您的确切标记来完成.

诀窍是使用 direction: rtl;

标记

<div>
    <span class="label"><a href="/index/1">Bookmix Offline</a></span>
    <span class="button"><a href="/settings/">Settings</a></span>
    <span class="button"><a href="/export_all/">Export</a></span>
    <span class="button"><a href="/import/">Import</a></span>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

div
{
    direction: rtl;   
}

span.label {

    float: left;
    margin-left: 30px;
}
Run Code Online (Sandbox Code Playgroud)

小提琴

  • 这个黑客太脆弱了.最好浮动父容器. (3认同)
  • 不要忘记重置任何子元素的方向:`div>*{direction:ltr}`. (2认同)

RoT*_*oRa 5

div.outerclass {
  text-align: right;
}

div.outerclass .label {
  float: left;
   text-align: left;
}
Run Code Online (Sandbox Code Playgroud)


xxx*_*nce 5

好简单!

div.outerclass {
    float: right;
}

div.innerclass {
    float: left;
}
Run Code Online (Sandbox Code Playgroud)


SW4*_*SW4 5

更新:两个轻量级 CSS 解决方案:

使用flexflex-floworder

示例 1:演示小提琴

    div{
        display:flex;
        flex-flow: column;
    }
    span:nth-child(1){
        order:4;
    }
    span:nth-child(2){
        order:3;
    }
    span:nth-child(3){
        order:2;
    }
    span:nth-child(4){
        order:1;
    }
Run Code Online (Sandbox Code Playgroud)

或者,反转 Y 比例:

示例 2:演示小提琴

div {
    -webkit-transform: scaleY(-1);
    transform: scaleY(-1);
}
span {
    -webkit-transform: scaleY(-1);
    transform: scaleY(-1);
    display:inline-block;
    width:100%;
}
Run Code Online (Sandbox Code Playgroud)