The display property in CSS controls how elements are rendered and positioned on a webpage. It defines whether an element behaves as a block, inline, flex, grid, or hidden element. Mastering display helps in creating structured layouts and responsive designs.
What You Will Learn
- Understanding the display Property
- Block vs Inline Elements
- display: block
- display: inline
- display: inline-block
- display: none
- display: flex
- display: grid
- display: table and display: table-cell
- Using display for Layout Adjustments
- Best Practices and Common Mistakes
1. Understanding the display Property
The display property determines how an element appears in the document layout.
Syntax
selector { display: value; }
Common display Values
Value | Description |
---|---|
block | Takes full width, starts on a new line |
inline | Fits content width, does not start a new line |
inline-block | Behaves like inline but allows width/height control |
none | Hides the element from the page |
flex | Enables flexbox layout for better alignment |
grid | Enables grid-based layout |
table | Makes the element behave like a table |
table-cell | Makes the element behave like a table cell |
2. Block vs Inline Elements
Block elements:
- Take up the full width of their container.
- Always start on a new line.
Examples of block elements:
<div>This is a block element.</div> <p>Paragraphs are block elements.</p>
Inline elements:
- Take up only the necessary width.
- Do not start on a new line.
Examples of inline elements:
<span>This is an inline element.</span> <a href="#">Links are inline elements.</a>
3. display: block
Elements with display: block take up the entire width and push the next element to a new line.
Example: Block Elements
.block { display: block; background-color: lightblue; padding: 10px; }
<div class="block">Block Element 1</div> <div class="block">Block Element 2</div>
Common Block Elements
- <div>
- <p>
- <h1> to <h6>
- <section>
- <article>
4. display: inline
Elements with display: inline only take the space of their content and stay in line with other elements.
Example: Inline Elements
.inline { display: inline; background-color: yellow; padding: 5px; }
<span class="inline">Inline Element 1</span> <span class="inline">Inline Element 2</span>
Common Inline Elements
- <span>
- <a>
- <strong>
- <em>
5. display: inline-block
Elements with display: inline-block behave like inline elements but allow setting width and height.
Example: Inline-Block Elements
.inline-block { display: inline-block; width: 150px; height: 50px; background-color: green; text-align: center; line-height: 50px; }
<div class="inline-block">Box 1</div> <div class="inline-block">Box 2</div>
- Unlike inline, it respects width and height.
- Unlike block, it does not force new lines.
6. display: none
Hides an element completely, removing it from the layout.
Example: Hiding an Element
.hidden { display: none; }
<p class="hidden">This paragraph is hidden.</p>
- The element does not occupy space on the page.
- Use visibility: hidden; if you want it to be hidden but still take up space.
7. display: flex
The display: flex property creates a flexbox container, which helps align items efficiently.
Example: Flexbox Layout
.flex-container { display: flex; gap: 10px; } .flex-item { background-color: lightcoral; padding: 10px; width: 100px; text-align: center; }
<div class="flex-container"> <div class="flex-item">Item 1</div> <div class="flex-item">Item 2</div> <div class="flex-item">Item 3</div> </div>
- Items align in a row by default.
- Use justify-content and align-items for alignment.
8. display: grid
The display: grid property creates a grid-based layout, useful for designing complex structures.
Example: CSS Grid Layout
.grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } .grid-item { background-color: lightgreen; padding: 10px; text-align: center; }
<div class="grid-container"> <div class="grid-item">Item 1</div> <div class="grid-item">Item 2</div> <div class="grid-item">Item 3</div> </div>
- Use grid-template-columns to define columns.
- gap controls the spacing between items.
9. display: table and display: table-cell
CSS can make elements behave like HTML tables without using <table>.
Example: Using Table Display
.container { display: table; width: 100%; } .cell { display: table-cell; border: 1px solid black; padding: 10px; }
<div class="container"> <div class="cell">Cell 1</div> <div class="cell">Cell 2</div> </div>
- Useful for mimicking table layouts without an actual table.
10. Using display for Layout Adjustments
Creating a Horizontal Navigation Menu
.nav { display: flex; gap: 20px; background-color: #333; padding: 10px; } .nav a { color: white; text-decoration: none; }
<div class="nav"> <a href="#">Home</a> <a href="#">About</a> <a href="#">Contact</a> </div>
- Flexbox helps in aligning navigation items horizontally.
11. Best Practices and Common Mistakes
Best Practices
Use display: flex or grid for layouts instead of floats.
Use display: inline-block for buttons that need width and height.
Avoid using display: none excessively, as it removes elements from accessibility tools.
Use grid-template-columns for multi-column layouts instead of float.
Common Mistakes and Fixes
Mistake | Solution |
---|---|
Using inline on block elements | Use inline-block instead. |
Forgetting to add a width to inline-block elements | Set width for proper spacing. |
Using display: none; to hide content meant for SEO | Use visibility: hidden; instead. |
Conclusion
- Use block for full-width elements.
- Use inline for small inline elements.
- Use inline-block to control width and height.
- Use flex and grid for complex layouts.
- Use none to hide elements completely.