我知道CSS是“级联”,但在这种情况下我希望效果提升。我对JS或CSS解决方案持开放态度,但说实话,我更喜欢使用最少代码或开销的解决方案。
当我将鼠标悬停在(子)字母上时,我想要为整个窗口更改整个背景颜色,而不仅仅是子元素。每个字母都包含在填充整个窗口(或正文)的父#word div中。
如果在css中存在类似下面的内容会很好:
#h:hover #word{
background-color: rgba(0, 102, 0, .5);
}
但它不起作用。任何人都有任何想法??
HTML:
<div id="word">
<h1><a id="h" class= "letter" href=#>H</a></h1>
<h1><a class= "letter" href=#>E</a></h1>
<h1><a class= "letter" href=#>L</a></h1>
<h1><a class= "letter" href=#>L</a></h1>
<h1><a class= "letter" href=#>O</a></h1>
</div>
CSS:
body {
/*font-family: 'Sigmar One', cursive;*/
font-family: 'Chango', cursive;
font-size: 115px;
color: white;
text-shadow: 5px 5px 5px #000;
/* background-color: #0047b2 */
width: 100%;
height: 100%;
margin: 0px;
background: url(img/texture.png) repeat;
}
#word {
position:absolute;
height:100%;
width: 70%;
display: table;
padding: 0 15% 0 15%;
background: rgba(0, 71, 178, .5);
}
h1 {
display: table-cell;
vertical-align: middle;
text-align:center;
height: 1em;
}
a {
/*border: 1px solid black;*/
display: inline-block;
line-height: 100%;
overflow: hidden;
}
a:visited, a:active {
text-decoration: none;
color: white;
/*color: #E8E8E8;*/
}
a:link {
text-decoration: none;
color: white;
text-shadow: 3px -3px 0px black, -2px 2px 5px #0056b2;
}
a:hover {
text-shadow: 5px 5px 5px #000;
color: white;
}
#h:hover #word{
background-color: rgba(0, 102, 0, .5);
}
@media (max-width: 1330px){
#word {
width: 100%;
padding: 0px;
}
}
答案 0 :(得分:1)
解决方案可能是JS:
$(".letter").hover(function() {
$(this).closest("#word").toggleClass("hovered")
});
这是一个小提琴:http://jsfiddle.net/zT9AS/2
答案 1 :(得分:0)
真;
#word #h:hover {
background-color: rgba(0, 102, 0, .5);
}
FALSE;
#h:hover #word{
background-color: rgba(0, 102, 0, .5);
}
答案 2 :(得分:0)
没有jquery解决方案:
onload = function()
{
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; ++i)
{
if (links[i].className == 'letter')
{
links[i].onmouseover = function() {
document.getElementById('word').style.backgroundColor="#0000FF";
};
links[i].onmouseout = function() {
document.getElementById('word').style.backgroundColor="#FFFFFF";
};
}
}
}
答案 3 :(得分:0)
它可以在纯JS中完成,没有jQuery(我假设你不希望它,因为它不会是代码中那么轻),这是我能用的最好的:
var word = document.getElementsByClassName("letter");
for (i=0; i<word.length; i++) {
word[i].addEventListener("mouseenter", function( event ) {
parent = event.target.parentNode.parentNode;
//whenever the mouse hovers over a letter this will be evaluated once
parent.style.backgroundColor = "green";
});
word[i].addEventListener("mouseout", function( event ) {
parent = event.target.parentNode.parentNode;
//whenever the mouse hovers over a letter this will be evaluated once
parent.style.backgroundColor = "";
});
}
在这个小提琴中试试: http://jsfiddle.net/SZ9ku/17/
答案 4 :(得分:0)
在POJS中,添加以下内容
CSS
.wordBg {
background: rgba(0, 102, 0, .5) !important;
}
的Javascript
var changeWordBg = (function (word) {
return function (evt) {
if (evt.target.classList.contains("letter")) {
switch (evt.type) {
case "mouseover":
word.classList.add("wordBg");
break;
case "mouseout":
word.classList.remove("wordBg");
break;
default:
}
}
};
}(document.getElementById("word")));
document.body.addEventListener("mouseover", changeWordBg, false);
document.body.addEventListener("mouseout", changeWordBg, false);
在 jsfiddle
上