Ich brauche runde Ecken auf einem Eltern-Div, um Inhalte von seinen Kindern zu maskieren. overflow: hidden
Funktioniert in einfachen Situationen, bricht jedoch in Webkit-basierten Browsern und Opera ab, wenn das übergeordnete Element relativ oder absolut positioniert ist.
Dies funktioniert in Firefox und IE9:
CSS
#wrapper {
width: 300px;
height: 300px;
border-radius: 100px;
overflow: hidden;
position: absolute;
}
#box {
width: 300px;
height: 300px;
background-color: #cde;
}
HTML
<div id="wrapper">
<div id="box"></div>
</div>
Danke für die Hilfe!
UPDATE: Der Fehler, der dieses Problem verursacht, wurde seitdem in Chrome behoben. Ich habe Opera oder Safari jedoch nicht erneut getestet.
quelle
Fügen Sie Ihrem Element mit Rahmenradius einen Z-Index hinzu, der die darin enthaltenen Elemente maskiert.
quelle
-webkit-mask-image: -webkit-radial-gradient(circle, white, black);
war eine effektive Problemumgehung, aber zum Glück wurde der Fehler im letzten Update behoben, das ich für Chrome erhalten habe.Trotzdem habe ich es geschafft, das Problem zu lösen, indem ich ein zusätzliches Div zwischen Wrapper und Box hinzugefügt habe.
CSS
HTML
Vielen Dank an alle, die geholfen haben!
→ http://jsfiddle.net/5fwjp/
quelle
Opazität: 0,99; auf Wrapper Webkit-Fehler lösen
quelle
transform: translateY(0);
ist eine Alternative, die das gleiche Ergebnis erzielt, ohne die visuelle Darstellung des Objekts zu beeinträchtigen (es sei denn, Sie verwenden die Perspektive).Scheint, dass dies funktioniert:
http://jsfiddle.net/qWdf6/82/
quelle
transform: translateZ(0)
ist genug für mich.translateZ
) implizit die Hardwarebeschleunigung für Ihre Elemente ermöglicht, wodurch in einigen Fällen leider eine brandneue Dose Würmer geöffnet wird.transform: translateZ(0)
arbeitete auch für mich. In meinem Fall ist es keine schlechte Idee, dass dieser Artikel hardwarebeschleunigt ist.Unterstützt in den neuesten Versionen von Chrome, Oper und Safari können Sie dies tun:
Sie sollten auf jeden Fall das Tool http://bennettfeely.com/clippy/ überprüfen !
quelle
Keine Antwort, aber dies ist ein Fehler unter der Chromium-Quelle: http://code.google.com/p/chromium/issues/detail?id=62363
Sieht leider nicht so aus, als würde jemand daran arbeiten. :((
quelle
Wenn Sie die Deckkraft des übergeordneten Elements mit dem Rahmen ändern, werden die gestapelten Elemente neu organisiert. Dies funktionierte auf wundersame Weise für mich nach stundenlangen Nachforschungen und fehlgeschlagenen Versuchen. Es war so einfach wie das Hinzufügen einer Deckkraft von 0,99, um diesen Malprozess von Browsern neu zu organisieren. Überprüfen Sie http://philipwalton.com/articles/what-no-one-told-you-about-z-index/
quelle
Was mich betrifft, hat keine der Lösungen gut funktioniert, nur mit:
auf dem Wrapper-Element hat die Arbeit erledigt.
Hier das Beispiel: http://jsfiddle.net/gpawlik/qWdf6/74/
quelle
basierend auf der hervorragenden Antwort von Graycrow ...
Hier ist ein realistischeres Beispiel mit zwei speziellen Divs mit etwas Füllstoffgehalt. Ich habe den fest codierten PNG-Hintergrund durch nur einen Hex-Wert ersetzt, d. H.
wird ersetzt durch
Siehe diese JSFiddle ... http://jsfiddle.net/hqLkA/
quelle
Hier schau dir an, wie ich es gemacht habe; Jsfiddle
Mit dem von mir eingegebenen Code gelang es mir, ihn auf Webkit (Chrome / Safari) und Firefox zum Laufen zu bringen.
Ich weiß nicht, ob es mit der neuesten Version von Opera funktioniert.Ja, es funktioniert unter der neuesten Version von Opera.quelle
border-radius
sollten Sie sich in dieser Situation überhaupt die Mühe machen, den Wrapper aufzusetzen? Sie erhalten das gleiche Ergebnis, wenn Sie ihn nur aufsetzen#box
. Wenn der#box
Rahmenradius nur zur Korrektur von WebKit dient, können Sie die-webkit-
Eigenschaft auch einfach dort einfügen .Ich habe jede Antwort ausprobiert, aber ohne Erfolg. Nach einigen Stunden der Untersuchung fand ich eine Lösung für dieses Problem. Wenn Sie diese Eigenschaften in Ihrer Klasse verwenden, können div-Elemente den Container nicht überlaufen lassen.
quelle
Wenn Sie eine Maske für ein Bild erstellen und das Bild im Container positionieren möchten, setzen Sie nicht das Attribut 'position: absolute'. Alles was Sie tun müssen, ist den Rand links und rechts zu ändern. Chrome / Opera hält sich an den Überlauf: versteckte Regeln und Regeln für den Randradius.
quelle