<!DOCTYPE html> | |
<html> | |
<body> | |
<style> | |
#container { | |
position: relative; | |
} | |
#host { | |
width: 90px; | |
height: 90px; | |
border: solid 5px red; | |
outline: none; | |
} | |
#host:not(:focus)::after { | |
position: absolute; | |
left: 5px; | |
bottom: 5px; | |
width: 90px; | |
height: 45px; | |
content: 'FAIL - not focused'; | |
} | |
#host:focus { | |
outline: solid 5px green; | |
outline-offset: -5px; | |
} | |
#host div { | |
background: red; | |
width: 90px; | |
height: 45px; | |
} | |
#overlay { | |
position: absolute; | |
top: 0; | |
left: 0; | |
background: green; | |
display: block; | |
width: 100px; | |
height: 50px; | |
} | |
</style> | |
<p>Test passes if you see a single 100px by 100px green box below.</p> | |
<div id="container"> | |
<div id="host" tabindex=0><div>FAIL - misplaced</div></div> | |
<div id="overlay"></div> | |
</div> | |
<script> | |
var host = document.getElementById('host'); | |
var shadow = host.attachShadow({mode: 'closed'}); | |
shadow.innerHTML = ` | |
<style> | |
div { background: green; width: 90px; height: 45px; } | |
</style> | |
<slot></slot> | |
<div></div> | |
`; | |
host.getBoundingClientRect(); | |
host.focus(); | |
</script> | |
</body> | |
</html> |