Eltern & Kind mit position fixed, Eltern overflow:hidden bug
Ich weiß nicht, ob es ein Problem gibt, aber ich Frage mich, warum die overflow:hidden
funktioniert nicht auf fixed
Eltern/Kinder-element.
Hier ein Beispiel:
CSS und HTML:
CSS:
.parent{
position:fixed;
overflow:hidden;
width:300px;
height:300px;
background:#555;
}
.children{
position:fixed;
top:200px;
left:200px;
width:150px;
height:150px;
background:#333;
}
HTML:
<div class="parent">
<div class="children">
</div>
</div>
Live-demo: jsFiddle
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da eine Feste position element befestigt ist, mit Bezug auf den viewport, nicht ein weiteres element. Daher, da der viewport ist nicht schneiden Sie es aus, der überlauf wird irrelevant.
ref: http://www.w3.org/wiki/CSS_absolute_and_fixed_positioning#Fixed_positioning
Kann man mit CSS
clip: rect(top, right, bottom, left);
clip ein fest positioniertes element zu einem Elternteil. Siehe demo auf http://jsfiddle.net/lmeurs/jf3t0fmf/.Vorsicht verwenden Sie mit Vorsicht!
Obwohl die clip-Stil ist weit verbreitet, Haupt Nachteile sind, dass:
auto
Wert entspricht100%
, dh.clip: rect(auto, auto, auto, auto);
;Sehen http://tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/ für mehr info.
EDIT: Chrome scheint zu handhaben, positionieren und CSS3-Transformationen auf die Kind-Elemente viel besser, wenn die Anwendung backface-visibility, also nur um sicher zu sein, die wir Hinzugefügt:
zu den wichtigsten child-element.
Beachten Sie auch, dass es nicht vollständig unterstützt, von älteren /mobile Browsern oder es könnte einige zusätzlichen Aufwand. Siehe unsere Umsetzung für das Menü am bellafuchsia.com.
BEARBEITEN 2014-11-02: Demo-URL wurde aktualisiert.
iOS Safari 5+ repaints the clipped content on scroll after scrolling;
iOS 8 Safari (auch nach dem update) scheint noch zu Verhalten.The rect coordinates do not support percentages
aber wir können der .Eltern die erforderlichen Prozentsatz Dimensionen.clip
ist jetzt veraltet. Geht vorwärts, wir sollten mit denclip-path
Eigenschaft. Nebenclip: rect(auto, auto, auto, auto);
wir sollten auchclip-path: inset(0 0 0 0);
clip-path
noch nicht unterstützt IE11 oder Edge. Ich werde mich mitclip
für jetzt.clip-path
sehr-sehr-sehr langsam. Hoffe, dass Sie nie aufgelassenclip
2016 update:
Können Sie einen neuen stacking-context, als man auf Coderwall:
Bezieht sich auf http://dev.w3.org/csswg/css-transforms/#transform-rendering
position: fixed;
Kind funktioniert nicht wie erwartet.Als alternative zu der Verwendung von clip-Sie können auch
{border-radius: 0.0001px}
auf ein übergeordnetes element. Es funktioniert nicht nur mit absolute/fixed positionierte Elemente.Wenn Sie ausblenden möchten überlauf auf Feste Positionierung von Elementen, ist der einfachste Ansatz, den ich gefunden habe, ist platzieren Sie das element in einem container-element, und gelten
position:fixed
undoverflow:hidden
um das element, anstatt die enthaltenen element (müssen Sie entfernenposition:fixed
aus dem enthaltenen element für diese zu arbeiten). Der Inhalt der festen container sollten dann abgeschnitten werden, wie erwartet.In meinem Fall habe ich Probleme mit mit
object-fit:cover
auf einem ortsfesten element (es war verschütten außerhalb der Grenzen der Seite Körper, unabhängig vonoverflow:hidden
). Sie in einen festen Behälter mitoverflow:hidden
auf den container wurde das Problem behoben.Hatte ich ein ähnliches, ziemlich Komplexes problem mit einem fluid-layout, wo in der rechten Spalte hatte eine Feste Breite, und die linke hatte eine flexible Breite. Meine Feste container sollte die gleiche Breite wie die flexible Spalte. Hier ist meine Lösung:
HTML
CSS
Live-Demo: http://jsfiddle.net/hWCub/
Feste Positionierung von Elementen sind relativ positioniert, um das browser-Fenster, also das Eltern-element ist im Grunde irrelevant.
Um den Effekt zu bekommen, die Sie wollen, wo die
overflow
auf der übergeordneten clips das Kind, verwenden Sieposition: absolute
statt: http://jsfiddle.net/DBHUv/1/