Ich kann sehen, dass dieser Code funktioniert, um ein Div vertikal innerhalb seines übergeordneten Elements auszurichten:
.element {
position: relative;
top: 50%;
transform: translateY(-50%);
}
Die Frage ist warum? Mein erster Gedanke war, dass das übergeordnete Element mehr als das Ansichtsfenster umfasste. Ich habe die Höhe 100vh
und Breite meines übergeordneten Ansichtsfensters gleich gemacht 100%
. Das hat nicht funktioniert. Ich brauchte noch die Übersetzung oder einen negativen Randversatz. Warum brauche ich einen negativen Offset, wenn das übergeordnete Element auf gesetzt ist margin: 0;
? Liegt es an einer berechneten Marge, die ich nicht berücksichtige?
Antworten:
oben: 0 (Standard)
Standardmäßig befindet sich Ihr Element oben auf der Seite und oben im Element bei 0:
--------Top of Page-------- {element} ------Middle of Page------ ------Bottom of Page------
oben: 50%
Wenn Sie es um 50% nach unten verschieben (50% der gesamten Seite), befindet sich der obere Rand des Elements an der 50% -Marke, dh das Element beginnt bei 50% und ist nicht zentriert.
--------Top of Page-------- ------Middle of Page------ {element} ------Bottom of Page------
oben: 50%; transformieren: translateY (-50%);
Wenn sich die Oberseite des Elements auf halber Strecke befindet, können wir das Element um die Hälfte seiner eigenen Höhe nach oben verschieben, um es mit der gesamten Seite zu zentrieren. Genau das
transform:translateY(-50%);
macht:--------Top of Page-------- {element}-Middle of Page--- ------Bottom of Page------
Aber warum können wir nicht einfach so etwas sagen
top: 25%
? Ich habe einen kurzen Ausschnitt gemacht, um Ihnen den Unterschied zu dieser Implementierung zu zeigen:body { margin: 0; } .row { display: flex; justify-content: space-between; } .container { display: inline-block; margin: 5px; width: 200px; height: 200px; background: tomato; } .inner { position: relative; margin: 0 auto; height: 50%; width: 50%; background: #FFC4BA; } .inner.small { width: 25%; height: 25%; } .inner.big { width: 75%; height: 75%; } .percent { top: 25% } .transform { top: 50%; transform: translateY(-50%); }
<b>First row </b>looks alright, but that's because the gap works well with the 25% <div class="row"> <div class="container"> <div class="inner percent"></div> </div> <div class="container"> <div class="inner transform"></div> </div> </div> <b>Second row </b>made the center square a bit smaller, and the 25% now is too high as we'd expect the bottom of the element to reach 75% <div class="row"> <div class="container"> <div class="small inner percent"></div> </div> <div class="container"> <div class="small inner transform"></div> </div> </div> <b>Third row </b>now I've made the center box big and it ends lower than 75% making 25% start too late <div class="row"> <div class="container"> <div class="big inner percent"></div> </div> <div class="container"> <div class="big inner transform"></div> </div> </div>
quelle
top
gilt 50% ab Seiten- / Containerhöhe,transform: translateY
-50% ab Eigenelementhöhe.Während andere die Antwort gegeben haben, dass der -50 das innere Element wieder um die Hälfte seiner eigenen Höhe nach oben bewegt, dachte ich, dass diese kleine Animation, die die Bewegung
top: 50%;
zuerst zeigt, gefolgt vontransform: translateY(-50%);
zweit, helfen könnte.@keyframes centerMe { 0% { top: 0%; transform: translateY(0%); } 50% { top: 50%; transform: translateY(0%); } 100% { top: 50%; transform: translateY(-50%); } } .outer { position: relative; border: solid 1px; height: 200px; width: 200px; } .inner { position: relative; background-color: red; height: 50px; width: 50px; margin: auto; animation: centerMe 5s; animation-fill-mode: forwards; } /* rules for example */ .hline,.vline{background:#000;position:absolute}.vline{height:100%;width:1px;left:calc(50% - .5px);top:0}.hline{width:100%;height:1px;top:calc(50% - .5px)}
<div class="outer"> <div class="hline"></div> <div class="vline"></div> <div class="inner"></div> </div>
quelle
… Bewegt das Element um eine Strecke nach unten, die der halben Höhe des übergeordneten Elements entspricht.
Da in der Standardposition die Oberseite des inneren Elements oben auf dem äußeren Element liegt, wird die Oberseite des inneren Elements in der Mitte des äußeren Elements platziert.
Dies bewegt das Innenelement wieder nach oben einen Abstand von der Hälfte der Höhe des inneren Elements.
Wenn Sie sie kombinieren, wird die Mitte des inneren Elements in die Mitte des übergeordneten Elements verschoben.
quelle
top: 25%
? Wenn nicht, wie unterscheidettop: 25%
sich diese Umgehung?height: 50%
(oder ein gleichwertiges Element ) hätte, aber nichts im Code in der Frage deutet darauf hin, dass die Größe des untergeordneten Elements bekannt ist.position: absolute
(unter der Annahme, dass das äußere Element selbst positioniert ist)?Anstatt diese Frage direkt zu beantworten, werde ich die allgemeinere Frage beantworten:
Wie funktioniert die Positionsverankerung in CSS?
Wenn Sie die Frage allgemein beantworten, werden Sie hoffentlich die Teile verstehen, die für Ihren speziellen Fall gelten.
Was meinst du mit "Positionsverankerung"?
Positionsverankerung ist, wenn ein DOM-Knoten so positioniert ist, dass er in einer bestimmten Dimension an seinem übergeordneten Knoten "verankert" ist. Wenn die obere linke Ecke des Knotens oben links von seinem übergeordneten Knoten verankert ist, bleiben die Knoten an ihrer oberen linken Ecke ausgerichtet, unabhängig von der Größe der beiden Elemente.
Wie sieht die Positionsverankerung aus?
Ich werde für alle weiteren Beispiele eine Vorlage verwenden, daher ist es wichtig, das Basisbeispiel zu verstehen.
.container { background-image: -webkit-linear-gradient(left, darkred 0, darkred 50%, goldenrod 50%, goldenrod 100%), -webkit-linear-gradient(left, darkgreen 0, darkgreen 50%, darkblue 50%, darkblue 100%); background-image: linear-gradient(to right, darkred 0, darkred 50%, goldenrod 50%, goldenrod 100%), linear-gradient(to right, darkgreen 0, darkgreen 50%, darkblue 50%, darkblue 100%); background-position: top, bottom; background-repeat: no-repeat; background-size: 100% 50.1%, 100% 50.1%; height: 70vh; margin: 15vh 15vw; position: relative; width: 70vw; } .box { background-image: -webkit-linear-gradient(left, red 0, red 50%, yellow 50%, yellow 100%), -webkit-linear-gradient(left, green 0, green 50%, blue 50%, blue 100%); background-image: linear-gradient(to right, red 0, red 50%, yellow 50%, yellow 100%), linear-gradient(to right, green 0, green 50%, blue 50%, blue 100%); background-position: top, bottom; background-repeat: no-repeat; background-size: 100% 50.1%, 100% 50.1%; height: 50vmin; position: absolute; width: 50vmin; }
<div class="container"> <div class="box"></div> </div>
Dieses Beispiel zeigt ein übergeordnetes
.container
Element mit dunkelroten, dunkelgelben, dunkelgrünen und dunkelblauen Quadranten, um die Ausrichtung einfach anzuzeigen. Im Inneren befindet sich ein.box
roter, gelber, grüner und blauer Quadrant, um den Kontrast für die Ausrichtung anzuzeigen.In allen weiteren Beispielen wird diese Kesselplatte minimiert, um den relevanten Code besser hervorzuheben.
Beachten Sie, dass standardmäßig oben links im untergeordneten Element oben links im übergeordneten Element verankert ist.
Elternverankerung
Übergeordnetes Verankerung kann durch Verwendung der eingestellt werden
top
,bottom
,left
undright
Eigenschaften auf dem Kind - Elemente.oben
Durch die Verwendung der
top
Eigenschaft wird die Oberkante des untergeordneten Elements an der Oberkante des übergeordneten Elements verankert.Angenommen,
bottom
nicht festgelegt,top: 0
wird nicht anders als die Standardeinstellung von angezeigttop: auto
.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { top: 0; }
<div class="container"> <div class="box"></div> </div>
Wenn Sie einen Prozentsatz verwenden, wird die Oberkante des Kindes am angegebenen Prozentsatz von der Oberseite des Elternteils ausgerichtet.
top: 50%
ist die Mitte des Elternteils:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { top: 50%; }
<div class="container"> <div class="box"></div> </div>
top: 100%
ist die Unterseite des Elternteils:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { top: 100%; }
<div class="container"> <div class="box"></div> </div>
Bodenverankerung
Durch die untere Verankerung wird die Unterkante des Kindes an der Unterkante des Elternteils verankert:
.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { bottom: 0; }
<div class="container"> <div class="box"></div> </div>
bottom: 50%
ist die Mitte des Elternteils, wobei das Kind gegenüber von ausgerichtet isttop: 50%
:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { bottom: 50%; }
<div class="container"> <div class="box"></div> </div>
bottom: 100%
ist die Spitze des Elternteils:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { bottom: 100%; }
<div class="container"> <div class="box"></div> </div>
Linke Verankerung
Die
left
Eigenschaft verankert den linken Rand des untergeordneten Elements am linken Rand des übergeordneten Elements.Angenommen,
right
nicht festgelegt,left: 0
wird nicht anders als die Standardeinstellung von angezeigtleft: auto
.left: 50%
ist die Mitte des Elternteils:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { left: 50%; }
<div class="container"> <div class="box"></div> </div>
left: 100%
lässt das Kind an der rechten Seite des Elternteils hängen.Richtige Verankerung
Die
right
Eigenschaft verankert den rechten Rand des untergeordneten Elements am rechten Rand des übergeordneten Elements:right: 50%
ist die Mitte des Elternteils, wobei das Kind gegenüber von ausgerichtet istleft: 50%
:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { right: 50%; }
<div class="container"> <div class="box"></div> </div>
right: 100%
Das Kind hängt an der linken Seite des Elternteils.Kinderverankerung
Die untergeordnete Verankerung kann unabhängig von der übergeordneten Verankerung angepasst werden, indem die
transform
Eigenschaft verwendet wird. Insbesondere dietranslate
,translateX
undtranslateY
werden Funktionen verwendet werden , um das Kind Feld zu stoßen eine andere Ausrichtung zu verwenden.Der Grund , dies funktioniert , ist , weil Prozentsatz in dem
translate
Wert des relativen sind Kind , während Prozentsatz in dentop
,bottom
,left
, undright
Eigenschaften der relativen sind Eltern .Vertikale Ausrichtung
Mit
transform: translateY()
kann die Ausrichtung des Kindes nach oben oder unten gestoßen werden.transform: translateY(0)
wird das Kind dort lassen, wo es ist, und ist im Allgemeinen nicht sehr nützlich.Wenn das Kind oben am Elternteil verankert ist,
transform: translateY(-50%)
richtet es das Kind in seiner Mitte aus:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { top: 0; transform: translateY(-50%); }
<div class="container"> <div class="box"></div> </div>
Wenn das Kind am unteren Rand des Elternteils verankert ist,
transform: translate(50%)
richtet es das Kind ebenfalls in der Mitte aus:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { bottom: 0; transform: translateY(50%); }
<div class="container"> <div class="box"></div> </div>
Dies bedeutet auch, dass dies
top: 100%
entsprichtbottom: 0; transform: translateY(100%)
:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { bottom: 0; transform: translateY(100%); }
<div class="container"> <div class="box"></div> </div>
Horizontale Ausrichtung
Mit
transform: translateX()
kann die Ausrichtung des Kindes nach links oder rechts gestoßen werden.transform: translateX(0)
Lässt das Kind dort, wo es standardmäßig ist.Wenn das Kind links vom Elternteil verankert ist,
transform: translateX(-50%)
richtet es das Kind in seiner Mitte aus:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { transform: translateX(-50%); }
<div class="container"> <div class="box"></div> </div>
Wenn das Kind rechts vom Elternteil verankert ist,
transform: translateX(50%)
richtet es das Kind ebenfalls in der Mitte aus:.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { right: 0; transform: translateX(50%); }
<div class="container"> <div class="box"></div> </div>
left: 100%
ist äquivalent zuright: 0; transform: translateX(100%)
.Mittelverankerung
Beim Zentrieren muss das Kind nur auf die Mitte des Elternteils ausgerichtet und dann der Ursprung des Kindes an seinen Platz gebracht werden.
.container{background-image:-webkit-linear-gradient(left,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),-webkit-linear-gradient(left,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-image:linear-gradient(to right,darkred 0,darkred 50%,goldenrod 50%,goldenrod 100%),linear-gradient(to right,darkgreen 0,darkgreen 50%,darkblue 50%,darkblue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:70vh;margin:15vh 15vw;position:relative;width:70vw;}.box{background-image:-webkit-linear-gradient(left,red 0,red 50%,yellow 50%,yellow 100%),-webkit-linear-gradient(left,green 0,green 50%,blue 50%,blue 100%);background-image:linear-gradient(to right,red 0,red 50%,yellow 50%,yellow 100%),linear-gradient(to right,green 0,green 50%,blue 50%,blue 100%);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 50.1%,100% 50.1%;height:50vmin;position:absolute;width:50vmin;} .box { left: 50%; top: 50%; transform: translate(-50%, -50%); }
<div class="container"> <div class="box"></div> </div>
Aufgrund der Symmetrie können Sie auch Folgendes verwenden:
bottom: 50%; right: 50%; transform: translate(50%, 50%);
quelle