18

在以下情况下,如何使生成的文本:after位于跨度框之外?(它目前在内部渲染,即它使span元素更宽)

HTML

<span class="my">Boxtext</span>

CSS

span.my {
    padding:            4px 8px;
    background-color:   red;
    display:            inline-block;
    border-radius:      10px;
    margin-left:        20px;
    }   
span.my:after {
    content:            " text that is supposed to come after the box";
    }

我想这有点类似于列表样式位置,您可以在其中选择内部或外部......

4

2 回答 2

9

我相信 CSS 内容被认为是渲染它的对象的一部分。您可以提出:after应该命名的论点:append

对于您的情况,您可以尝试在其中添加一个额外的元素span.my

<span class="my"><span>Boxtext</span></span>
span.my span { ... }
span.my:after { ... }

或者专门设置内容的样式。

span.my:after { 
    content:            " text that is supposed to come after the box";
    background-color:   white;
    position:           absolute;
    margin-left:        10px;
}
于 2012-04-09T18:00:13.763 回答
5

只需position: absolute::after {}伪元素的 css 中使用:

span.my:after {
    content: " text that is supposed to come after the box";
    position: absolute;
    left: 100%;
}​

当然,请记住在父元素上使用position: relative;(或任何其他position值) 。span.my

JS 小提琴演示

还要记住,由于::after(和::before)伪元素继承自它“附加”到的跨度,它将继承width,因此可能需要在 CSS 中为那个/那些元素显式覆盖。

于 2012-04-09T18:08:58.093 回答