CSS: CSS Positioning

Last updated: 2026-10-13

CSS positioning is a powerful layout tool that lets you precisely control element placement on the page.

Position Property Quick Reference

Value Behavior Reference Point Common Use
static Normal flow (default) — Default behavior
relative Offset from normal position Self's original position Fine-tuning, positioning context
absolute Removed from flow Nearest positioned ancestor Badges, overlays
fixed Fixed in viewport Viewport Sticky headers, back-to-top
sticky Hybrid Scroll container + viewport Sticky headers

Properties in this section: top bottom left right z-index opacity

1. position: relative

Offsets element from its normal position, without removing it from document flow:

▶ Example

▶ Try it Yourself

Common uses:


2. position: absolute

Removes element from flow, positioned relative to nearest positioned ancestor:

▶ Example

▶ Try it Yourself

Key point: If no positioned ancestor exists, absolute positions relative to the viewport.


3. position: fixed

Fixed in viewport, doesn't scroll with page:

▶ Example

▶ Try it Yourself

Common uses:


4. position: sticky

Hybrid of relative and fixed — scrolls normally then "sticks" at a threshold:

▶ Example

▶ Try it Yourself

Usage notes:


5. z-index (Stacking Order)

When elements overlap, z-index controls which appears on top:

▶ Example

▶ Try it Yourself

Note: z-index only works on positioned elements (non-static).

(1) Stacking Context

z-index is compared within the same "stacking context." Each positioned element creates a stacking context — children's z-index only compares within the parent's context.


Properties in this section: top bottom left right z-index opacity

❓ FAQ

Q What is position: relative used for?
A Most commonly used as a positioning reference for absolute children. Add position: relative to a parent (without offset), and position: absolute children will position relative to that parent. Without relative on the parent, absolute positions relative to the entire page.
Q fixed positioning doesn't work well on mobile?
A Fixed behaves inconsistently in mobile Safari, especially with keyboard popups or page scrolling. Use position: sticky as alternative for some scenarios, or use JavaScript to detect mobile and handle specially.
Q z-index is set high but still blocked?
A z-index only works within the same stacking context. If a parent has z-index, children's z-index only compares within that parent's context — it won't cross parent boundaries. Check if a parent has lower z-index, or if parent has properties like opacity that create new stacking contexts.

📖 Summary

📝 Exercises

  1. Create a "product card" with a "HOT" badge in the top-right corner using position: absolute.
  2. Create a fixed bottom navigation bar or copyright notice using position: fixed.
  3. Create a "sticky heading" — section titles that stick to the top when scrolling until the next title pushes it away.
  4. Implement absolute centering of a child element (using absolute + top/left + transform).
Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏