| <!DOCTYPE html> | |
| <link rel="help" href="https://drafts.csswg.org/css-ruby/#ruby-layout"> | |
| <link rel="stylesheet" href="/fonts/ahem.css"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <style> | |
| body { | |
| font: 20px/1 Ahem; | |
| } | |
| </style> | |
| <body> | |
| <div id=container></div> | |
| <script> | |
| const container = document.querySelector('#container'); | |
| test(() => { | |
| container.innerHTML = '<ruby style="position:relative">base<rt>annotation</ruby>'; | |
| const rtBefore = document.querySelector('rt').getBoundingClientRect(); | |
| document.querySelector('ruby').style.left = '100px'; | |
| const rtAfter = document.querySelector('rt').getBoundingClientRect(); | |
| assert_equals(rtBefore.x + 100, rtAfter.x); | |
| }, 'position:relative on a ruby should move the annotation together'); | |
| test(() => { | |
| container.innerHTML = `<span style="position:relative"> | |
| <ruby>base<rt>annotation</ruby></span>`; | |
| const rubyBefore = document.querySelector('ruby').getBoundingClientRect(); | |
| const rtBefore = document.querySelector('rt').getBoundingClientRect(); | |
| document.querySelector('span').style.left = '100px'; | |
| const rubyAfter = document.querySelector('ruby').getBoundingClientRect(); | |
| const rtAfter = document.querySelector('rt').getBoundingClientRect(); | |
| assert_equals(rubyBefore.x + 100, rubyAfter.x); | |
| assert_equals(rtBefore.x + 100, rtAfter.x); | |
| }, 'position:relative on a ruby parent should move the ruby and the annotation'); | |
| test(() => { | |
| container.innerHTML = `b<ruby style="position:relative">base | |
| <rt style="position:relative">annotation</ruby>`; | |
| const rtBefore = document.querySelector('rt').getBoundingClientRect(); | |
| document.querySelector('ruby').style.left = '100px'; | |
| document.querySelector('rt').style.left = '10px'; | |
| document.querySelector('rt').style.top = '-50px'; | |
| const rtAfter = document.querySelector('rt').getBoundingClientRect(); | |
| assert_equals(rtBefore.x + 110, rtAfter.x); | |
| assert_equals(rtBefore.y - 50, rtAfter.y); | |
| }, 'Accumulate position:relative offsets'); | |
| </script> | |
| </body> |