Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<link rel=author href="mailto:jarhar@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
.box {
width: 10px;
height: 10px;
}
</style>
<div>
<template shadowrootmode=open>
<style>
.box {
width: 10px;
height: 10px;
}
</style>
<div class=box></div>
<div style="position: relative">
<div class=box></div>
<slot></slot>
</div>
</template>
<div class=box></div>
<div id=target1 style="position: absolute" class=box></div>
</div>
<span>
<template shadowrootmode=open>
<style>
.box {
width: 10px;
height: 10px;
}
</style>
<span class=box></span>
<span style="position: relative">
<span class=box></span>
<slot></slot>
</span>
</template>
<span class=box></span>
<span id=target2 style="position: absolute" class=box></span>
</span>
<div>
<template shadowrootmode=open>
<style>
.box {
width: 10px;
height: 10px;
}
</style>
<div class=box></div>
<div style="position: relative">
<div class=box></div>
<div>
<template shadowrootmode=open>
<style>
.box {
width: 10px;
height: 10px;
}
</style>
<div class=box></div>
<div style="position: relative">
<div class=box></div>
<slot></slot>
</div>
</template>
<slot></slot>
</div>
</div>
</template>
<div class=box></div>
<div id=target3 style="position: absolute" class=box></div>
</div>
<script>
test(() => {
assert_equals(target1.offsetTop, 38);
}, 'Verifies that HTMLElement.offsetTop accounts for shadow boundaries.');
test(() => {
assert_equals(target2.offsetLeft, 8);
}, 'Verifies that HTMLElement.offsetLeft accounts for shadow boundaries.');
test(() => {
assert_equals(target3.offsetTop, 88);
}, 'Verifies that HTMLElement.offsetTop accounts for shadow boundaries when nested in multiple shadow roots.');
</script>