The left property sets the horizontal inset of a positioned element toward or away from the physical left edge. It has no effect when position is static.
For absolute or fixed, it is the distance from the containing block’s left edge. For relative, it moves the box to the right of its normal spot. The initial value is auto. It is not inherited. Prefer inset-inline-start when the offset should follow writing direction.
Baseline for lengths, percentages, and auto.
Not deprecated. Study those values first. Newer anchor() / anchor-size() forms for left have limited support — skip them until you need anchor positioning.
Same absolute pattern. Parent is relative; child is absolute.
Use a percentage.left: 50% is half the parent’s width from the left edge.
Not centered by itself. The box’s own width still sticks out past the midpoint unless you also translate it.
Scales with the parent. Wider containers move the inset farther in pixels.
Edge Cases & Pitfalls
If left seems ignored, one of these is usually why.
static
Needs a non-static position
left on a static element does nothing. Set position to relative, absolute, fixed, or sticky.
parent
Absolute needs a containing block
Without a positioned ancestor, absolute left is measured from a higher ancestor (often the initial containing block), which surprises beginners.
both
left and right together
Setting both can stretch the element. If width cannot satisfy both, left wins in left-to-right layouts.
relative
Relative left moves right
On a relatively positioned box, a positive left shifts the element toward the right of its normal position.
logical
Physical left does not flip in RTL
Use inset-inline-start when the start edge should follow writing direction.
Compatibility
Browser Support
left is a browser CSS property for positioned layout. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available
left
Lengths, percentages, and auto are widely supported. anchor() values used with left are newer and not part of these numbers.
100%Common values
Google ChromeAll versions
Full support
Mozilla FirefoxAll versions
Full support
Apple SafariAll versions
Full support
Microsoft EdgeAll versions
Full support
OperaAll versions
Full support
Samsung InternetAll versions
Full support
Internet ExplorerAll versions
Full support
leftWidely supported
Bottom line: Safe for auto, px, em, rem, and percentages on positioned elements. Treat anchor() as progressive. It is not a runtime API.
Remember
Key Takeaways
Role: horizontal inset from the physical left for positioned elements.
Initial value:auto. Not inherited.
Needs position: ignore left on static elements.
Logical option: use inset-inline-start for direction-aware layouts.
One line:left places a positioned box from the left — after position is already not static.
Frequently Asked Questions
It sets the horizontal inset of a positioned element relative to the left side. Absolute and fixed use the containing block; relative offsets from the normal position.
The initial value is auto. The browser then follows other rules such as right, width, and normal flow.
No. left has no effect on static elements. Use relative, absolute, fixed, or sticky.
Yes. Percentages refer to the width of the containing block.
left is always the physical left edge. inset-inline-start follows writing direction and can map to the right side in RTL.
It is Baseline and widely available for lengths, percentages, and auto. Newer anchor() values have limited support. It is a browser CSS property, not a Node.js feature.