abs-pos-non-replaced-vrl-042.xht (3453B)
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 5 <head> 6 7 <title>CSS Writing Modes Test: absolutely positioned non-replaced element - 'direction: ltr' and 'height' and 'bottom' are 'auto' and 'top' is not 'auto'</title> 8 9 <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> 10 <link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#vertical-layout" title="7.1 Principles of Layout in Vertical Writing Modes" /> 11 <link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width" title="10.3.7 Absolutely positioned, non-replaced elements" /> 12 <link rel="match" href="abs-pos-non-replaced-vrl-012-ref.xht" /> 13 14 <meta name="flags" content="ahem image" /> 15 <meta name="assert" content="When 'direction' is 'ltr' and 'height' and 'bottom' are 'auto' and 'top' is not 'auto', then the height is based on the content and then solve for 'bottom'." /> 16 17 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> 18 <style type="text/css"><![CDATA[ 19 html 20 { 21 writing-mode: vertical-rl; 22 } 23 24 div#containing-block 25 { 26 background: red url("support/bg-red-3col-2row-320x320.png"); 27 color: transparent; 28 direction: ltr; 29 font: 80px/1 Ahem; 30 height: 320px; 31 position: relative; 32 width: 320px; 33 } 34 35 div#containing-block > span 36 { 37 background-color: red; 38 bottom: auto; 39 color: green; 40 height: auto; 41 position: absolute; 42 top: 1em; 43 } 44 45 /* 46 " 47 Layout calculation rules (such as those in CSS2.1, Section 10.3) that apply to the horizontal dimension in horizontal writing modes instead apply to the vertical dimension in vertical writing modes. 48 " 49 7.1 Principles of Layout in Vertical Writing Modes 50 http://www.w3.org/TR/css-writing-modes-3/#vertical-layout 51 52 So here, *-top and *-bottom properties are input into the §10.3.7 algorithms where *-top properties refer to *-left properties in the layout rules and where *-bottom properties refer to *-right properties in the layout rules. 53 54 " 55 3. 'width' and 'right' are 'auto' and 'left' is not 'auto', then the width is shrink-to-fit . Then solve for 'right' 56 " 57 58 'top' + 'margin-top' + 'border-top-width' + 'padding-top' + 'height' + 'padding-bottom' + 'border-bottom-width' + 'margin-bottom' + 'bottom' = height of containing block 59 60 So: 61 62 80px : top 63 + 64 0px : margin-top 65 + 66 0px : border-top-width 67 + 68 0px : padding-top 69 + 70 (based on the content) : height: auto 71 + 72 0px : padding-bottom 73 + 74 0px : border-bottom-width 75 + 76 0px : margin-bottom 77 + 78 (solve) : bottom: auto 79 ===================== 80 320px : height of containing block 81 82 gives us: 83 84 80px : top 85 + 86 0px : margin-top 87 + 88 0px : border-top-width 89 + 90 0px : padding-top 91 + 92 80px : (based on the content) : height: auto 93 + 94 0px : padding-bottom 95 + 96 0px : border-bottom-width 97 + 98 0px : margin-bottom 99 + 100 (solve) : bottom: auto 101 ===================== 102 320px : height of containing block 103 104 And so computed bottom value must be 160px . 105 */ 106 107 ]]></style> 108 109 </head> 110 111 <body> 112 113 <p><img src="support/pass-cdts-abs-pos-non-replaced.png" width="246" height="36" alt="Image download support must be enabled" /></p> 114 115 <div id="containing-block">1 2 34<span>X</span></div> 116 117 </body> 118 </html>