| <!DOCTYPE html> | |
| <link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> | |
| <link rel="help" href="https://developer.mozilla.org/en-US/docs/Web/API/Element/getClientRects"> | |
| <link rel="help" href="https://drafts.csswg.org/css-multicol/"> | |
| <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> | |
| <style> | |
| .multicol { | |
| visibility: hidden; | |
| position: absolute; | |
| left: 100px; | |
| top: 50px; | |
| columns: 3; | |
| column-gap: 10px; | |
| inline-size: 290px; | |
| font: 20px/1 Ahem; | |
| orphans: 1; | |
| widows: 1; | |
| } | |
| #horizontalTbLtr { | |
| writing-mode: horizontal-tb; | |
| } | |
| #verticalLrLtr { | |
| writing-mode: vertical-lr; | |
| } | |
| #verticalRlLtr { | |
| writing-mode: vertical-rl; | |
| } | |
| #sidewaysLrLtr { | |
| writing-mode: sideways-lr; | |
| } | |
| #sidewaysRlLtr { | |
| writing-mode: sideways-rl; | |
| } | |
| #horizontalTbRtl { | |
| writing-mode: horizontal-tb; | |
| direction: rtl; | |
| } | |
| #verticalLrRtl { | |
| writing-mode: vertical-lr; | |
| direction: rtl; | |
| } | |
| #verticalRlRtl { | |
| writing-mode: vertical-rl; | |
| direction: rtl; | |
| } | |
| #sidewaysLrRtl { | |
| writing-mode: sideways-lr; | |
| direction: rtl; | |
| } | |
| #sidewaysRlRtl { | |
| writing-mode: sideways-rl; | |
| direction: rtl; | |
| } | |
| </style> | |
| <div class="multicol" id="horizontalTbLtr"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="verticalLrLtr"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="verticalRlLtr"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="sidewaysLrLtr"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="sidewaysRlLtr"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="horizontalTbRtl" > | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="verticalLrRtl"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="verticalRlRtl"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="sidewaysLrRtl"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <div class="multicol" id="sidewaysRlRtl"> | |
| <br> | |
| <span>XXXX XXXX XXXX XXXX</span> | |
| </div> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script> | |
| const LEFT = 100; | |
| const TOP = 50; | |
| const LINE = 20; | |
| const COLUMN = 90; | |
| const GAP = 10; | |
| const TEXT_SIZE = 80; | |
| setup({ explicit_done: true }); | |
| document.fonts.ready.then(() => { | |
| test(()=> { | |
| var span = document.querySelector("#horizontalTbLtr span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, 100); | |
| assert_equals(rects[0].top, 70); | |
| assert_equals(rects[1].left, 200); | |
| assert_equals(rects[1].top, 50); | |
| assert_equals(rects[2].left, 200); | |
| assert_equals(rects[2].top, 70); | |
| assert_equals(rects[3].left, 300); | |
| assert_equals(rects[3].top, 50); | |
| }, "horizontal-tb ltr"); | |
| test(()=> { | |
| var span = document.querySelector("#verticalLrLtr span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, 120); | |
| assert_equals(rects[0].top, 50); | |
| assert_equals(rects[1].left, 100); | |
| assert_equals(rects[1].top, 150); | |
| assert_equals(rects[2].left, 120); | |
| assert_equals(rects[2].top, 150); | |
| assert_equals(rects[3].left, 100); | |
| assert_equals(rects[3].top, 250); | |
| }, "vertical-lr ltr"); | |
| test(()=> { | |
| var span = document.querySelector("#verticalRlLtr span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, 100); | |
| assert_equals(rects[0].top, 50); | |
| assert_equals(rects[1].left, 120); | |
| assert_equals(rects[1].top, 150); | |
| assert_equals(rects[2].left, 100); | |
| assert_equals(rects[2].top, 150); | |
| assert_equals(rects[3].left, 120); | |
| assert_equals(rects[3].top, 250); | |
| }, "vertical-rl ltr"); | |
| test(()=> { | |
| var span = document.querySelector("#sidewaysLrLtr span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, LEFT + LINE); | |
| assert_equals(rects[0].top, TOP + COLUMN * 3 + GAP * 2 - TEXT_SIZE); | |
| assert_equals(rects[1].left, LEFT); | |
| assert_equals(rects[1].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE); | |
| assert_equals(rects[2].left, LEFT + LINE); | |
| assert_equals(rects[2].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE); | |
| assert_equals(rects[3].left, LEFT); | |
| assert_equals(rects[3].top, TOP + COLUMN - TEXT_SIZE); | |
| }, "sideways-lr ltr"); | |
| test(()=> { | |
| var span = document.querySelector("#sidewaysRlLtr span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, LEFT); | |
| assert_equals(rects[0].top, TOP); | |
| assert_equals(rects[1].left, LEFT + LINE); | |
| assert_equals(rects[1].top, TOP + COLUMN + GAP); | |
| assert_equals(rects[2].left, LEFT); | |
| assert_equals(rects[2].top, TOP + COLUMN + GAP); | |
| assert_equals(rects[3].left, LEFT + LINE); | |
| assert_equals(rects[3].top, TOP + COLUMN * 2 + GAP * 2); | |
| }, "sideways-rl ltr"); | |
| test(()=> { | |
| var span = document.querySelector("#horizontalTbRtl span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, 310); | |
| assert_equals(rects[0].top, 70); | |
| assert_equals(rects[1].left, 210); | |
| assert_equals(rects[1].top, 50); | |
| assert_equals(rects[2].left, 210); | |
| assert_equals(rects[2].top, 70); | |
| assert_equals(rects[3].left, 110); | |
| assert_equals(rects[3].top, 50); | |
| }, "horizontal-tb rtl"); | |
| test(()=> { | |
| var span = document.querySelector("#verticalLrRtl span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, 120); | |
| assert_equals(rects[0].top, 260); | |
| assert_equals(rects[1].left, 100); | |
| assert_equals(rects[1].top, 160); | |
| assert_equals(rects[2].left, 120); | |
| assert_equals(rects[2].top, 160); | |
| assert_equals(rects[3].left, 100); | |
| assert_equals(rects[3].top, 60); | |
| }, "vertical-lr rtl"); | |
| test(()=> { | |
| var span = document.querySelector("#verticalRlRtl span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, 100); | |
| assert_equals(rects[0].top, 260); | |
| assert_equals(rects[1].left, 120); | |
| assert_equals(rects[1].top, 160); | |
| assert_equals(rects[2].left, 100); | |
| assert_equals(rects[2].top, 160); | |
| assert_equals(rects[3].left, 120); | |
| assert_equals(rects[3].top, 60); | |
| }, "vertical-rl rtl"); | |
| test(()=> { | |
| var span = document.querySelector("#sidewaysLrRtl span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, LEFT + LINE); | |
| assert_equals(rects[0].top, TOP); | |
| assert_equals(rects[1].left, LEFT); | |
| assert_equals(rects[1].top, TOP + COLUMN + GAP); | |
| assert_equals(rects[2].left, LEFT + LINE); | |
| assert_equals(rects[2].top, TOP + COLUMN + GAP); | |
| assert_equals(rects[3].left, LEFT); | |
| assert_equals(rects[3].top, TOP + COLUMN + GAP + COLUMN + GAP); | |
| }, "sideways-lr rtl"); | |
| test(()=> { | |
| var span = document.querySelector("#sidewaysRlRtl span"); | |
| var rects = span.getClientRects(); | |
| assert_equals(rects.length, 4); | |
| assert_equals(rects[0].left, LEFT); | |
| assert_equals(rects[0].top, TOP + COLUMN * 3 + GAP * 2 - TEXT_SIZE); | |
| assert_equals(rects[1].left, LEFT + LINE); | |
| assert_equals(rects[1].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE); | |
| assert_equals(rects[2].left, LEFT); | |
| assert_equals(rects[2].top, TOP + COLUMN * 2 + GAP - TEXT_SIZE); | |
| assert_equals(rects[3].left, LEFT + LINE); | |
| assert_equals(rects[3].top, TOP + COLUMN - TEXT_SIZE); | |
| }, "sideways-rl rtl"); | |
| done(); | |
| }); | |
| </script> |