使用CSS:before和:after伪元素与内联CSS?

Bah*_*Bee 121 html css css-selectors pseudo-element inline-styles

我正在使用内联CSS(即style属性中的CSS )制作HTML电子邮件签名,我很好奇是否可以使用:before:after伪元素.

如果是这样,我将如何用内联CSS实现这样的东西?

td { text-align: justify; }
td:after { content: ""; display: inline-block; width: 100%; }
Run Code Online (Sandbox Code Playgroud)

Bol*_*ock 110

您不能为伪元素指定内联样式.

这是因为伪元素,比如伪类(参见我对这个问题的回答),在CSS中使用选择器定义为文档树的抽象,无法用HTML表示.style另一方面,内联属性在HTML中为特定元素指定.

由于内联样式只能在HTML中出现,因此它们只适用于它们所定义的HTML元素,而不适用于它生成的任何伪元素.

顺便说一句,在该方面伪元素和伪类之间的主要区别在于,由默认继承的属性被继承通过:before:after从发电元件,而伪类样式只是完全不适用.例如,在您的情况下,如果您放置元素text-align: justify的内联样式属性td,它将被继承td:after.需要注意的是,您无法td:after使用内联样式属性声明; 你必须在样式表中这样做.


hon*_*k31 34

如上所述:它无法调用css伪类/元素内联.我现在所做的是:给你的元素一个唯一的标识符,f.ex.一个id或一个独特的类.并写一个合适的<style>元素

<style>#id29:before { content: "*";}</style>
<article id="id29">
  <!-- something -->
</article>
Run Code Online (Sandbox Code Playgroud)

很难,但内联css不是..?

  • 更正:使用`:scope`伪类:`<article> <style scoped>:scope:before {content:"*";} </ style> <! - something - > </ article> (3认同)
  • 那不是内联CSS.内联CSS要求将style =""属性传递给单个HTML元素.通常需要发送格式化为Gmail的CSS,它会删除<style>标记中的任何内容.请参阅此处(http://zurb.com/ink/inliner.php)获取自动机 (2认同)

Cev*_*her 10

您可以内联使用数据

 <style>   
 td { text-align: justify; }
 td:after { content: attr(data-content); display: inline-block; width: 100%; }
</style>

<table><tr><td data-content="post"></td></tr></table>
Run Code Online (Sandbox Code Playgroud)

  • 我来这里是为了寻找如何在内联CSS中应用伪选择器,这个答案向我展示了另一种实现相同目标的方法。内容需要基于大量可能动态创建的选项,因此为每种可能的结果编写单独的CSS选择器堆是不切实际的。 (3认同)
  • 对于寻求将动态内容添加到后续内容的人来说,这实际上是一个很好的答案。可能与该问题无关,但通过Google搜索此解决方案时会显示此问题。 (3认同)
  • 这会将“ data-content”属性打印为“ content”作为伪元素。它与使用内联CSS创建伪元素无关。 (2认同)

小智 10

您不能在内联 css 中创建伪元素。

但是,如果您可以在样式表中创建一个伪元素,那么有一种方法可以通过将内联样式设置为其父元素,然后使用 inherit 关键字来设置伪元素的样式来设置内联样式,如下所示:

<parent style="background-image:url(path/to/file); background-size:0px;"></p>

<style> 
   parent:before{
      content:'';
      background-image:inherit;
      (other)
   }
</style>
Run Code Online (Sandbox Code Playgroud)

有时这会很方便。


Cha*_*amp 8

不,你不能像大卫托马斯所说的那样以inline-css中的伪类伪元素为目标 .欲了解更多详情,请参阅答案由BoltClock伪类

不可以.style属性仅定义给定HTML元素的样式属性.伪类是选择器族的成员,它们不属于属性.....

我们也可以为伪元素编写使用相同的东西

不可以.style属性仅定义给定HTML元素的样式属性.伪类和伪元素是选择器族的成员,它们不会出现在属性中,因此您无法将它们设置为内联样式.


小智 5

是的,有可能,只需为要在元素之后或之前添加的元素添加内联样式即可。

 <style>
     .horizontalProgress:after { width: 45%; }
 </style><!-- Change Value from Here -->

 <div class="horizontalProgress"></div>
Run Code Online (Sandbox Code Playgroud)

  • 这是一个内联样式表。不是内联CSS。 (15认同)
  • 除了不能解决实际问题外,该代码是错误的,伪元素`:: after`和`:: before需要`content:value`,否则默认为`content:none`结果基本上什么也没有。 (3认同)