CSS 将内容包装在程式化的容器中?

CSS to wrap contents in stylized container?

我有一个为 <LABEL>.

指定样式的样式表

但有些 <LABEL> 是特殊的:目前我将它们内联样式设置为这样:

<LABEL style="text-align:right; line-height:15pt">
    <div style="padding-right:20px">My Label Text</div>
</LABEL>

我怀疑有一种方法可以指定 CSS class,也许叫做 rightlabel,使用像这样简单的东西来呈现前面的内容:

<LABEL class="rightlabel">My Label Text</LABEL>

正确的做法是什么?即,有没有一种方法可以在 CSS 中定义 rightlabel 以生成覆盖的 <LABEL> 同时自动将其子项包装在填充的子容器中 (因为除非完成,否则样式无法正常工作,并且依赖编码器实现两个元素来获得正确的样式似乎不合适)?

修正案: 我可以使用子选择器完成大部分工作——如 this fiddle 所示 CSS:

.rightLabel {text-align: right}
.rightLabel > * {padding-right: 20px}

但我无法找到一种方法来将填充应用于标签内容,而无需将内容显式包装在某个容器中。即,上面的 CSS 在

上可以正常工作
<LABEL class="rightLabel">
  <div>This is what we wanted!</div>
</LABEL>

但不在

<LABEL class="rightLabel">Why am I not padded?</LABEL>

是否可以将样式应用于 <LABEL> 内容而无需在另一个 HTML 元素(子)中明确编码?

像这样定义你的样式:

<style> 
.rightLabel
{
    text-align:right;
}

.rightLabel div 
{
    padding-right:20px;
}
</style>

更新问题:您不能使用 CSS 添加 div,您需要 JavaScript。您可以使用 :before 和 :after 添加伪元素。

这里是fiddlehttps://jsfiddle.net/c3h9a2b9/1/

.rightLabel:before {
  display:block;
  content:' ';
  width:20px;
  float:right;
}

这通过在您的标签上使用 :before:after 伪元素来伪造填充。它需要一个块的显示(内联块也可以)和一些尺寸,这里的宽度是 20px(你需要的 "padding")并且在你想要填充的方向上浮动....

如果我没看错你的问题,答案就是这个CSS:

label{
    //Your general label style
}
label.rightlabel{
    text-align: right;
    line-height: 15pt;
}
label.rightlabel div{
    padding-right: 20px;
}

有了这个HTML就如你所愿

<label>a normal label</label>
</label class="right label"><div>the special label</div></label>

这是可行的,因为默认情况下更具体的 CSS 会覆盖不太具体的 :)