Heim  >  Artikel  >  Web-Frontend  >  Wie erreicht man eine zentrierte Erweiterung eines Div-Elements in CSS ohne JavaScript?

Wie erreicht man eine zentrierte Erweiterung eines Div-Elements in CSS ohne JavaScript?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-28 03:44:02920Durchsuche

How to Achieve Centered Expansion of a Div Element in CSS Without JavaScript?

Erweitern eines Div von seiner Mitte aus mit CSS

Im Bereich der CSS-Transformationen könnte man sich vorstellen, dass sich Div-Elemente elegant von ihrer Mittelachse aus erweitern anstelle des Standardverhaltens der Erweiterung von der oberen und linken Ecke aus. Allerdings stellt dieser gewünschte Effekt ohne JavaScript eine Herausforderung dar.

Die Lösung: Ränder manipulieren

Der Schlüssel zum Erreichen dieser zentrierten Erweiterung liegt im Übergang der Div-Ränder mithilfe eines bestimmten Formel. Bei dieser Technik wird die Differenz zwischen der Zielgröße und der Anfangsgröße berechnet und das Ergebnis durch zwei geteilt. Dieser Wert wird dann während des Übergangs als negative Margenanpassung angewendet.

Anpassungsoptionen:

Je nach gewünschtem Verhalten stehen drei Hauptoptionen zur Verfügung:

Option 1: Platz bewahren

Diese Option erweitert das Div innerhalb des um es herum reservierten Raums und lässt umgebende Elemente unberührt.

#square {
    -webkit-transition: width 1s, height 1s, margin 1s;
    transition: width 1s, height 1s, margin 1s;
}
#square:hover {
    margin: 55px; /* calculated as initial margin - ((width change and height change)/2) */
}

Option 2: Umgebende Elemente überschreiben

Durch das Festlegen negativer Ränder bewirkt diese Option, dass sich das Div über benachbarte Elemente ausdehnt und deren Inhalt überlappt.

#square {
    -webkit-transition: width 1s, height 1s, margin 1s;
    transition: width 1s, height 1s, margin 1s;
}
#square:hover {
    margin: -50px; /* calculated as 0 - ((width change and height change)/2) */
}

Option 3: Verschieben Umgebende Elemente

Diese Variante verschiebt das Div und verschiebt nachfolgende Elemente im Dokumentfluss nach unten.

#square {
    -webkit-transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
    transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
}
#square:hover {
    top: -50px; /* calculated as initial top - ((new height - initial height)/2) */
    left: -50px; /* calculated as initial left - ((new width - initial width)/2) */
    margin-right: -50px;
    margin-bottom: -50px;
}

Hinweis: Diese Berechnungen gelten für quadratische Divs. Bei nicht quadratischen Elementen können die Berechnungen für Randanpassungen je nach gewünschter proportionaler Größenänderung geringfügig variieren.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine zentrierte Erweiterung eines Div-Elements in CSS ohne JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn