absolute-non-replaced-width-004

Absolutely positioned non-replaced elements when both 'margin-left' and 'margin-right' are set to 'auto' and direction is left-to-right

WeasyPrint

This browser

Flags
ahem
Assertion
When direction is 'ltr' and 'left', 'width' and 'right' are not 'auto', solve for 'margin-right' and 'margin-left' to equal values. If this would make 'margin-left' and 'margin-right' negative, then set 'margin-left' to zero and solve for 'margin-right'.

Source

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 2 <html>
 3     <head>
 4         <title>CSS Test: Absolutely positioned non-replaced elements when both 'margin-left' and 'margin-right' are set to 'auto' and direction is left-to-right</title>
 5         <link rel="author" title="Microsoft" href="http://www.microsoft.com/">
 6         <link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width">
 7         <meta name="flags" content="ahem">
 8         <meta name="assert" content="When direction is 'ltr' and 'left', 'width' and 'right' are not 'auto', solve for 'margin-right' and 'margin-left' to equal values. If this would make 'margin-left' and 'margin-right' negative, then set 'margin-left' to zero and solve for 'margin-right'.">
 9         <style type="text/css">
10             #div1
11             {
12                 border: solid black;
13                 direction: ltr;
14                 height: 2in;
15                 position: relative;
16                 width: 2in;
17             }
18             div div
19             {
20                 background: red;
21                 color: blue;
22                 font: 1in/1em Ahem;
23                 left: 1in;
24                 margin-left: auto;
25                 margin-right: auto;
26                 position: absolute;
27                 right: 1in;
28                 width: 1in;
29             }
30             /*
31                 left                    :   1in
32               + margin-left             :   solve (auto)
33               + border-left-width       :   0
34               + padding-left            :   0
35               + width                   :   1in
36               + padding-right           :   0
37               + border-right-width      :   0
38               + margin-right            :   solve (auto)
39               + right                   :   1in
40               ====================================
41               width of containing block :   2in
42 
43             So, margin-left and margin-right would be each -0.5in at this point.
44 
45             "...unless this would make them (the two margins) 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')."
46 
47             So, under such extra constraint, 'margin-left' must become 0 and 'margin-right' must become -1in.
48             */
49         </style>
50     </head>
51     <body>
52         <p>Test passes if the blue box fills the upper-right corner of the black box and there is no red visible on the page.</p>
53         <div id="div1">
54             <div>X</div>
55         </div>
56     </body>
57 </html>