Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSS full screen div with text in the middle [duplicate]

Tags:

html

css

webkit

I have a css class defined so I can make a div to use all the browser's viewport, the rule is the following:

.fullscreenDiv {     background-color: #e8e8e8;     width: 100%;     height: auto;     bottom: 0px;     top: 0px;     left: 0;     position: absolute; } 

Now I want the text inside the div to be in the exact center of the screen so, vertical align center and horizontal align middle, but I can't seem to find the proper way to do so.

It only needs to work on webkit based browsers.

I already tried to add a P element inside with display set to table-cell (a common way of centering text) without luck.

Any suggestions?

like image 213
Juan Alberto López Cavallotti Avatar asked May 22 '12 17:05

Juan Alberto López Cavallotti


People also ask

How do you center text in the middle of the screen in CSS?

If you want to center something horizontally in CSS you can do it just by, using the text-align: center; (when working with inline elements) or margin: 0 auto; (when working with block element).

How do I put text in the middle of a div?

To just center the text inside an element, use text-align: center; This text is centered.

How do I make text appear in the middle of the screen?

To center text in CSS, use the text-align property and define it with the value “center.” Let's start with an easy example. Say you have a text-only web page and want to center all the text. Then you could use the CSS universal selector (*) or the type selector body to target every element on the page.

How do you align a div in the middle of another div?

To move the inner div container to the centre of the parent div we have to use the margin property of style attribute. We can adjust the space around any HTML element by this margin property just by providing desired values to it. Now here comes the role of this property in adjusting the inner div.


2 Answers

The accepted answer works, but if:

  • you don't know the content's dimensions
  • the content is dynamic
  • you want to be future proof

use this:

.centered {   position: fixed; /* or absolute */   top: 50%;   left: 50%;   /* bring your own prefixes */   transform: translate(-50%, -50%); } 

More information about centering content in this excellent CSS-Tricks article.


Also, if you don't need to support old browsers: a flex-box makes this a piece of cake:
.center{     height: 100vh;     display: flex;     justify-content: center;     align-items: center; } 

Another great guide about flexboxs from CSS Tricks; http://css-tricks.com/snippets/css/a-guide-to-flexbox/

like image 115
agconti Avatar answered Sep 20 '22 23:09

agconti


The standard approach is to give the centered element fixed dimensions, and place it absolutely:

<div class='fullscreenDiv'>     <div class="center">Hello World</div> </div>​  .center {     position: absolute;     width: 100px;     height: 50px;     top: 50%;     left: 50%;     margin-left: -50px; /* margin is -0.5 * dimension */     margin-top: -25px;  }​ 
  • DEMO
like image 32
calebds Avatar answered Sep 20 '22 23:09

calebds