Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /css/cssom-view/table-offset-props.html - WPT Dashboard Interop Dashboard
<!doctype html>
<meta charset=utf-8>
<title>offset* properties on tables</title>
<link rel="help" href="https://drafts.csswg.org/cssom-view/#extensions-to-the-htmlelement-interface">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<div id="test-target" style="position: absolute"></div>
<script>
test(function() {
// Each test consists of four elements: the markup to use, the expected
// value of offsetWidth on the table, the expected value of offsetHeight
// on the table, and the description string.
var tests = [
[ `<table style="width: 20px; height: 30px">`,
20, 30,
"Basic table" ],
[ `<table><caption style="width: 40px; height: 50px">`,
40, 50,
"Basic caption" ],
[ `<table style="width: 20px; height: 30px">
<caption style="width: 10px; height: 20px">`,
20, 50,
"Table and narrower caption" ],
[ `<table style="width: 20px; height: 30px">
<caption style="width: 40px; height: 20px">`,
40, 50,
"Table and wider caption" ],
[ `<table style="width: 20px; height: 30px; padding: 1px 2px 3px 4px">`,
20, 30,
"Table with padding" ],
[ `<table style="width: 20px; height: 30px; padding: 1px 2px 3px 4px;
box-sizing: content-box">`,
26, 34,
"Table with padding and content-box sizing" ],
[ `<table style="width: 20px; height: 30px;
border-width: 1px 2px 3px 4px; border-style: solid;
border-collapse: separate; box-sizing: content-box">`,
26, 34,
"Table with separated border" ],
[ `<table style="width: 20px; height: 30px;
border-width: 2px 4px 6px 8px; border-style: solid;
border-collapse: collapse; box-sizing: content-box">
<tr><td>`,
26, 34,
"Table with collapsed border" ],
[ `<table>
<caption style="width: 40px; height: 50px; padding: 1px 2px 3px 4px">`,
46, 54,
"Caption with padding" ],
[ `<table>
<caption style="width: 40px; height: 50px;
border-width: 1px 2px 3px 4px; border-style: solid">`,
46, 54,
"Caption with border" ],
[ `<table>
<caption style="width: 40px; height: 50px; margin: 1px 2px 3px 4px;">`,
46, 54,
"Caption with margin" ],
[ `<table style="caption-side: bottom">
<caption style="width: 40px; height: 50px;">`,
40, 50,
"Bottom caption" ],
];
function target() {
return document.getElementById("test-target");
}
function table() {
return target().querySelector("table");
}
for (var t of tests) {
test(function() {
target().innerHTML = t[0];
assert_equals(table().offsetWidth, t[1], t[3] + " offsetWidth");
assert_equals(table().offsetHeight, t[2], t[3] + " offsetHeight");
assert_equals(table().offsetLeft, 0, t[3] + " offsetLeft");
assert_equals(table().offsetTop, 0, t[3] + " offsetTop");
}, t[3]);
}
}, "Overall test to make sure there are no exceptions");
</script>