[ CSS position Property](#)
* * *
`position: static` is the default value of the CSS positioning property.
When an element's `position` value is set to `static`, the element will be arranged according to the document's **normal layout flow**, and **will not be affected** by positioning properties such as `top`, `right`, `bottom`, `left`, and `z-index`.
In other words, `static` means no special positioning β the element stays where it is.
**Word Definition**: `static` comes from the Latin word `staticus`, meaning "still, motionless", indicating that the element remains in its original position.
* * *
## Basic Syntax
`position: static` is the simplest and most basic value among CSS positioning properties.
/* Syntax */ position: static;/* Actual Example */.box { position: static;}
## Property Description
| Property Value | Description |
| --- | --- |
| `static` | Default value, the element is positioned according to normal document flow, unaffected by positioning properties |
### Impact of Related Positioning Properties on Static
| Property | Effect on Static Elements |
| --- | --- |
| `top` | **Invalid**, does not produce any positioning effect |
| `right` | **Invalid**, does not produce any positioning effect |
| `bottom` | **Invalid**, does not produce any positioning effect |
| `left` | **Invalid**, does not produce any positioning effect |
| `z-index` | **Invalid**, cannot manually set stacking order |
* * *
## Examples
Let's understand the behavior of `position: static` through examples.
### Example 1: Static is the Default Positioning Method
Even without explicitly setting `position: static`, elements are default to static positioning. Let's compare:
## Example
/* Container style: set background and padding for observation */
.container {
padding: 20px;
background-color: #f5f5f5;
border: 2px solid #ddd;
}
/* Three div blocks, default to static positioning */
.box {
padding: 15px;
margin: 10px 0;
background-color: #3498db;
color: white;
border-radius: 4px;
}
/* Second box attempts to use top property for positioning (ineffective for static) */
.box-2 {
position: static; /* Explicitly declared as static */
top: 100px; /* This property has no effect */
}
First Box (default static)
Second Box (explicit static + top:100px)
Third Box (default static)
**Effect Explanation:**
You'll notice that the second box doesn't move down due to `top: 100px`. This is because elements with `static` positioning completely ignore `top`, `right`, `bottom`, and `left` positioning properties.
### Example 2: Static Elements Cannot Set z-index
In normal document flow, the stacking order of elements is determined by their appearance order in HTML. We cannot change this order using `z-index`:
## Example
.container {
position: relative; /* Parent container set to relative as reference */
height: 150px;
background-color: #f0f0f0;
}
.box {
width: 100px;
height: 100px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
}
/* Three boxes appear in sequence */
.box-1 {
background-color: #e74c3c; /* Red */
position: static; /* Default positioning */
z-index: 999; /* Ineffective! */
}
.box-2 {
background-color: #2ecc71; /* Green */
position: static;
margin-top: -30px; /* Negative margin creates overlap */
margin-left: 60px;
}
.box-3 {
background-color: #9b59b6; /* Purple */
position: static;
margin-top: -30px;
margin-left: 120px;
}
Box 1 (z-index:999)
Box 2
Box 3
Even though Box 1 has z-index: 999, since it is static positioned, z-index does not work.
The final stacking order is still: later appearing elements on top (Box 3 on top, Box 1 at bottom).
* * *
## Use Cases
Although `position: static` seems to "do nothing", it is useful in the following scenarios:
### Scenario 1: Resetting Positioning
When you need to cancel previously applied positioning effects, you can revert `position` back to `static`:
/* Previously might have been relative, absolute, or fixed */.sidebar { position: fixed; top: 0;}/* Now need to remove fixed positioning and return to normal layout */.sidebar { position: static; /* Remove fixed positioning effect */}
### Scenario 2: As a Reference for Positioned Children
Although `static` itself does not position, it can serve as a "reference" for **positioning context**:
/* Parent element set to relative, even if it's static */.parent { position: relative; /* Creates new positioning context */}/* Child element absolute positions relative to this parent */.child { position: absolute; top: 10px; left: 10px;}
### Scenario 3: Debugging and Testing
During development, if you're unsure why an element is positioned, temporarily set it to `static` to troubleshoot:
.debug-element { position: static; /* Temporarily set to static to see original position */}
* * *
## Notes
> **Common Misconception:** Many beginners try to use `top: 0`, `left: 0`, etc., to "reset" an element to the top-left corner, but these properties have no effect on `static` elements. If you want such behavior, you should use `relative`, `absolute`, or `fixed` positioning.
### Comparison with Other Positioning Values
| Position Value | Leaves Document Flow | Affected by top/right/bottom/left | Supports z-index |
| --- | --- | --- | --- |
| `static` | No, maintains normal layout | No | No |
| `relative` | No, but can offset | Yes, offsets relative to original position | Yes |
| `absolute` | Yes, leaves document flow | Yes, relative to nearest positioned ancestor | Yes |
| `fixed` | Yes, leaves document flow | Yes, relative to viewport | Yes |
| `sticky` | Yes, becomes fixed after scroll threshold | Yes, sets threshold position | Yes |
* * *
## Summary
`position: static` is the foundation of CSS positioning. Understanding its behavior is crucial for mastering other positioning methods.
Remember these key points:
* `static` is the default value of the `position` property
* `static` elements follow normal document flow layout
* `top`, `right`, `bottom`, `left` properties are **ineffective** on `static` elements
* The `z-index` property is **ineffective** on `static` elements
* Commonly used to reset positioning or act as a reference for positioning context
* * CSS position Property](#)