font-size-computed.html (2522B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>CSS Fonts Module Level 4: getComputedStyle().fontSize</title> 6 <link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-size-prop"> 7 <meta name="assert" content="font-size computed value is an absolute length."> 8 <script src="/resources/testharness.js"></script> 9 <script src="/resources/testharnessreport.js"></script> 10 <script src="/css/support/computed-testcommon.js"></script> 11 <style> 12 #container { 13 font-size: 40px; 14 } 15 </style> 16 </head> 17 <body> 18 <div id="container"> 19 <div id="target"></div> 20 </div> 21 <font id="reference"></font> 22 <script> 23 function test_relative_size(first, second) { 24 test(() => { 25 const target = document.getElementById('target'); 26 target.style.fontSize = first; 27 const firstResult = Number(getComputedStyle(target).fontSize.replace('px', '')); 28 target.style.fontSize = second; 29 const secondResult = Number(getComputedStyle(target).fontSize.replace('px', '')); 30 assert_less_than_equal(firstResult, secondResult); 31 }, first + ' <= ' + second); 32 } 33 34 test_relative_size('xx-small', 'x-small'); 35 test_relative_size('x-small', 'small'); 36 test_relative_size('small', 'medium'); 37 test_relative_size('medium', 'large'); 38 test_relative_size('large', 'x-large'); 39 test_relative_size('x-large', 'xx-large'); 40 // Added in Fonts level 4: https://github.com/w3c/csswg-drafts/issues/3907 41 test_relative_size('xx-large', 'xxx-large'); 42 43 // <relative-size> 44 test_relative_size('inherit', 'larger'); 45 test_relative_size('smaller', 'inherit'); 46 47 // <length-percentage> 48 test_computed_value('font-size', '10px'); 49 test_computed_value('font-size', '20%', '8px'); 50 test_computed_value('font-size', 'calc(30% - 40px)', '0px'); 51 test_computed_value('font-size', 'calc(30% + 40px)', '52px'); 52 test_computed_value('font-size', 'calc(10px - 0.5em)', '0px'); 53 test_computed_value('font-size', 'calc(10px + 0.5em)', '30px'); 54 55 function test_font_size(attribute, keyword) { 56 test(() => { 57 const reference = document.getElementById('reference'); 58 reference.setAttribute('size', attribute); 59 const target = document.getElementById('target'); 60 target.style.fontSize = keyword; 61 assert_equals(getComputedStyle(target).fontSize, getComputedStyle(reference).fontSize); 62 }, '<font size="' + attribute + '"> is font-size: ' + keyword); 63 } 64 65 test_font_size('2', 'small'); 66 test_font_size('3', 'medium'); 67 test_font_size('4', 'large'); 68 test_font_size('5', 'x-large'); 69 test_font_size('6', 'xx-large'); 70 test_font_size('7', 'xxx-large'); 71 </script> 72 </body> 73 </html>