2016-12-30 1 views
2

Ich versuche einfach, meinen bg-Text innerhalb des äußeren div zu zentrieren, deshalb habe ich ein Bild im Hintergrund mit dem h1-Tag in der Mitte für alle Geräte. Ich hatte ursprünglich das, wo der Rand oben ein festes Pixel war. Ich brauche es als Prozentsatz, damit es im Zentrum bleibt. Wenn ich jedoch den oberen Rand durch einen Prozentwert ersetzt habe, würde das h1-Element als minimiere meinen Bildschirm nach oben gleiten. Ich möchte, dass es Rand oben bleibt: 50% meines Hintergrundbildes zu jeder Zeit.Wie man ein Div innerhalb eines Divs vertikal mit einem Hintergrundbild zentriert

HTML

<div class= 'bg'> 
     <div class='bg-text'> 
     <h1>Text</h1> 
     </div> 
    </div> 

CSS

.

.bg { 
    display: table; 
    width: 100%; 
    height: 50%; 
    background-image: image-url('pic.jpg'); 
    background-attachment: scroll; 
    background-position: center center; 
    background-repeat: no-repeat; 
    background-size: cover; 
    -webkit-background-size: cover; 
    -moz-background-size: cover; 
    -o-background-size: cover; 
} 

.bg-text{ 
    color: #fff; 
    text-align: center; 
    text-shadow: 1px 1px 12px rgba(0,0,0,0.5); 
    margin-top: 150px; 
} 

.bg-text h1{ 
    font-size: 50px; 
    font-weight: 700; 
} 
+0

Mögliche Duplikat [Vertically ein div in einem div Zentrum] (http://stackoverflow.com/questions/9307566/vertically-center-align-a-div-within-anothe-div?s = 6 | 2.3735) und eine Menge anderer durch Suche nach SO gefunden. – Rob

+0

Mögliches Duplikat von [Horizontales Zentrieren eines Div in einem Div] (http: // stackoverflow.com/questions/114543/horizontal-Zentrum-ein-Div-in-einem-Div) –

Antwort

3

Flex-Eigenschaft für align das innere div in der Mitte

.bg { 
    display: flex; 
    align-items:center; 
    width: 100%; 
    height: 300px; 
    background-image: url('pic.jpg'); 
    background-attachment: scroll; 
    background-color: red; 
    background-position: center center; 
    background-repeat: no-repeat; 
    background-size: cover; 
    -webkit-background-size: cover; 
    -moz-background-size: cover; 
    -o-background-size: cover; 
} 

.bg-text{ 
    color: #fff; 
    text-align: center; 
    text-shadow: 1px 1px 12px rgba(0,0,0,0.5); 
} 

.bg-text h1{ 
    font-size: 50px; 
    font-weight: 700; 
} 

haben Sie einen Blick hier https://jsfiddle.net/pteus556/

in Browsern unterstützt.

enter image description here

+1

Code-only-Antworten sind nicht sehr nützlich. Erklären Sie, was Sie getan haben, warum es funktioniert, ob es Browsereinschränkungen hat, etc. –

+0

ok, ich werde meine Antwort bearbeiten –

+0

@cale_b Vielen Dank! Ich habe noch nie zuvor align-items verwendet. Ich sehe, dass es das Element vertikal ausrichtet. Wie würde ich es auch horizontal ausrichten? – brandoncodes

1

Ein zweiter Weg, um potenzielle tun ist transform: translateY(-50%); zu verwenden. Schauen Sie sich die Geige für eine kleine Demo an: https://jsfiddle.net/y58hu6tv/2/.

.bg { 
    width: 100%; 
    height: 500px; 
    background-color: rgba(0, 0, 0, .7); 
} 

.bg-text { 
    position: relative; 
    top: 50%; 
    margin: 0 auto; 
    transform: translateY(-50%); 
    text-align: center; 
    background-color: rgba(255, 255, 255, .7); 
} 

Wieder mit dieser Technik Browser-Unterstützung ist so-so.

enter image description here

Referenz: http://caniuse.com/#feat=transforms2d

0
  • erstellen ein <div> mit fixed dimensions und fügen Sie Ihre Hintergrund zu.
  • Passen Sie die Größe der <div> nach Ihren Bedürfnissen.
  • Setzen Sie Ihren Text innerhalb dass <div>

  • Position den Text innerhalb der <div> und geben ihm position:absolute - in Bezug auf ihre Mutter

  • Verwenden Sie die transform Eigenschaft sowie top/left/right/bottom

.mycontent { 
 
    width: 100vw; 
 
    max-width: 100%; 
 
} 
 
.mytext { 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, -50%); 
 
    position: absolute; 
 
    background: rgba(255, 255, 255, .6); 
 
    border: 1px solid #777; 
 
    padding: .2em; 
 
    color: #000; 
 
} 
 
.topcontent { 
 
    height: 100vh; 
 
    width: 2560px; 
 
    max-width: 100%; 
 
    background: url(http://supersocl.com/wp-content/uploads/2016/09/2560X1440-Wallpaper-Elegant-6G0.jpg); 
 
    background-size: cover; 
 
} 
 
.othercontent { 
 
    background: #010101; 
 
    padding: 30px; 
 
} 
 
body { 
 
    max-width: 100%; 
 
    padding: 0; 
 
    margin: 0 auto; 
 
    color: #999; 
 
} 
 
p { 
 
    margin: 0 auto; 
 
    padding: 20px; 
 
    text-align: justify; 
 
    text-justify: inter-word; 
 
}
<body> 
 
    <div class="mycontent"> 
 
    <div class="topcontent"> 
 
     <span class="mytext">your text goes here</span> 
 
    </div> 
 
    <div class="othercontent"> 
 
     <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia 
 
     voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.</p> 
 

 
     <p>Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem 
 
     ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?</p> 
 

 
     <p>Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p> 
 

 
     <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt 
 
     mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas 
 
     assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et vo</p> 
 
    </div> 
 
    </div> 
 
</body>

Verwandte Themen