One of the most common tasks while designing web pages is centering elements both vertically and horizontally.
To center a block (div, p, h1, and so on) horizontally, the only thing you have to do is to apply a margin
auto to it. For example,
1 2 3 4 |
.horizontal-align { margin:0 auto; width:200px; } |
You have to take into account that a width is necessary.
To center lines of text you can use text-align
property. For example
1 2 |
p { text-align: center } h2 { text-align: center } |
If you want to center a block vertically, you can use the padding-top
and padding-bottom
properties with the same value. If you want to center a text line, you can use line-height
1 2 3 4 5 |
.center-text { height: 100px; line-height: 100px; white-space: nowrap; } |
Another way would be to use a container block with a table display and a content block with a table-cell display and vertical alignment.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
HTML <div id="container"> <div id="content">Content here</div> </div> CSS #container {display: table;} #content { display: table-cell; vertical-align: middle; } |
With CSS3 you can play with position, top and transform properties.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
HTML <div class="container2> <p>Vertical centered paragraph</p> </div> CSS div.container { height: 10em; position: relative } div.container p { margin: 0; position: absolute; top: 50%; transform: translate(0, -50%) } |
We can also use transform: translateY(-50%)
instead of transform: translate(0, -50%)
in the above example.
We can extend this method to center horizontally and vertically at the same time using margin-right
and left
properties.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
HTML <div class="container2> <p>Vertical centered paragraph</p> </div> CSS div.container { height: 10em; position: relative } div.container p { margin: 0; background: yellow; position: absolute; top: 50%; left: 50%; margin-right: -50%; transform: translate(-50%, -50%) } |
Another way to center horizontally and vertically at the same time might be in same cases:
1 2 3 4 5 6 7 8 9 10 11 12 |
#container { position: relative; } #content { width: 50%; height: 50%; overflow: auto; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; } |
Sorry, the comment form is closed at this time.