Html 如果父级具有特定类,则应用/删除CSS类

Html 如果父级具有特定类,则应用/删除CSS类,html,css,Html,Css,在CSS 3中,是否可以基于某个元素的父类将某个CSS类(而不是属性/值)应用/删除到该元素 我将给出一个具体的例子,试图更好地解释我的意思-假设我有一个,根据具体情况,我可以应用样式类我的大div或我的小div。在它里面,我使用引导类表单组和表单组lg创建了一些输入/按钮: <div class="my-large-div"> ... <div class="my-form-group form-group form-group-lg">

在CSS 3中,是否可以基于某个元素的父类将某个CSS类(而不是属性/值)应用/删除到该元素

我将给出一个具体的例子,试图更好地解释我的意思-假设我有一个
,根据具体情况,我可以应用样式类
我的大div
我的小div
。在它里面,我使用引导类
表单组
表单组lg
创建了一些输入/按钮:

<div class="my-large-div">
    ...
    <div class="my-form-group form-group form-group-lg">
        <!-- some input field -->
    </div>
</div>
现在,我知道这可以通过Javascript/jQuery实现,但我正在寻找一个只有CSS的解决方案,如果这样的解决方案存在的话,或者一个无法实现的明确答案

一个可能的解决方案是总是有两个
my form group
副本,
display
设置为
none
initial
,但我觉得这可能既混乱又低效(例如,如果我根据用户在页面中的操作更改类)


我肯定不想做的一件事是在我自己的CSS中复制
表单组
表单组lg
的整个定义,因为这意味着每次更改引导类时,我都必须更改我的(而且它打破了抽象)。

。CSS无法从DOM中删除元素,只有Javascript可以访问DOM。

是的,通过使用
:not()
选择器,您可以执行以下操作

.form-group-lg {
    display: none;
}

.my-form-group:not(.my-small-div) .form-group-lg {
    display: block;
}

这样做的目的是检查带有类
my form group
的div是否也有一个类
my small div
,如果没有,则
form group lg
将显示为一个块,否则它将只显示为
display:none

在CSS中无法有条件地指定或删除类。尽管您可能知道,这可以用Javascript轻松实现

e.g. 
if( $(‘#target’).hasClass(‘animal’) ) {
$(document.body).addClass(‘dog’);
}

但是,根据Samir的示例,您可以使用
:not()
选择器有条件地根据父元素更改特定类的样式

什么是“css类”?如果您不是在谈论CSS属性,那么您想从元素中“删除”什么?使用jQuery,下面是一个添加类onload的示例@BoltClock-我想使用类给我的抽象。同样的,我可以说“这个元素应该根据这个类来设计样式”,从而将样式的实际细节抽象到类中,我希望能够根据元素的父类来控制整个类结构(无论是否应用)。我希望做的不是
.a.b{/*很多属性*/}
,而是
.a.b{/*now use everything.c calls for*/)
@sillyfly:在这种情况下,我认为您只是试图在.form group元素中添加或删除表单组lg类名。解释了类的工作原理。这不是CSS可以做到的,因为CSS不能修改HTML属性/DOM属性;CSS只能根据文档设置元素的样式可供使用的信息。(如果您愿意,我可以将此作为答案发布。)我不想让它删除元素,只想修改它的类。我怀疑这也是不可能的,但这不是同一件事。我不想隐藏内容,只想删除
表单组lg
需要的样式。它仍然应该使用任何其他类调用来显示。在这种情况下,最好将c分开要使用的女孩?何时隐藏,何时显示另一个取决于父母?@sillyfly
e.g. 
if( $(‘#target’).hasClass(‘animal’) ) {
$(document.body).addClass(‘dog’);
}