Html 添加带有if-not子类条件的css

Html 添加带有if-not子类条件的css,html,css,css-selectors,Html,Css,Css Selectors,您好,请参阅以下两个html代码: <div class="price"> 2 </div> 它正在发挥作用。但是如果.symbol类已经存在于.price类中,我就不希望出现这种情况。在CSS中有什么方法可以做到这一点吗?您可以通过jquery检查这个类,这很好 if( $('.price').hasClass('symbol') ) { // ... } 您可以通过jquery检查这个类,这是一个很好的例子 if( $('.price').hasClass

您好,请参阅以下两个html代码:

<div class="price">
  2
</div>

它正在发挥作用。但是如果
.symbol
类已经存在于
.price
类中,我就不希望出现这种情况。在CSS中有什么方法可以做到这一点吗?

您可以通过jquery检查这个类,这很好

if( $('.price').hasClass('symbol') ) {
  // ...
}

您可以通过jquery检查这个类,这是一个很好的例子

if( $('.price').hasClass('symbol') ) {
  // ...
}

仅使用
CSS
无法实现这一点。这里需要一点jquery

我的jQuery代码所做的是将class
.symbol present
添加到
.price
中,它具有
.symbol
元素,然后我的CSS代码相应地添加符号

$(“.price”).addClass(函数(){
返回$(this.find(“.symbol present”)。长度>0?“symbol”:“;
})
。价格:未(.symbol present)::之前{
内容:“;
}

2.
£ 2

仅使用
CSS
无法实现这一点。这里需要一点jquery

我的jQuery代码所做的是将class
.symbol present
添加到
.price
中,它具有
.symbol
元素,然后我的CSS代码相应地添加符号

$(“.price”).addClass(函数(){
返回$(this.find(“.symbol present”)。长度>0?“symbol”:“;
})
。价格:未(.symbol present)::之前{
内容:“;
}

2.
£ 2

您可以在纯CSS中实现这一点:

.price::before {
     content: "£";
} 

/* Do not show the symbol if contained into a price element */
.price > .symbol {
  display:none;
}
为什么?
因此,CSS选择器的工作方式是选择器只能查询元素的父元素或同级元素。无法创建通过查询元素的子元素来执行操作的选择器。你必须颠倒顺序。这就是为什么您使用
.symbol
类并显示或隐藏它。

您可以在纯CSS中实现这一点:

.price::before {
     content: "£";
} 

/* Do not show the symbol if contained into a price element */
.price > .symbol {
  display:none;
}
为什么?
因此,CSS选择器的工作方式是选择器只能查询元素的父元素或同级元素。无法创建通过查询元素的子元素来执行操作的选择器。你必须颠倒顺序。这就是为什么您使用
.symbol
类并显示或隐藏它。

如果您将
符号作为默认值,并将
.symbol
应用于注释中提到的@BoltClock的不同符号

您可以将
类与
位置:绝对
组合使用

必须将
position:absolute
应用于同一位置的
pseudo
元素和
symbol
类。如果没有
symbol
类,则在
之前的伪元素
:将可见,如果
symbol
类在那里,则在伪元素
:之前的伪元素上方将可见

这里需要技巧的部分是
类的
背景色:白色

堆栈片段

.price::之前{
内容:“;
位置:绝对位置;
左:0;
}
.价格{
显示:内联块;
位置:相对位置;
左侧填充:20px;
}
.符号{
位置:绝对位置;
左:0;
背景:#fff;
}
2

$ 4
如果您将
符号作为默认值,并将
.symbol
作为注释中提到的@BoltClock的不同符号

您可以将
类与
位置:绝对
组合使用

必须将
position:absolute
应用于同一位置的
pseudo
元素和
symbol
类。如果没有
symbol
类,则在
之前的伪元素
:将可见,如果
symbol
类在那里,则在伪元素
:之前的伪元素上方将可见

这里需要技巧的部分是
类的
背景色:白色

堆栈片段

.price::之前{
内容:“;
位置:绝对位置;
左:0;
}
.价格{
显示:内联块;
位置:相对位置;
左侧填充:20px;
}
.符号{
位置:绝对位置;
左:0;
背景:#fff;
}
2

$ 4
为什么不能添加
.price>.symbol{display:none;}
?通过这种方式,您总是只通过css显示符号我可以使用Jquery吗?@Alon Eitan:可能是因为符号并不总是.%,如果没有指定,它们只希望.%作为默认值。但是如果价格总是在%内,那么您的解决方案是理想的。为什么不能添加
.price>.symbol{display:none;}
?通过这种方式,您总是只通过css显示符号我可以使用Jquery吗?@Alon Eitan:可能是因为符号并不总是.%,如果没有指定,它们只希望.%作为默认值。但是如果价格总是在%之内,那么你的解决方案是理想的。只是这个问题没有在jquery下面加上标签。这个问题没有在jquery下面加上标签。我不完全理解答案,但我认为这将是一个好的答案。如果您可以在JSFIDLE中做一个例子,那么它会更好。@ABLASHER您必须在同一位置对
伪元素
符号
类应用
位置:绝对
。如果
.symbol
存在,它将位于伪元素
之上:在
之前,我不完全理解答案,但我认为这将是一个好答案。如果您可以在JSFIDLE中做一个例子,那么它会更好。@ABLASHER您必须在同一位置对
伪元素
符号
类应用
位置:绝对
。如果
.symbol
存在,它将位于伪元素
:之前的