• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Info Div mit Prozentangaben zentrieren

Gykonik

Mitglied
Hey,

da ich schon öfters (auch auf anderen Seiten) die Frage gesehen habe, wie man denn einen Div zentriert, der sagen wir mal 40% der Breite des Fensters und 20% der Höhe des Fensters einnehmen soll. Viele benutzen einfach so die Lösung via Javascript, indem sie dem Div Top und Left auf 50% setzen und dann margins abziehen. Die Möglichkeit geht natürlich, ist aber nicht optimal, da man ja auch Javascript ausschalten kann und eine Website optimalerweise auch ohne Javascript laufen sollte. Wäre doch super, wenn man das mit 100% CSS realisieren könnte, oder?
Das geht und ist auch nicht schwer, wenn man weiß wie es geht.
Hier habt ihr ein Beispiel:
HTML:
HTML:
<div id="zentriert">
   Hier der Text wird immer 100%tig in der Mitte einer Seite zentriert sein!
</div>

CSS:
Code:
#zentriert {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 40%;           /* Hier einsetzen, was auch immer ihre wollt */
  height: 50%;          /* Ebenfalls einsetzen, was auch immer ihre wollt, wenn die Höhe überhaupt nötig ist */
  padding: 20px;  
  background: rgba(0,128,128, .8);
  color: white;
  text-align: center;
  box-shadow: 0 0 30px rgba(0, 0, 0, 0.2);
}

Hier habt ihr eine Demo: http://codepen.io/chriscoyier/pen/BvdgL

Zur Information:
Die Idee stammt nicht von mir, sie ist von folgendem Forum (https://css-tricks.com/centering-percentage-widthheight-elements/) wollte sie aber auch hier öffentlich stellen da ich es total nütlich finde, denn wer kennt das Problem bitte nicht?
 
Werbung:
Das geht auch einfacher:

HTML:
<!DOCTYPE html>
<html>
   <head>
     <style type="text/css">
     .wrapper {
       background-color: green;
       text-align: center;
     }
     .wrapper .zentriert {
       background-color: red;
       display: inline-block;
       width: 60%;
     }
     </style>
   </head>
   <body>
     <div class="wrapper">
       <div class="zentriert">dieses Element wird zentriert auf 60%.</div>
     </div>
   </body>
</html>
 
Ja aber nicht immer kann man "display: inline-block;" verwenden und ich würde versuchen so oft es geht wrapper zu vermeiden. Zumal es bei dem Thema um eine komplette Zentrierung geht und das erfüllt dein Code ja eben nicht. Lediglich eine horizontale Zentrierung geht natürlich einfacher... ;)
 
Werbung:
Hallo

nicht immer kann man "display: inline-block;" verwenden

Richtig. Zudem ist dank der Zwangsabstände rechts und unten eine genaue Zentrierung nicht möglich.

so oft es geht wrapper zu vermeiden

Richtig. Der ist in über 99% aller Seiten schlicht überflüssig und widerspricht damit dem Vorgehen, Elemente, die nur dem Layout dienen, wegzulassen.

Zumal es bei dem Thema um eine komplette Zentrierung geht

Dann sollte der Text in dem Container auch vertikal zentriert sein.

das erfüllt dein Code ja eben nicht

Deiner auch nicht.

Zudem sollte Text nur in geeigneten Containern wie p, h1 bis h6, li, dt, dd, td u.s.w. stehen.

Gruss

MrMurphy
 
Deiner auch nicht.
Doch eben schon, da es um eine horizontale und vertikale Zentrierung des DIV's geht und nicht um die Schrift. Sogesehen stimmt mein Code, da er vertikal und horizontal zentriert wird, wie man in der Demo sehen kann.
Dann sollte der Text in dem Container auch vertikal zentriert sein.
Das kannst du so pauschal nicht sagen. Die einen wollen den Text im Div auch zentriert haben, die anderen nicht. Deswegen habe ich es mal offen gelassen, das verfehlt aber das eigentliche Thema des Beitrages :D
 
Na dann gib ich auch einen zu.
HTML:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Center</title>
<style>
html,body {
 height:100%;
 margin:0;
 padding:0;
}

.center {
 position:absolute;
 top:0;left:0;right:0;bottom:0;
 width:70%;
 height:40%;
 margin:auto;
 background:#ada;
}

.center p {
 padding:20px;
}

</style>
</head>

<body>
<div class="center">
<p>text</p>
</div>
</body>
</html>

Ob es mit % in ältere Browser funktioniert weiß ich nicht.
 
Werbung:
Zurück
Oben