<!
DOCTYPE html>
<
meta charset=
"utf-8">
<
title>Selectors: Change class to enable :hover</
title>
<
link rel=
"author" title=
"Rune Lillesveen" href=
"futhark@chromium.org">
<
link rel=
"help" href=
"https://drafts.csswg.org/selectors/#the-hover-pseudo">
<
script src=
"/resources/testharness.js"></
script>
<
script src=
"/resources/testharnessreport.js"></
script>
<
script src=
"/resources/testdriver.js"></
script>
<
script src=
"/resources/testdriver-actions.js"></
script>
<
script src=
"/resources/testdriver-vendor.js"></
script>
<
style>
.affected:hover { color: green }
#hoveredContents { display: contents }
</
style>
<
div id=
"hovered">Hover me - should become green</
div>
<
div id=
"hoveredContents">
<
div id=
"hovered2">Hover me - should become green</
div>
</
div>
<
script>
function mouseMoveToTarget(selector) {
let target = document.querySelector(selector);
return new test_driver.Actions().pointerMove(0, 0, {origin: target})
.send();
}
function testElementGreen(test, element) {
element.addEventListener(
"mouseover", test.step_func(event => {
assert_equals(getComputedStyle(element).color,
"rgb(0, 128, 0)");
test.done();
}));
}
// Setting the affected classes here makes the two elements go from never
// reacting to hover to being affected by hover without changing computed
//
style.
hovered.offsetTop;
hovered.className =
"affected";
hoveredContents.className =
"affected";
async_test(t => { testElementGreen(t, hovered); },
"Hover #hovered element should make it go green");
async_test(t => { testElementGreen(t, hovered2); },
"Hover #hoveredContents child should make it go green");
mouseMoveToTarget(
"#hovered").then(() => {
mouseMoveToTarget(
"#hovered2");
});
</
script>