Ich habe ein div, das mein "popup" ist, das ich animiere, um in der direkten Mitte seines Elterndivs zu erscheinen. Also verwende ich absolute Positionierung, negative Ränder und links + oben, um es so zu positionieren, dass ich es einfach mit -webkit-transform: translateY(-100%)
auf Hover animieren kann. Funktioniert hervorragend bei Safari und Mobile Safari.Fehler, wenn absolute Position und Prozentwerte verwendet werden, um Kinddiv vertikal zu zentrieren
Wenn Sie Pixel in Chrome oder Firefox verwenden, funktioniert es gut, auch wenn Sie alle Prozentsätze verwenden, aber die Eltern-Div-Breite mit Pixeln einstellen, funktioniert es. ABER, wenn Sie alle Prozentwerte verwenden, scheint FF + Chrome komplett zu verschenken und die Prozentsätze basierend auf etwas zu berechnen, was ich nicht herausfinden kann.
Fiddle Example: Sehen Sie dies in Safari und FF/Chrome, um zu sehen, dass Safari #pixels
genauso darstellt wie #percents
ist und in beiden gerendert werden soll. Ist es Safari, das das dann falsch darstellt?
<div class="container">
<div class="pretendImage"></div>
<div id="percents"></div>
</div>
und meine CSS:
#percents {
width:100%;
height:100%;
position:absolute;
top:50%;
left:50%;
margin:-50% 0 0 -50%;
}
.container {
position:relative;
width:50%;
height:auto;
}
.pretendImage {
width:200px;
height:200px;
}
Nun fand ich eine Abhilfe durch eine zusätzliche Wrapper hinzufügen. Ich würde trotzdem gerne wissen, was das verursacht.
My workaround: Fiddle Verwendet einen Wrapper, um zu vermeiden, dass die oberen + Ränder des inneren div berechnet werden müssen, das 80% Breite/Höhe verwendet.
Alexander, möchten Sie die Div (Prozent) in der Mitte von div (pretendImage) oder div (Container) sein? –
Sorry das div (pretendImage) war nur div (container) in meinem Beispiel zu erweitern und den Effekt zu zeigen, wenn ich Pixel statt Prozent gesetzt habe. In meinem Code ist img (pretendImage) 'width: 100%; height: auto' und hat daher die gleiche Größe wie div (container), in dem ich div (percent) zentrieren möchte, wie in meinem Workaround, den ich aktualisiert habe. –