2014-10-30 35 views
1

我想换另一种元素的样式,当CONTENTEDITABLE格具有焦点,如下图所示:选择风格时CONTENTEDITABLE已经集中

[contenteditable="true"]:focus .testClass { 
 
    background-color: black; 
 
}
<div contenteditable="true">Hello World</div> 
 
<button class="testClass">Test</button>

不幸的是,上述不工作时,我曾尝试以下CSS也:

[contenteditable="true"]:focus + .testClass { 
[contenteditable="true"]:focus > .testClass { 
[contenteditable="true"]:focus, .testClass { 

精细的风格与自己的作品使用[contenteditable="true"]:focus在应用焦点时可编辑div,但这些都不能同时对另一个元素进行样式设置。这可能吗?

回答

1

你需要使用~。它是一般的兄弟选择器,它将两个选择器分开,并且只有在第二个元素位于第一个元素之前时才与第二个元素匹配,并共享一个共同的父元素。检查:

[contenteditable="true"]:focus ~ .testClass { 
    background: red; 
} 

[contenteditable="true"]:focus ~ .testClass { 
 
    background: red; 
 
}
<div contenteditable="true">Hello World</div> 
 
<button class="testClass">Test</button>

更多关于一般兄弟选择可以在here被读取。

+0

酷感谢,这是什么的'〜'中的方式CSS是什么意思? – JMK 2014-10-30 11:37:14

+0

@JMK:我已经用上面的解释更新了我的答案,请阅读。 – 2014-10-30 11:39:26

1

这是你想要的东西:

[contenteditable="true"]:focus { 
 
    background-color: black; 
 
}
<div contenteditable="true">Hello World</div> 
 
<button class="testClass">Test</button>

或者这(你提到你已经试过了,但它的工作):

[contenteditable="true"]:focus + .testClass { 
 
    background-color: black; 
 
}
<div contenteditable="true">Hello World</div> 
 
<button class="testClass">Test</button>

这里有一些阅读CSS选择器: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/Selectors

+0

我想样式的第一个元素'testClass'虽然当编辑div有重点 – JMK 2014-10-30 11:36:16

0

您可以通过使用jQuery改变.textClass的风格,当你div有重点,:

$("div[contenteditable=true]").focusin(function() { 

    $(".testClass").css({ 
     "background-color": "black", 
    }); 

}); 
1

[CONTENTEDITABLE = “真”]:关注〜.testClass将做的工作为Fahad Hasan

的〜符号表示右后(没有孩子)