Most of the blog posts/tutorials on the web that show you how to center text vertically using either line-height
(only works for a single line of text) or using display: table-cell
which allows the text to exceed a fixed size (table cells are allowed to get taller than their height if the text is long). Here’s a version that clips the overflow by surrounding the display: table-cell
element in a containing div.
<style> /* Wrapper exists to prevent long text exceeding the bounding box. */ .wrapper { /* height and width here act as a maximum for when the text is very long. */ height: 100px; width: 100px; overflow: hidden; background: #eee; /* just so we can see what's going on in the demo */ } /* Cell does the work of allowing us to vertical-align: middle. */ .cell { /* height and width here act as a minimum for when the text is not long. */ height: 100px; /* subtract any padding on wrapper from height and width here */ width: 100px; display: table-cell; text-align: center; vertical-align: middle; } </style> <div class="wrapper"> <div class="cell"> This is a test. </div> </div> <hr> <div class="wrapper"> <div class="cell"> This is a test with much longer text. This is a test with much longer text. This is a test with much longer text. This is a test with much longer text. This is a test with much longer text. </div> </div>