Vertical Alignment in HTML: Understanding Its Limitations
Vertical alignment, a valuable tool for aligning elements vertically, is restricted to specific HTML elements: inline, inline-blocks, images, and tables. Contrary to text-align, vertical alignment must be applied to the child element, not the parent.
Despite these guidelines, some developers encounter difficulties when attempting to apply vertical-align:middle to inline-block elements. To understand why, we must delve into the concept of line boxes.
Line Boxes and Vertical Alignment
Vertical-align does not align elements within their containing block but within their line boxes. A line box is the rectangular area encompassing the inline-level content of an element.
For instance, each line of text within a multiline paragraph constitutes a line box. This is why vertical alignment works perfectly for inline content like
tags.
Example:
p { border: 3px solid; width: 350px; height: 200px; line-height: 28px; padding: 15px; } html, body { height: 100%; }
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur.</p>
In this example, each line of text is aligned vertically within its line box, thanks to the specified line-height.
Conclusion
Inline-block elements, positioned horizontally within their containing block, lack the vertical alignment capabilities of inline content. To achieve vertical alignment, one must either resort to alternative methods or consider converting inline-blocks to block-level elements.
The above is the detailed content of Why Doesn't Vertical-Align Work for Inline-Block Elements?. For more information, please follow other related articles on the PHP Chinese website!