abs-pos-non-replaced-vlr-089.xht (3388B)
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 'left', 'width' and 'right' are not 'auto' (overconstrained)</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-004-ref.xht" /> 13 14 <meta name="flags" content="ahem image" /> 15 <meta name="assert" content="When 'direction' is 'ltr' and 'left', 'width' and 'right' are not 'auto' (overconstrained), then ignore 'right' and then solve for 'right'." /> 16 17 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" /> 18 <style type="text/css"><![CDATA[ 19 div#containing-block 20 { 21 background: red url("support/bg-red-3col-2row-320x320.png"); 22 color: transparent; 23 direction: ltr; 24 font: 80px/1 Ahem; 25 height: 320px; 26 position: relative; 27 width: 320px; 28 } 29 30 div#containing-block > span 31 { 32 background-color: red; 33 color: green; 34 left: 2em; 35 margin-left: 0em; 36 margin-right: 0em; 37 position: absolute; 38 right: 2em; 39 width: 1em; 40 writing-mode: vertical-lr; 41 } 42 43 /* 44 " 45 If none of the three is 'auto': If both 'margin-left' and 'margin-right' are 'auto', solve the equation under the extra constraint that the two margins get equal values, unless this would make them negative, in which case when direction of the containing block is 'ltr' ('rtl'), set 'margin-left' ('margin-right') to zero and solve for 'margin-right' ('margin-left'). If one of 'margin-left' or 'margin-right' is 'auto', solve the equation for that value. If the values are over-constrained, ignore the value for 'left' (in case the 'direction' property of the containing block is 'rtl') or 'right' (in case 'direction' is 'ltr') and solve for that value. 46 " 47 48 'left' + 'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' + 'right' = width of containing block 49 50 So: 51 52 160px : left 53 + 54 0px : margin-left 55 + 56 0px : border-top-width 57 + 58 0px : padding-top 59 + 60 80px : width 61 + 62 0px : padding-right 63 + 64 0px : border-right-width 65 + 66 0px : margin-right 67 + 68 160px : right 69 ===================== 70 320px : width of containing block 71 72 gives us: 73 74 160px : left 75 + 76 0px : margin-left 77 + 78 0px : border-top-width 79 + 80 0px : padding-top 81 + 82 80px : width 83 + 84 0px : padding-right 85 + 86 0px : border-right-width 87 + 88 0px : margin-right 89 + 90 (solve) : right 91 ===================== 92 320px : width of containing block 93 94 And so computed right value must be 80px . 95 */ 96 97 ]]></style> 98 99 </head> 100 101 <body> 102 103 <p><img src="support/pass-cdts-abs-pos-non-replaced.png" width="246" height="36" alt="Image download support must be enabled" /></p> 104 105 <div id="containing-block">1 2 34<span>X</span></div> 106 107 </body> 108 </html>