Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 如何操作(class1+;class2)之类的类_Javascript_Html_Css - Fatal编程技术网

Javascript 如何操作(class1+;class2)之类的类

Javascript 如何操作(class1+;class2)之类的类,javascript,html,css,Javascript,Html,Css,我从来没有像.class1+.class2{}这样的类声明。我需要使用Js操作padding top属性 CSS .sticky + .content { padding-top: 150px; } var myElements = document.querySelectorAll(".content"+".sticky"); for (var i = 0; i < myElements.length; i++) { myElements[i].style.padd

我从来没有像.class1+.class2{}这样的类声明。我需要使用Js操作
padding top
属性

CSS

.sticky + .content {
  padding-top: 150px;  
}
var myElements = document.querySelectorAll(".content"+".sticky");
  for (var i = 0; i < myElements.length; i++) {
    myElements[i].style.paddingTop = -150 +"px";;
    myElements[i].style.sticky = -150 +"px";;
}
下面是我在Js中尝试的内容。我想让那
填充顶部-150px
。我需要能够动态地改变它。它不起作用。我的错在哪里

JS

.sticky + .content {
  padding-top: 150px;  
}
var myElements = document.querySelectorAll(".content"+".sticky");
  for (var i = 0; i < myElements.length; i++) {
    myElements[i].style.paddingTop = -150 +"px";;
    myElements[i].style.sticky = -150 +"px";;
}
var myElements=document.queryselectoral(“.content”+”.sticky”);
对于(var i=0;i
使用文字
+
而不是串联字符串:

.content + .sticky
这会选择同级-您可能只需要一个简单的多类选择器字符串,在这种情况下,您可以使用逗号

.content, .sticky

仅当元素同时具有以下两个类时,才能使用空格使规则生效:

.sticky.content{
填充顶部:150px;
}
对于JS,您也可以这样做:

var myElements = document.querySelectorAll(".content.sticky");

如果内容是sticky的直接子级,请使用:

.sticky > .content
.sticky + .content
或者,如果它只是一个孩子或孙子,使用

.sticky .content
如果内容是sticky的下一个同级,请使用:

.sticky > .content
.sticky + .content

CSS中的
a+b
选择器意味着HTML DOM中元素
a
后面的元素
b
。如果这真的是您想要的,那么您的JS中就会出现以下错误:

var myElements=document.queryselectoral(“.content”+”.sticky”);
”.content“+”.sticky“
的计算结果为
”.content.sticky“
,这意味着一个元素应该同时具有
.content
.sticky

尝试使用以下方法:

var myElements=document.queryselectoral(“.content+.sticky”);
此外,CSS中的加号选择器是不可交换的,因此
.content+.sticky
(内容元素紧跟着粘滞元素)和
.sticky+.content
(粘滞元素紧跟着内容元素)是不同的选择器。确保在CSS和JS中使用相同的选择器


但是,如果要匹配同时具有
.content
.sticky
两个类的单个元素,则错误在CSS中

在这种情况下,您需要将
.sticky+.content{…}
更改为
.sticky.content{…}


此外,该行无效:

myElements[i].style.sticky=-150+“px”;; CSS3中没有
sticky
属性

也许您想在元素中添加一个
sticky
类?可以这样做:

myElements[i].classList.add('sticky');

@Kobe你能给我举个代码的例子吗?如果你输入
“-150px”
而不是
-150+“px”
,和
.content.sticky“
而不是
”。content“+”。sticky”
你想用
myElements[i]做什么?style.sticky=-150+“px”
这里?内容和粘性类在不同的组件上,还是内容是粘性的子组件?