Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CSS父元素_Javascript_Css - Fatal编程技术网

Javascript CSS父元素

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元素的父CSS属性动态应用CSS样式。javascript中有没有一种方法可以做到这一点/这可能吗?代码示例:

<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,控制台向我抛出了一个错误,不知道为什么。我在控制台中看到了它,元素就出现了。