Chapter 10  Visual formatting model details  10.3.7 Absolutely positioned, nonreplaced elements
Go to the relevant page of the specification.
 absolutenonreplacedwidth001 (ahem)

Solving for 'right' on absolutely positioned nonreplaced elements
When direction is lefttoright and 'left', 'width' and 'right' are 'auto', the width becomes shrinktofit and then solve for 'right'.  absolutenonreplacedwidth002 (ahem)

Solving for 'left' on absolutely positioned nonreplaced elements
When direction is righttoleft and 'left', 'width' and 'right' are 'auto', the width becomes shrinktofit and then solve for 'left'.  absolutenonreplacedwidth003 (ahem)

Absolutely positioned nonreplaced elements with 'marginleft' and 'marginright' set to 'auto'
When 'left', 'width' and 'right' are not 'auto', set 'marginleft' and 'marginright' to equal values.  absolutenonreplacedwidth004 (ahem)

Absolutely positioned nonreplaced elements when both 'marginleft' and 'marginright' are set to 'auto' and direction is lefttoright
When direction is 'ltr' and 'left', 'width' and 'right' are not 'auto', solve for 'marginright' and 'marginleft' to equal values. If this would make 'marginleft' and 'marginright' negative, then set 'marginleft' to zero and solve for 'marginright'.  absolutenonreplacedwidth005 (ahem)

Absolutely positioned nonreplaced elements when both 'marginleft' and 'marginright' are set to 'auto' and direction is righttoleft
When direction is 'rtl' and 'left', 'width' and 'right' are not 'auto', solve for 'marginright' and 'marginleft' to equal values. If this would make 'marginleft' and 'marginright' negative, then set 'marginright' to zero and solve for 'marginleft'.  absolutenonreplacedwidth006 (ahem)

Absolutely positioned nonreplaced element when only 'marginright' is 'auto' and direction is lefttoright
When direction is lefttoright and 'left', 'width', 'marginleft' and 'right' are not 'auto', solve for 'marginright'.  absolutenonreplacedwidth007 (ahem)

Absolutely positioned nonreplaced element when only 'marginleft' is 'auto' and direction is righttoleft
When direction is righttoleft and 'left', 'width', 'marginright' and 'right' are not 'auto', solve for 'marginleft'.  absolutenonreplacedwidth008 (ahem)

Absolutely positioned nonreplaced elements with left, width, right and marginright not auto
If 'left', 'width', 'right' and 'marginright' are all not 'auto' and 'marginleft' is 'auto', then solve the equation for 'marginleft'.  absolutenonreplacedwidth009 (ahem)

Absolutely positioned nonreplaced elements with left, width, right and marginleft not auto
If 'left', 'width', 'right' and 'marginleft' are all not 'auto' and 'marginright' is 'auto', then solve the equation for 'marginright'.  absolutenonreplacedwidth010 (ahem)

Solved for 'left' when absolutely positioned nonreplaced elements has 'left' and 'width' as 'auto'
When 'left' and 'width' are 'auto' and 'right' is not 'auto', then the width is shrinktofit and then solve for 'left'.  absolutenonreplacedwidth011 (ahem)

Absolutely positioned nonreplaced elements when 'left' and 'right' are 'auto', 'width' is not 'auto' and 'direction' is lefttoright
When 'direction' is lefttoright and 'left' and 'right' are 'auto' and 'width' is not 'auto', solve for 'right'.  absolutenonreplacedwidth012 (ahem)

Absolutely positioned nonreplaced elements when 'left' and 'right' are 'auto', 'width' is not 'auto' and 'direction' is righttoleft
When 'direction' is righttoleft and 'left' and 'right' are 'auto' and 'width' is not 'auto', solve for 'left'.  absolutenonreplacedwidth013 (ahem)

Solved for 'right' when absolutely positioned nonreplaced elements has 'right' and 'width' as 'auto'
When 'right' and 'width' are 'auto' and 'left' is not 'auto', then the width is shrinktofit and then solve for 'right'.  absolutenonreplacedwidth014 (ahem)

Solved for 'left' when absolutely positioned nonreplaced elements has 'right' and 'width' not set to 'auto'
When 'left' is 'auto' and 'width' and 'right' are not 'auto' element solves for 'left'.  absolutenonreplacedwidth015

Solved for 'width' when absolutely positioned nonreplaced elements has 'left' and 'right' not set to 'auto'
When 'width' is 'auto' and 'left' and 'right' are not 'auto' element solves for 'width'.  absolutenonreplacedwidth016 (ahem)

Solved for 'right' when absolutely positioned nonreplaced elements has 'left' and 'width' not set to 'auto'
When 'right' is 'auto' and 'width' and 'left' are not 'auto' element solves for 'right'.  absolutenonreplacedwidth017 (ahem)

'shrinktofit' width of absolutely positioned, nonreplaced elements  direction (lefttoright), inlineblock and maxwidth
When direction is lefttoright and 'left' is set to static position and 'width' and 'right' are 'auto', then the used value of 'width' is given by 'shrinktofit' width calculation. If 'width' of an inlineblock, nonreplaced element in normal flow computes to 'auto', then the used value of 'width' is also given by 'shrinktofit' width calculation. If 'width' of an inlineblock, nonreplaced element in normal flow is given by 'shrinktofit' width calculation, then such calculated width can be furthermore constrained, reduced by a maxwidth declaration. If width of an absolutely positioned, nonreplaced element resorts to 'shrinktofit' width calculation but its own child uses a constrained length resulting from a maxwidth declaration, then such constrained length will define the preferred width in 'shrinktofit' width calculation.  absolutenonreplacedwidth018 (ahem)

'shrinktofit' width of absolutely positioned, nonreplaced elements  direction (lefttoright), inlineblock and maxwidth
When direction is lefttoright and 'left' is set to static position and 'width' and 'right' are 'auto', then the used value of 'width' is given by 'shrinktofit' width calculation. If 'width' of an inlineblock, nonreplaced element in normal flow computes to 'auto', then the used value of 'width' is also given by 'shrinktofit' width calculation. If 'width' of an inlineblock, nonreplaced element in normal flow is given by 'shrinktofit' width calculation, then such calculated width can be furthermore constrained, reduced by a maxwidth declaration. If width of an absolutely positioned, nonreplaced element resorts to shrinktofit width calculation but its own child uses a constrained length resulting from a maxwidth declaration, then such constrained length will define the preferred width in 'shrinktofit' width calculation.  absolutenonreplacedwidth019 (ahem)

'shrinktofit' width of absolutely positioned, nonreplaced elements  direction (lefttoright), float and maxwidth
When direction is lefttoright and 'left' is set to static position and 'width' and 'right' are 'auto', then the used value of 'width' is given by 'shrinktofit' width calculation. If 'width' of an floating, nonreplaced element in normal flow computes to 'auto', then the used value of 'width' is also given by 'shrinktofit' width calculation. If 'width' of a floating, nonreplaced element in normal flow is given by 'shrinktofit' width calculation, then such calculated width can be furthermore constrained, reduced by a maxwidth declaration. If width of an absolutely positioned, nonreplaced element resorts to 'shrinktofit' width calculation but its own child uses a constrained length resulting from a maxwidth declaration, then such constrained length will define the preferred width in 'shrinktofit' width calculation.  absolutenonreplacedwidth020 (ahem)

'shrinktofit' width of absolutely positioned, nonreplaced elements  direction (lefttoright), float and maxwidth
When direction is lefttoright and 'left' is set to static position and 'width' and 'right' are 'auto', then the used value of 'width' is given by 'shrinktofit' width calculation. If 'width' of an floating, nonreplaced element in normal flow computes to 'auto', then the used value of 'width' is also given by 'shrinktofit' width calculation. If 'width' of a floating, nonreplaced element in normal flow is given by 'shrinktofit' width calculation, then such calculated width can be furthermore constrained, reduced by a maxwidth declaration. If width of an absolutely positioned, nonreplaced element resorts to 'shrinktofit' width calculation but its own child uses a constrained length resulting from a maxwidth declaration, then such constrained length will define the preferred width in 'shrinktofit' width calculation.  absolutenonreplacedwidth021 (ahem)

'shrinktofit' width of absolutely positioned, nonreplaced elements  direction (righttoleft), inlineblock and maxwidth
When direction is righttoleft and 'right' is set to static position and 'width' and 'left' are 'auto', then the used value of 'width' is given by 'shrinktofit' width calculation. If 'width' of an inlineblock, nonreplaced element in normal flow computes to 'auto', then the used value of 'width' is also given by 'shrinktofit' width calculation. If 'width' of an inlineblock, nonreplaced element in normal flow is given by 'shrinktofit' width calculation, then such calculated width can be furthermore constrained, reduced by a maxwidth declaration. If width of an absolutely positioned, nonreplaced element resorts to 'shrinktofit' width calculation but its own child uses a constrained length resulting from a maxwidth declaration, then such constrained length will define the preferred width in 'shrinktofit' width calculation.  absolutenonreplacedwidth022 (ahem)

'shrinktofit' width of absolutely positioned, nonreplaced elements  direction (righttoleft), inlineblock and maxwidth
When direction is righttoleft and 'right' is set to static position and 'width' and 'left' are 'auto', then the used value of 'width' is given by 'shrinktofit' width calculation. If 'width' of an inlineblock, nonreplaced element in normal flow computes to 'auto', then the used value of 'width' is also given by 'shrinktofit' width calculation. If 'width' of an inlineblock, nonreplaced element in normal flow is given by 'shrinktofit' width calculation, then such calculated width can be furthermore constrained, reduced by a maxwidth declaration. If width of an absolutely positioned, nonreplaced element resorts to 'shrinktofit' width calculation but its own child uses a constrained length resulting from a maxwidth declaration, then such constrained length will define the preferred width in 'shrinktofit' width calculation.  absolutenonreplacedwidth023 (ahem)

'shrinktofit' width of absolutely positioned, nonreplaced elements  direction (righttoleft), float and maxwidth
When direction is righttoleft and 'right' is set to static position and 'width' and 'left' are 'auto', then the used value of 'width' is given by 'shrinktofit' width calculation. If 'width' of an floating, nonreplaced element in normal flow computes to 'auto', then the used value of 'width' is also given by 'shrinktofit' width calculation. If 'width' of a floating, nonreplaced element in normal flow is given by 'shrinktofit' width calculation, then such calculated width can be furthermore constrained, reduced by a maxwidth declaration. If width of an absolutely positioned, nonreplaced element resorts to 'shrinktofit' width calculation but its own child uses a constrained length resulting from a maxwidth declaration, then such constrained length will define the preferred width in 'shrinktofit' width calculation.  absolutenonreplacedwidth024 (ahem)

'shrinktofit' width of absolutely positioned, nonreplaced elements  direction (righttoleft), float and maxwidth
When direction is righttoleft and 'right' is set to static position and 'width' and 'left' are 'auto', then the used value of 'width' is given by 'shrinktofit' width calculation. If 'width' of an floating, nonreplaced element in normal flow computes to 'auto', then the used value of 'width' is also given by 'shrinktofit' width calculation. If 'width' of a floating, nonreplaced element in normal flow is given by 'shrinktofit' width calculation, then such calculated width can be furthermore constrained, reduced by a maxwidth declaration. If width of an absolutely positioned, nonreplaced element resorts to 'shrinktofit' width calculation but its own child uses a constrained length resulting from a maxwidth declaration, then such constrained length will define the preferred width in 'shrinktofit' width calculation.  abspos008

Shrink wrapping of absolute positioned blocks
 abspos010

Absolutely positioned tables must shrink wrap
 abspos023 (may)

left:auto for fixedpos blocks inside abspos blocks
 abspos024

Static position in rtl context
 abspos025 (image)

Positioning replaced elements with four offsets
 abspos026

Positioning replaced elements with four offsets
 absposnonreplacedwidthmargin000

CSS2.1:10.3.7 Comprehensive  Absolutely Positioned NonReplaced Horizontal Size+Position Calculations
The values of 'left', 'right', 'marginleft', 'marginright', and 'width' are calculated correctly for absolutely positioned nonreplaced elements according to CSS2.1 Section 10.3.7.  absposwidth001

Absolute Positioning: width:auto with table width:100%
 absposwidth002

Absolute Positioning: width:auto with block width:100%
 absposwidth003

Absolute Positioning: width:auto with block width:50%
 absposwidth004

Absolute Positioning: width:auto with block width:100%
 absposwidth005

Absolute Positioning: maxwidth
 bidipositionfixed001

position:fixed in rtl context
Default horizontal position of position:fixed block should be right in rtl context, and ancestor direction should still be applied inside the block taken out of normal flow