Javascript CSS父元素
我想根据div元素的父CSS属性动态应用CSS样式。javascript中有没有一种方法可以做到这一点/这可能吗?代码示例:Javascript CSS父元素,javascript,css,Javascript,Css,我想根据div元素的父CSS属性动态应用CSS样式。javascript中有没有一种方法可以做到这一点/这可能吗?代码示例: <div clas="parent"> <div class="child"> <div class="x"></div> </div> </div> 基于父类css属性,我想先切换x类的css属性,使用querySelector获取元素,然后使用clas
<div clas="parent">
<div class="child">
<div class="x"></div>
</div>
</div>
基于父类css属性,我想先切换x类的css属性,使用
querySelector
获取元素,然后使用className
更改类
在您的示例中,要将颜色更改为红色,可以执行以下操作:
document.querySelector('.parent .child div').className = "x"
要切换类,可以使用classList.toggle(“x”)
首先,使用
querySelector
获取元素,然后可以使用className
更改类
在您的示例中,要将颜色更改为红色,可以执行以下操作:
document.querySelector('.parent .child div').className = "x"
要切换类,可以使用classList.toggle(“x”)
演示:
希望这有帮助
演示:
希望这有帮助 您真的需要使用JavaScript根据父类切换某些内容吗。您只需使用纯CSS即可
.parent .child .x {
background-color: red; /* default */
}
.parent.someClass .child .x {
background-color: yellow; /* overrides the default with specificity */
}
您真的需要使用JavaScript根据父类切换某些内容吗。您只需使用纯CSS即可
.parent .child .x {
background-color: red; /* default */
}
.parent.someClass .child .x {
background-color: yellow; /* overrides the default with specificity */
}
如果您有权访问
jQuery
,则可以使用以下非常特定的选择器来实现:
$('.x')。每个(函数(){
if($(this).closest($('.parent')).hasClass('makeBlue')){
$(this.addClass('turnBlue');
}
if($(this).closest($('.parent')).hasClass('makeRed')){
$(this.addClass('turned');
}
});代码>
.x.turnBlue{
背景颜色:蓝色;
宽度:250px;
高度:250px;
}
.x.变红{
背景色:红色;
宽度:250px;
高度:250px;
}
如果您有权访问jQuery
,您可以使用非常特定的选择器来实现它,例如:
$('.x')。每个(函数(){
if($(this).closest($('.parent')).hasClass('makeBlue')){
$(this.addClass('turnBlue');
}
if($(this).closest($('.parent')).hasClass('makeRed')){
$(this.addClass('turned');
}
});代码>
.x.turnBlue{
背景颜色:蓝色;
宽度:250px;
高度:250px;
}
.x.变红{
背景色:红色;
宽度:250px;
高度:250px;
}
如果($('.parent').hasClass('someClass')){$('.parent').find('.x').addClass('anotherclass');}
那不是CSS属性。一定是读错了,抱歉。我建议将属性保存到css类并添加该类,而不是直接添加属性。我使用的是angularjs,css属性是在类名中定义的。示例:。父项{color:green;},子项{background:black;}为什么不能这样做是纯CSS?为什么需要涉及JavaScript?if($('.parent').hasClass('someClass')){$('.parent').find('.x').addClass('anotherclass');}
这不是CSS属性。一定是误读了,抱歉。我建议将属性保存到css类并添加该类,而不是直接添加属性。我使用的是angularjs,css属性是在类名中定义的。示例:。父项{color:green;},子项{background:black;}为什么不能这样做是纯CSS?为什么需要使用JavaScript?这回答了本文中的X
。这是正确的方法。@cale_b他在提问时特别使用了“动态”一词。@AlexanderDixon和CSS规则将在添加/删除父类时动态应用。。)这完全取决于OP真正需要什么。如果他们真的需要JS,那么他们可以使用JS解决方案。@FrontDev所以使用不同值的不同类。这个问题从一开始就相当广泛,sun也有一个事实,即颜色代码要么是十六进制的,要么是rbg的,这取决于浏览器。你真的不能添加类而不必处理这个问题吗?这将简化整个过程,并使应用程序比必须循环所有元素、读取样式和添加/删除属性更快地运行。这是正确的方法。@cale_b他在提问时特别使用了“动态”一词。@AlexanderDixon和CSS规则将在添加/删除父类时动态应用。。)这完全取决于OP真正需要什么。如果他们真的需要JS,那么他们可以使用JS解决方案。@FrontDev所以使用不同值的不同类。这个问题从一开始就相当广泛,sun也有一个事实,即颜色代码要么是十六进制的,要么是rbg的,这取决于浏览器。你真的不能添加类而不必处理这个问题吗?这将简化整个过程,使您的应用程序比必须循环所有元素、读取样式和添加/删除属性更快地运行。我试图使用getElementByClassName,console向我抛出了一个错误,不确定原因。我在控制台中看到了它,元素出现了。我试图使用getElementByClassName,控制台向我抛出了一个错误,不知道为什么。我在控制台中看到了它,元素就出现了。