Maison >interface Web >tutoriel CSS >Comment réaliser une expansion centrée d'un élément Div en CSS sans JavaScript ?

Comment réaliser une expansion centrée d'un élément Div en CSS sans JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 03:44:02995parcourir

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

Agrandir un Div depuis son centre à l'aide de CSS

Dans le domaine des transformations CSS, on pourrait imaginer des éléments div s'étendant gracieusement à partir de leur axe central , plutôt que le comportement par défaut consistant à développer à partir du coin supérieur et gauche. Cependant, cet effet souhaité présente un défi sans JavaScript.

La solution : manipuler les marges

La clé pour réaliser cette expansion centrée réside dans la transition des marges du div à l'aide d'un formule. La technique consiste à calculer la différence entre la taille cible et la taille initiale et à diviser le résultat par deux. Cette valeur est ensuite appliquée sous forme d'ajustement de marge négative lors de la transition.

Options de personnalisation :

En fonction du comportement souhaité, trois options principales sont disponibles :

Option 1 : Préserver l'espace

Cette option étend le div dans l'espace réservé autour de lui, sans affecter les éléments environnants.

#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 : Remplacement des éléments environnants

En définissant des marges négatives, cette option amène le div à s'étendre sur les éléments proches, chevauchant leur contenu.

#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 : Décalage Éléments environnants

Cette variante décale le div et déplace les éléments suivants vers le bas du flux de documents.

#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;
}

Remarque : Ces calculs s'appliquent aux divs carrés. Pour les éléments non carrés, les calculs d'ajustements de marge peuvent varier légèrement en fonction du redimensionnement proportionnel souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn