Automatic update from web-platform-tests Add minimal WPT for getBoundingBox with scroll containers Signed-off-by: Jo Steven Novaryo <jo.steven.novaryo@huawei.com> -- wpt-commits: 2cdcad311932583d96725c9473fd3a9eddcc3431 wpt-pr: 54044
130 lines
5.4 KiB
HTML
130 lines
5.4 KiB
HTML
<!DOCTYPE html>
|
|
<title>getBoundingClientRect for a element inside scroll container</title>
|
|
<link rel="author" title="Jo Steven Novaryo" href="mailto:steven.novaryo@gmail.com">
|
|
<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-getboundingclientrect">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<html>
|
|
<head>
|
|
<style>
|
|
body {
|
|
margin: 0;
|
|
}
|
|
.scroll_container {
|
|
width: 300px;
|
|
height: 300px;
|
|
overflow: scroll;
|
|
scrollbar-width: none;
|
|
}
|
|
.dummy_overflowing_box {
|
|
width: 5000px;
|
|
height: 5000px;
|
|
}
|
|
.target_box {
|
|
width: 100px;
|
|
height: 100px;
|
|
background-color: green;
|
|
}
|
|
.display_none {
|
|
display: none;
|
|
}
|
|
.display_content {
|
|
display: content;
|
|
}
|
|
.position_absolute {
|
|
position: absolute;
|
|
}
|
|
.position_fixed {
|
|
position: fixed;
|
|
}
|
|
.absolute_containing_block {
|
|
position: relative;
|
|
}
|
|
.fixed_containing_block {
|
|
will-change: transform;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="scroll_container fixed_containing_block">
|
|
<div class="scroll_container absolute_containing_block">
|
|
<div id="target_scroll_container" class="scroll_container">
|
|
<div id="target_fixed" class="target_box position_fixed"></div>
|
|
<div id="target_absolute" class="target_box position_absolute"></div>
|
|
<div id="target_none" class="target_box display_none"></div>
|
|
<div id="target_content" class="target_box display_content">
|
|
<div id="target_static" class="target_box"></div>
|
|
</div>
|
|
<div class="dummy_overflowing_box"></div>
|
|
</div>
|
|
<div class="dummy_overflowing_box"></div>
|
|
</div>
|
|
<div class="dummy_overflowing_box"></div>
|
|
</div>
|
|
<div id="log"></div>
|
|
<script>
|
|
setup(() => {
|
|
var offset_left = 1;
|
|
var offset_top = 2;
|
|
for (scroll_container of document.getElementsByClassName('scroll_container')) {
|
|
scroll_container.scrollTo(offset_left, offset_top)
|
|
offset_left *= 4;
|
|
offset_top *= 4;
|
|
}
|
|
});
|
|
test(function() {
|
|
var target = document.querySelector('#target_static');
|
|
let staticRect = target.getBoundingClientRect();
|
|
assert_equals(staticRect.left, -21, 'static positioned target left');
|
|
assert_equals(staticRect.top, -42, 'static positioned target top');
|
|
assert_equals(staticRect.width, 100, 'static positioned target width');
|
|
assert_equals(staticRect.height, 100, 'static positioned target height');
|
|
}, "getBoundingClientRect for element inside scroll container");
|
|
|
|
test(function() {
|
|
var target = document.querySelector('#target_absolute');
|
|
let absoluteRect = target.getBoundingClientRect();
|
|
assert_equals(absoluteRect.left, -5, 'absolute positioned target left');
|
|
assert_equals(absoluteRect.top, -10, 'absolute positioned target top');
|
|
assert_equals(absoluteRect.width, 100, 'absolute positioned target width');
|
|
assert_equals(absoluteRect.height, 100, 'absolute positioned target height');
|
|
}, "getBoundingClientRect for absolute element inside scroll container");
|
|
|
|
test(function() {
|
|
var target = document.querySelector('#target_fixed');
|
|
let fixedRect = target.getBoundingClientRect();
|
|
assert_equals(fixedRect.left, -1, 'fixed positioned target left');
|
|
assert_equals(fixedRect.top, -2, 'fixed positioned target top');
|
|
assert_equals(fixedRect.width, 100, 'fixed positioned target width');
|
|
assert_equals(fixedRect.height, 100, 'fixed positioned target height');
|
|
}, "getBoundingClientRect for fixed element inside scroll container");
|
|
|
|
test(function() {
|
|
var target = document.querySelector('#target_scroll_container');
|
|
let staticRect = target.getBoundingClientRect();
|
|
assert_equals(staticRect.left, -5, 'scroll container target left');
|
|
assert_equals(staticRect.top, -10, 'scroll container target top');
|
|
assert_equals(staticRect.width, 300, 'scroll container target width');
|
|
assert_equals(staticRect.height, 300, 'scroll container target height');
|
|
}, "getBoundingClientRect for a scrolled scroll container");
|
|
|
|
test(function() {
|
|
var target = document.querySelector('#target_none');
|
|
let staticRect = target.getBoundingClientRect();
|
|
assert_equals(staticRect.left, 0, 'scroll container target left');
|
|
assert_equals(staticRect.top, 0, 'scroll container target top');
|
|
assert_equals(staticRect.width, 0, 'scroll container target width');
|
|
assert_equals(staticRect.height, 0, 'scroll container target height');
|
|
}, "getBoundingClientRect for a scrolled display none box");
|
|
|
|
test(function() {
|
|
var target = document.querySelector('#target_content');
|
|
let staticRect = target.getBoundingClientRect();
|
|
assert_equals(staticRect.left, -21, 'static positioned target left');
|
|
assert_equals(staticRect.top, -42, 'static positioned target top');
|
|
assert_equals(staticRect.width, 100, 'static positioned target width');
|
|
assert_equals(staticRect.height, 100, 'static positioned target height');
|
|
}, "getBoundingClientRect for a scrolled display content box");
|
|
</script>
|
|
</body>
|
|
</html> |