CSS: Lassen Sie zwei schwebende Elemente überlappen
Lesezeit: 4 Minuten
Ich habe zwei Divs in einem Container. Einer schwimmt nach links und einer schwimmt nach rechts. Beide sind etwa 60% so breit wie der Container und so gestaltet, dass sie sich in der Mitte überlappen (rechtes Div hat Vorrang).
Wie bringe ich sie dazu, sich zu überlappen, anstatt vertikal zu stapeln, wie es normalerweise schwebende Elemente tun? Wenn ich das richtige Element absolut positioniere, wird das enthaltende Div nicht erweitert, um es an den Inhalt anzupassen.
Code (leider kann ich das nicht jsfiddle, da ihre Server atm nur lesbar sind):
Wenn ich richtig liege, erlaubt das Attribut “display:inline” auch nicht das Festlegen von Abmessungen. Das bedeutet, wenn Sie Ihre Anzeige auf Inline stellen, sollten Sie keine Breiten und/oder Höhen definieren. Und du schwebst, diese Inline scheint mir nutzlos. Ich würde den Z-Index verwenden, den Sie über Javascript auf :hover oder click()s steuern können (tauscht Werte zwischen den beiden Elementen aus). Wie dynamisch ist Ihre Schnittstelle?
– benqus
10. Februar 2012 um 11:45 Uhr
Das display:inline ist redundant wie jedes Element, das ist floated ist automatisch display:block.
– Gareth
10. Februar 2012 um 13:52 Uhr
Verwenden Sie ein Negativ margin-right auf das linke Kästchen, damit das rechte Kästchen überlappen darf:
So genial. Ich habe eine Weile nach einer Lösung für überlappende schwebende Spalten gesucht (für Registerkarten mit automatischer Höhe j.mp/1iQ30Fz) Dies ist eine perfekte Lösung!
– sstur
15. April 2014 um 1:34 Uhr
Ich mag das nicht. Es scheint viel “benutzerdefinierter” Fall zu sein. Die Probleme können auftreten, wenn die Größe des zweiten Elements von 100 Pixel auf was auch immer geändert wird …
Falls Sie nicht wussten, dass “px” nicht benötigt wird, wenn Sie “0px” definieren, können Sie einfach top: 0; ersparen Sie sich einige Zeichen
– thenetimp
10. Februar 2012 um 11:28 Uhr
Ich habe dies bereits getan, aber es bedeutet, dass der übergeordnete Container nicht erweitert wird, um den Inhalt anzupassen
– Chris
10. Februar 2012 um 11:44 Uhr
Sie könnten die Breite des Containers und der Divs mit Prozentwerten anstelle von festen Werten angeben. B. Containerbreite: 100 %, #linke Breite 60 % und #rechte Breite 60 %.
Das Problem ist, dass, wenn die Größe der linken Elemente geändert wird, wenn die Größe des Fensters geändert wird usw., Sie Probleme bekommen! Verwenden Sie also keine solchen benutzerdefinierten schmutzigen “Tricks”, sondern erstellen Sie eine normale Struktur innerhalb von HTML, sodass sie natürlich geordnet sein sollten.
Wenn ich richtig liege, erlaubt das Attribut “display:inline” auch nicht das Festlegen von Abmessungen. Das bedeutet, wenn Sie Ihre Anzeige auf Inline stellen, sollten Sie keine Breiten und/oder Höhen definieren. Und du schwebst, diese Inline scheint mir nutzlos. Ich würde den Z-Index verwenden, den Sie über Javascript auf :hover oder click()s steuern können (tauscht Werte zwischen den beiden Elementen aus). Wie dynamisch ist Ihre Schnittstelle?
– benqus
10. Februar 2012 um 11:45 Uhr
Das
display:inline
ist redundant wie jedes Element, das istfloat
ed ist automatischdisplay:block
.– Gareth
10. Februar 2012 um 13:52 Uhr