1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
<!doctype html>
<meta charset="utf-8">
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<link rel='stylesheet' href='support/base.css' />
<link rel="author" title="Joy Yu" href="mailto:joysyu@mit.edu">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#computing-the-table-width">
<link rel="help" href="https://drafts.csswg.org/css-box-3/#visibility-prop">
<style>
x-table {
border: 5px solid black;
}
x-table span {
display: inline-block;
vertical-align: top;
background: lime;
margin: 3px;
height: 100px;
width: 100px;
}
</style>
<main>
<h1>Visibility hidden</h1>
<a href="https://drafts.csswg.org/css-tables-3/#computing-the-table-width">Spec</a>
<p>
Setting a table to visibility:hidden, but rows and cells to different visibility values.
</p>
<x-table id="one">
<x-tbody>
<x-tr id="visibleRow">
<x-td>
<span>row 1</span>
</x-td>
<x-td>
<span></span>
</x-td>
</x-tr>
<x-tr>
<x-td>
<span>row 2</span>
</x-td>
<x-td id="visibleCell">
<span></span>
</x-td>
</x-tr>
<x-tr>
<x-td>
<span>row 3</span>
</x-td>
<x-td>
<span id="visibleSpan"></span>
</x-td>
</x-tr>
</x-tbody>
</x-table>
Bottom table is identical to top, except entire table is hidden, the second row
is visible with a nested hidden cell, and the third row is visible with a nested
hidden span.
<x-table id="two" style="visibility:hidden;">
<x-tbody>
<x-tr id="invisibleRow">
<x-td>
<span>row 1</span>
</x-td>
<x-td>
<span></span>
</x-td>
</x-tr>
<x-tr style="visibility:visible;">
<x-td>
<span>row 2</span>
</x-td>
<x-td id="invisibleCell" style="visibility:hidden;">
<span></span>
</x-td>
</x-tr>
<x-tr style="visibility:visible;">
<x-td>
<span>row 3</span>
</x-td>
<x-td>
<span id="invisibleSpan" style="visibility:hidden;"></span>
</x-td>
</x-tr>
</x-tbody>
</x-table>
</main>
<script>
tests = [
[
document.getElementById('two').offsetHeight,
document.getElementById('one').offsetHeight,
"table visibility:hidden doesn't change table height"
],
[
document.getElementById('two').offsetWidth,
222,
"table visibility:hidden doesn't change table width"
],
[
document.getElementById('visibleRow').offsetWidth,
document.getElementById('invisibleRow').offsetWidth,
"row visibility:hidden doesn't change row width"
],
[
document.getElementById('visibleRow').offsetHeight,
document.getElementById('invisibleRow').offsetHeight,
"row visibility:hidden doesn't change row height"
],
[
document.getElementById('visibleCell').offsetWidth,
document.getElementById('invisibleCell').offsetWidth,
"cell visibility:hidden doesn't change cell width"
],
[
document.getElementById('visibleCell').offsetHeight,
document.getElementById('invisibleCell').offsetHeight,
"cell visibility:hidden doesn't change cell height"
],
[
document.getElementById('visibleSpan').offsetWidth,
document.getElementById('invisibleSpan').offsetWidth,
"span visibility:hidden doesn't change span width"
],
[
document.getElementById('visibleSpan').offsetHeight,
document.getElementById('invisibleSpan').offsetHeight,
"span visibility:hidden doesn't change span height"
]];
for (i = 0; i< tests.length; i++) {
test(function()
{
assert_equals.apply(this, tests[i]);
},
tests[i][2]);
};
</script>
</html>
|