当HTML元素丢失时,用于通过:after/:before添加内容的CSS选择器

当HTML元素丢失时,用于通过:after/:before添加内容的CSS选择器,html,css,css-selectors,pseudo-element,Html,Css,Css Selectors,Pseudo Element,我想在选择器之前添加CSS:before内容,以防未排序的HTML列表没有任何列表项。我不能使用:empty,因为ul和/ul之间可能有空白(空格、换行符、制表符等) 正如:blank还没有在大多数浏览器中实现,我需要另一个解决方案 以下是一个例子: // CSS ul > li::before { content: 'abc'; } /* how to negate this? */ // 'abc' should not show up <ul> <li&g

我想在选择器之前添加CSS:before内容,以防未排序的HTML列表没有任何列表项。我不能使用:empty,因为ul和/ul之间可能有空白(空格、换行符、制表符等)

正如:blank还没有在大多数浏览器中实现,我需要另一个解决方案

以下是一个例子:

// CSS
ul > li::before { content: 'abc'; }   /* how to negate this? */

// 'abc' should not show up
<ul>
  <li>xxx</li>
  <li>xxx</li>
</ul>

// 'abc' should show up
<ul>
</ul>
//CSS
ul>li::在{content:'abc';}/*之前如何否定这个*/
//“abc”不应该出现
  • xxx
  • xxx
//“abc”应该出现

当未排序列表有子项时,上面的CSS显示“abc”。我想在未排序的列表没有子项时显示“abc”。因此,我正在寻找CSS行的否定。

如果没有
:blank
伪类的功能,恐怕这是不可能的。1

只有两个可能的位置可以插入
:在场景中的
伪元素之前:在
ul
中,或在
li
中。由于您只想在不存在
li
元素时插入生成的内容,因此只剩下
ul

尽管
::before
::after
分别插入到元素的子元素之前和之后,并且伪元素当前不支持结构化伪类。这意味着,换句话说,您不能说“阻止
ul::before
在一个或多个
li
元素存在的情况下生成内容”,也不能将
:only child
伪类应用于
ul::before

在可以使用
:empty
的情况下,它非常简单

ul:empty::before { content: 'abc'; }
但是,由于您不能使用
:empty
,因此,如果您确实无法阻止生成空白(例如,如果内容来自WYSIWYG编辑器或其他可能导致剩余空白的转换),则必须将类添加到任何没有子元素的
ul
元素中



1最近对selectors-4进行了修订,但同样是新的,需要实现者的合作。

如果没有
:blank
伪类的功能,恐怕这是不可能的。1

只有两个可能的位置可以插入
:在场景中的
伪元素之前:在
ul
中,或在
li
中。由于您只想在不存在
li
元素时插入生成的内容,因此只剩下
ul

尽管
::before
::after
分别插入到元素的子元素之前和之后,并且伪元素当前不支持结构化伪类。这意味着,换句话说,您不能说“阻止
ul::before
在一个或多个
li
元素存在的情况下生成内容”,也不能将
:only child
伪类应用于
ul::before

在可以使用
:empty
的情况下,它非常简单

ul:empty::before { content: 'abc'; }
但是,由于您不能使用
:empty
,因此,如果您确实无法阻止生成空白(例如,如果内容来自WYSIWYG编辑器或其他可能导致剩余空白的转换),则必须将类添加到任何没有子元素的
ul
元素中



1最近对selectors-4进行了修订,但同样是新的,需要实施者的合作。

使用:not()表示否定css中唯一的选项是
:empty
。如果您可以使用它,那么您可以尝试
ul:empty::after{content:“abc”}
。尝试使用Javascript实现严格的选项。
:empty
用于表单元素。如果不使用Javascript,就无法实现这一点。而且,
content
必须有一个真正的元素来处理,并且必须是一个可以包含内容的元素。例如,伪元素不适用于复选框和输入字段。@connexo:
:empty
与表单元素无关。没错,我在这里错了。谢谢你让我知道!使用:not()表示否定css中唯一的选项是
:empty
。如果您可以使用它,那么您可以尝试
ul:empty::after{content:“abc”}
。尝试使用Javascript实现严格的选项。
:empty
用于表单元素。如果不使用Javascript,就无法实现这一点。而且,
content
必须有一个真正的元素来处理,并且必须是一个可以包含内容的元素。例如,伪元素不适用于复选框和输入字段。@connexo:
:empty
与表单元素无关。没错,我在这里错了。谢谢你让我知道!是的,在
ul
中添加一个类(或)去除空白字符,让
ul:empty::after
生效?是的,在
ul
中添加一个类(或)去除空白字符,让
ul:empty::after
生效?