getclientrects-001.html (8030B)
1 <!DOCTYPE html> 2 <link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> 3 <link rel="help" href="https://developer.mozilla.org/en-US/docs/Web/API/Element/getClientRects"> 4 <link rel="help" href="https://drafts.csswg.org/css-multicol/"> 5 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> 6 <style> 7 .multicol { 8 visibility: hidden; 9 position: absolute; 10 left: 100px; 11 top: 50px; 12 columns: 3; 13 column-gap: 10px; 14 inline-size: 290px; 15 font: 20px/1 Ahem; 16 orphans: 1; 17 widows: 1; 18 } 19 #horizontalTbLtr { 20 writing-mode: horizontal-tb; 21 } 22 #verticalLrLtr { 23 writing-mode: vertical-lr; 24 } 25 #verticalRlLtr { 26 writing-mode: vertical-rl; 27 } 28 #sidewaysLrLtr { 29 writing-mode: sideways-lr; 30 } 31 #sidewaysRlLtr { 32 writing-mode: sideways-rl; 33 } 34 #horizontalTbRtl { 35 writing-mode: horizontal-tb; 36 direction: rtl; 37 } 38 #verticalLrRtl { 39 writing-mode: vertical-lr; 40 direction: rtl; 41 } 42 #verticalRlRtl { 43 writing-mode: vertical-rl; 44 direction: rtl; 45 } 46 #sidewaysLrRtl { 47 writing-mode: sideways-lr; 48 direction: rtl; 49 } 50 #sidewaysRlRtl { 51 writing-mode: sideways-rl; 52 direction: rtl; 53 } 54 </style> 55 <div class="multicol" id="horizontalTbLtr"> 56 <br> 57 <span>XXXX XXXX XXXX XXXX</span> 58 </div> 59 <div class="multicol" id="verticalLrLtr"> 60 <br> 61 <span>XXXX XXXX XXXX XXXX</span> 62 </div> 63 <div class="multicol" id="verticalRlLtr"> 64 <br> 65 <span>XXXX XXXX XXXX XXXX</span> 66 </div> 67 <div class="multicol" id="sidewaysLrLtr"> 68 <br> 69 <span>XXXX XXXX XXXX XXXX</span> 70 </div> 71 <div class="multicol" id="sidewaysRlLtr"> 72 <br> 73 <span>XXXX XXXX XXXX XXXX</span> 74 </div> 75 <div class="multicol" id="horizontalTbRtl" > 76 <br> 77 <span>XXXX XXXX XXXX XXXX</span> 78 </div> 79 <div class="multicol" id="verticalLrRtl"> 80 <br> 81 <span>XXXX XXXX XXXX XXXX</span> 82 </div> 83 <div class="multicol" id="verticalRlRtl"> 84 <br> 85 <span>XXXX XXXX XXXX XXXX</span> 86 </div> 87 <div class="multicol" id="sidewaysLrRtl"> 88 <br> 89 <span>XXXX XXXX XXXX XXXX</span> 90 </div> 91 <div class="multicol" id="sidewaysRlRtl"> 92 <br> 93 <span>XXXX XXXX XXXX XXXX</span> 94 </div> 95 <script src="/resources/testharness.js"></script> 96 <script src="/resources/testharnessreport.js"></script> 97 <script> 98 const LEFT = 100; 99 const TOP = 50; 100 const LINE = 20; 101 const COLUMN = 90; 102 const GAP = 10; 103 const TEXT_SIZE = 80; 104 105 setup({ explicit_done: true }); 106 107 document.fonts.ready.then(() => { 108 test(()=> { 109 var span = document.querySelector("#horizontalTbLtr span"); 110 var rects = span.getClientRects(); 111 assert_equals(rects.length, 4); 112 assert_equals(rects[0].left, 100); 113 assert_equals(rects[0].top, 70); 114 assert_equals(rects[1].left, 200); 115 assert_equals(rects[1].top, 50); 116 assert_equals(rects[2].left, 200); 117 assert_equals(rects[2].top, 70); 118 assert_equals(rects[3].left, 300); 119 assert_equals(rects[3].top, 50); 120 }, "horizontal-tb ltr"); 121 122 test(()=> { 123 var span = document.querySelector("#verticalLrLtr span"); 124 var rects = span.getClientRects(); 125 assert_equals(rects.length, 4); 126 assert_equals(rects[0].left, 120); 127 assert_equals(rects[0].top, 50); 128 assert_equals(rects[1].left, 100); 129 assert_equals(rects[1].top, 150); 130 assert_equals(rects[2].left, 120); 131 assert_equals(rects[2].top, 150); 132 assert_equals(rects[3].left, 100); 133 assert_equals(rects[3].top, 250); 134 }, "vertical-lr ltr"); 135 136 test(()=> { 137 var span = document.querySelector("#verticalRlLtr span"); 138 var rects = span.getClientRects(); 139 assert_equals(rects.length, 4); 140 assert_equals(rects[0].left, 100); 141 assert_equals(rects[0].top, 50); 142 assert_equals(rects[1].left, 120); 143 assert_equals(rects[1].top, 150); 144 assert_equals(rects[2].left, 100); 145 assert_equals(rects[2].top, 150); 146 assert_equals(rects[3].left, 120); 147 assert_equals(rects[3].top, 250); 148 }, "vertical-rl ltr"); 149 150 test(()=> { 151 var span = document.querySelector("#sidewaysLrLtr span"); 152 var rects = span.getClientRects(); 153 assert_equals(rects.length, 4); 154 assert_equals(rects[0].left, LEFT + LINE); 155 assert_equals(rects[0].top, TOP + COLUMN * 3 + GAP * 2 - TEXT_SIZE); 156 assert_equals(rects[1].left, LEFT); 157 assert_equals(rects[1].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE); 158 assert_equals(rects[2].left, LEFT + LINE); 159 assert_equals(rects[2].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE); 160 assert_equals(rects[3].left, LEFT); 161 assert_equals(rects[3].top, TOP + COLUMN - TEXT_SIZE); 162 }, "sideways-lr ltr"); 163 164 test(()=> { 165 var span = document.querySelector("#sidewaysRlLtr span"); 166 var rects = span.getClientRects(); 167 assert_equals(rects.length, 4); 168 assert_equals(rects[0].left, LEFT); 169 assert_equals(rects[0].top, TOP); 170 assert_equals(rects[1].left, LEFT + LINE); 171 assert_equals(rects[1].top, TOP + COLUMN + GAP); 172 assert_equals(rects[2].left, LEFT); 173 assert_equals(rects[2].top, TOP + COLUMN + GAP); 174 assert_equals(rects[3].left, LEFT + LINE); 175 assert_equals(rects[3].top, TOP + COLUMN * 2 + GAP * 2); 176 }, "sideways-rl ltr"); 177 178 test(()=> { 179 var span = document.querySelector("#horizontalTbRtl span"); 180 var rects = span.getClientRects(); 181 assert_equals(rects.length, 4); 182 assert_equals(rects[0].left, 310); 183 assert_equals(rects[0].top, 70); 184 assert_equals(rects[1].left, 210); 185 assert_equals(rects[1].top, 50); 186 assert_equals(rects[2].left, 210); 187 assert_equals(rects[2].top, 70); 188 assert_equals(rects[3].left, 110); 189 assert_equals(rects[3].top, 50); 190 }, "horizontal-tb rtl"); 191 192 test(()=> { 193 var span = document.querySelector("#verticalLrRtl span"); 194 var rects = span.getClientRects(); 195 assert_equals(rects.length, 4); 196 assert_equals(rects[0].left, 120); 197 assert_equals(rects[0].top, 260); 198 assert_equals(rects[1].left, 100); 199 assert_equals(rects[1].top, 160); 200 assert_equals(rects[2].left, 120); 201 assert_equals(rects[2].top, 160); 202 assert_equals(rects[3].left, 100); 203 assert_equals(rects[3].top, 60); 204 }, "vertical-lr rtl"); 205 206 test(()=> { 207 var span = document.querySelector("#verticalRlRtl span"); 208 var rects = span.getClientRects(); 209 assert_equals(rects.length, 4); 210 assert_equals(rects[0].left, 100); 211 assert_equals(rects[0].top, 260); 212 assert_equals(rects[1].left, 120); 213 assert_equals(rects[1].top, 160); 214 assert_equals(rects[2].left, 100); 215 assert_equals(rects[2].top, 160); 216 assert_equals(rects[3].left, 120); 217 assert_equals(rects[3].top, 60); 218 }, "vertical-rl rtl"); 219 220 test(()=> { 221 var span = document.querySelector("#sidewaysLrRtl span"); 222 var rects = span.getClientRects(); 223 assert_equals(rects.length, 4); 224 assert_equals(rects[0].left, LEFT + LINE); 225 assert_equals(rects[0].top, TOP); 226 assert_equals(rects[1].left, LEFT); 227 assert_equals(rects[1].top, TOP + COLUMN + GAP); 228 assert_equals(rects[2].left, LEFT + LINE); 229 assert_equals(rects[2].top, TOP + COLUMN + GAP); 230 assert_equals(rects[3].left, LEFT); 231 assert_equals(rects[3].top, TOP + COLUMN + GAP + COLUMN + GAP); 232 }, "sideways-lr rtl"); 233 234 test(()=> { 235 var span = document.querySelector("#sidewaysRlRtl span"); 236 var rects = span.getClientRects(); 237 assert_equals(rects.length, 4); 238 assert_equals(rects[0].left, LEFT); 239 assert_equals(rects[0].top, TOP + COLUMN * 3 + GAP * 2 - TEXT_SIZE); 240 assert_equals(rects[1].left, LEFT + LINE); 241 assert_equals(rects[1].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE); 242 assert_equals(rects[2].left, LEFT); 243 assert_equals(rects[2].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE); 244 assert_equals(rects[3].left, LEFT + LINE); 245 assert_equals(rects[3].top, TOP + COLUMN - TEXT_SIZE); 246 }, "sideways-rl rtl"); 247 248 done(); 249 }); 250 </script>