向右浮动:当HTML中有空格时,psuedo元素中断到新行后

向右浮动:当HTML中有空格时,psuedo元素中断到新行后,html,css,css-float,less,Html,Css,Css Float,Less,下面是一个代码笔,它说明了我遇到的问题: 我将排序指示符作为psuedo元素添加到内联块元素的网格中,我使用:after psuedo元素来实现这一点。问题是,模板在单元格内容中偶尔会有注释或空格,当:after psuedo元素浮动到单元格右侧时,这会导致psuedo元素断开到新行 单元格的宽度是通过角度指令生成的,因此在CSS中设置它不是一个选项 .cell { border: 1px solid red; display: inline-block; } .cell:after

下面是一个代码笔,它说明了我遇到的问题:

我将排序指示符作为psuedo元素添加到内联块元素的网格中,我使用:after psuedo元素来实现这一点。问题是,模板在单元格内容中偶尔会有注释或空格,当:after psuedo元素浮动到单元格右侧时,这会导致psuedo元素断开到新行

单元格的宽度是通过角度指令生成的,因此在CSS中设置它不是一个选项

.cell {
  border: 1px solid red;
  display: inline-block;
}
.cell:after {
  content: ">";
  display: block;
  float: right;
}

<div class="cell"> Input </div>
.cell{
边框:1px纯红;
显示:内联块;
}
.手机:之后{
内容:“>”;
显示:块;
浮动:对;
}
输入
我不太明白我提出的两个解决方案为什么有效:

  • 将元素从:after更改为:before()
  • 向psuedo元素添加左边距:-100%

  • 如果您有任何见解或其他解决方案,我们将不胜感激。

    这是一个Chrome bug;这在Firefox中不会发生。末端多余的空格是隐藏的,这正是HTML处理块级元素的方式。因此,框的宽度设置为文本“
    Input
    ”的宽度,不带空格。但它们仍然存在于DOM中。当您使用
    :在
    之后,实际上,>只是附加到已经存在的内容中,就好像它是
    一样。它在不可见空间之后,现在生效,因为它不再持续,按下>。浮动它不会改变父对象的宽度,因此它会捕捉到一条新线

    这就是它发生的原因(bug!仅在Chrome中)。您的第一个解决方案之所以有效,是因为
    :before
    在内容之前插入了虚构的
    ,因此不可见的空间不会被扩展。第二种解决方案很可能有效,因为边距抵消了空间的正确推动效应,但请不要引用我的话,我不确定


    最简单的解决方案是使用
    :before
    。语义上不正确,但嘿,这是有效的。希望这个答案对你有帮助,我写它时有点不确定…

    这是一个Chrome bug;这在Firefox中不会发生。末端多余的空格是隐藏的,这正是HTML处理块级元素的方式。因此,框的宽度设置为文本“
    Input
    ”的宽度,不带空格。但它们仍然存在于DOM中。当您使用
    :在
    之后,实际上,>只是附加到已经存在的内容中,就好像它是
    一样。它在不可见空间之后,现在生效,因为它不再持续,按下>。浮动它不会改变父对象的宽度,因此它会捕捉到一条新线

    这就是它发生的原因(bug!仅在Chrome中)。您的第一个解决方案之所以有效,是因为
    :before
    在内容之前插入了虚构的
    ,因此不可见的空间不会被扩展。第二种解决方案很可能有效,因为边距抵消了空间的正确推动效应,但请不要引用我的话,我不确定


    最简单的解决方案是使用
    :before
    。语义上不正确,但嘿,这是有效的。希望这个答案对你有帮助,我写它时有点不确定…

    这是一个Chrome bug;这在Firefox中不会发生。末端多余的空格是隐藏的,这正是HTML处理块级元素的方式。因此,框的宽度设置为文本“
    Input
    ”的宽度,不带空格。但它们仍然存在于DOM中。当您使用
    :在
    之后,实际上,>只是附加到已经存在的内容中,就好像它是
    一样。它在不可见空间之后,现在生效,因为它不再持续,按下>。浮动它不会改变父对象的宽度,因此它会捕捉到一条新线

    这就是它发生的原因(bug!仅在Chrome中)。您的第一个解决方案之所以有效,是因为
    :before
    在内容之前插入了虚构的
    ,因此不可见的空间不会被扩展。第二种解决方案很可能有效,因为边距抵消了空间的正确推动效应,但请不要引用我的话,我不确定


    最简单的解决方案是使用
    :before
    。语义上不正确,但嘿,这是有效的。希望这个答案对你有帮助,我写它时有点不确定…

    这是一个Chrome bug;这在Firefox中不会发生。末端多余的空格是隐藏的,这正是HTML处理块级元素的方式。因此,框的宽度设置为文本“
    Input
    ”的宽度,不带空格。但它们仍然存在于DOM中。当您使用
    :在
    之后,实际上,>只是附加到已经存在的内容中,就好像它是
    一样。它在不可见空间之后,现在生效,因为它不再持续,按下>。浮动它不会改变父对象的宽度,因此它会捕捉到一条新线

    这就是它发生的原因(bug!仅在Chrome中)。您的第一个解决方案之所以有效,是因为
    :before
    在内容之前插入了虚构的
    ,因此不可见的空间不会被扩展。第二种解决方案很可能有效,因为边距抵消了空间的正确推动效应,但请不要引用我的话,我不确定


    最简单的解决方案是使用
    :before
    。语义上不正确,但嘿,这是有效的。希望这个答案对你有帮助,我写它时感觉有点不确定…

    你是否尝试过删除
    浮点:右
    并在
    上设置
    显示:内联块
    。单元格:在
    之后?是的,
    浮点:右
    是布局所必需的,
    显示:内联块
    也没有帮助。我还尝试对psuedo元素使用绝对定位,但由于