Html 如果父级具有特定类,则应用/删除CSS类
在CSS 3中,是否可以基于某个元素的父类将某个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">
,根据具体情况,我可以应用样式类我的大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’);
}