J'essaie de centrer le contenu de mes onglets verticalement, mais lorsque j'ajoute le style CSS display:inline-flex
, l'alignement horizontal du texte disparaît.
Comment puis-je faire les deux alignements de texte x et y pour chacun de mes onglets?
* { box-sizing: border-box; }
#leftFrame {
background-color: green;
position: absolute;
left: 0;
right: 60%;
top: 0;
bottom: 0;
}
#leftFrame #tabs {
background-color: red;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 25%;
}
#leftFrame #tabs div {
border: 2px solid black;
position: static;
float: left;
width: 50%;
height: 100%;
text-align: center;
display: inline-flex;
align-items: center;
}
<div id=leftFrame>
<div id=tabs>
<div>first</div>
<div>second</div>
</div>
</div>
Réponses:
Approche 1 -
transform
translateX
/translateY
:Exemple ici / Exemple plein écran
Dans les navigateurs pris en charge (la plupart d'entre eux), vous pouvez utiliser
top: 50%
/left: 50%
en combinaison avectranslateX(-50%) translateY(-50%)
pour centrer dynamiquement verticalement / horizontalement l'élément.Approche 2 - Méthode Flexbox:
Exemple ici / Exemple plein écran
Dans les navigateurs pris en charge , définissez l'
display
élément cible surflex
et utilisez-lealign-items: center
pour le centrage vertical etjustify-content: center
pour le centrage horizontal. N'oubliez pas d'ajouter des préfixes de fournisseur pour une prise en charge supplémentaire du navigateur ( voir l'exemple ).Approche 3 -
table-cell
/vertical-align: middle
:Exemple ici / Exemple plein écran
Dans certains cas, vous devrez vous assurer que la hauteur de l'élément
html
/body
est définie sur100%
.Pour un alignement vertical, définissez l'élément parent
width
de /height
pour100%
et ajouterdisplay: table
. Ensuite, pour l'élément enfant, changez ledisplay
entable-cell
et ajoutezvertical-align: middle
.Pour le centrage horizontal, vous pouvez soit ajouter
text-align: center
pour centrer le texte et tout autreinline
élément enfant. Vous pouvez également utilisermargin: 0 auto
, en supposant que l'élément est deblock
niveau.Approche 4 - Absolument positionnée
50%
par le haut avec déplacement:Exemple ici / Exemple plein écran
Cette approche suppose que le texte a une hauteur connue - dans ce cas,
18px
. Positionnez simplement l'élément50%
par le haut, par rapport à l'élément parent. Utilisez unemargin-top
valeur négative qui correspond à la moitié de la hauteur connue de l'élément, dans ce cas --9px
.Approche 5 - La
line-height
méthode (la moins flexible - non suggérée):Exemple ici
Dans certains cas, l'élément parent aura une hauteur fixe. Pour un centrage vertical, il vous suffit de définir un
line-height
sur l'élément enfant valeur égale à la hauteur fixe de l'élément parent.Bien que cette solution fonctionne dans certains cas, il convient de noter qu'elle ne fonctionnera pas lorsqu'il y a plusieurs lignes de texte - comme celle-ci .
la source
display: flex
dans le parent etalign-self: center
chez les enfants.Si CSS3 est une option (ou si vous avez une solution de rechange), vous pouvez utiliser transform:
Contrairement à la première approche ci-dessus, vous ne voulez pas utiliser à gauche: 50% avec la traduction négative car il y a un bogue de débordement dans IE9 +. Utilisez une valeur droite positive et vous ne verrez pas de barres de défilement horizontales.
la source
transform: translateX(50%) translateY(50%);
place. La transformation ci-dessus n'est pas syntaxiquement correcte selon les documents de transformation de Mozilla .transform
valeurs qui peuvent prendre une valeur X et Y ont une fonction de base pour prendre les deux et des fonctions spécialisées pour n'en prendre qu'une.La meilleure façon de centrer une boîte verticalement et horizontalement, est d'utiliser deux conteneurs:
Le conteneur extérieur:
display: table;
Le récipient intérieur:
display: table-cell;
vertical-align: middle;
text-align: center;
La zone de contenu:
display: inline-block;
Démo:
Voir aussi ce violon !
Centrage au milieu de la page:
Pour centrer votre contenu au milieu de votre page, ajoutez ce qui suit à votre conteneur externe:
position : absolute;
width: 100%;
height: 100%;
Voici une démo pour ça:
Voir aussi ce violon !
la source
Voici comment utiliser 2 propriétés flex simples pour centrer n divs sur les 2 axes:
align-items: center
centrera verticalement les blocsjustify-content: space-around
distribuera l'espace horizontal libre autour des divsla source
Exécutez cet extrait de code et voyez un div aligné verticalement et horizontalement.
la source
La solution la plus simple et la plus propre pour moi utilise la propriété CSS3 "transform":
la source
Le premier enfant sera aligné verticalement et horizontalement au centre
la source
pour centrer la Div dans une page check the fiddle link
Mettre à jour Une autre option consiste à utiliser la boîte flexible check the fiddle link
la source
Ci-dessous, l'approche Flex-box pour obtenir le résultat souhaité
la source
Une autre approche consiste à utiliser la table:
la source
Afin de centrer verticalement et horizontalement un élément, nous pouvons également utiliser les propriétés mentionnées ci-dessous.
Cette propriété CSS aligne les éléments verticalement et accepte les valeurs suivantes:
flex-start : les éléments s'alignent sur le haut du conteneur.
flex-end : les éléments s'alignent sur le fond du conteneur.
center : les éléments s'alignent au centre vertical du conteneur.
ligne de base : les éléments s'affichent sur la ligne de base du conteneur.
étirer : les articles sont étirés pour s'adapter au conteneur.
Cette propriété CSS justification-contenu , qui aligne les éléments horizontalement et accepte les valeurs suivantes:
flex-start : les éléments s'alignent sur le côté gauche du conteneur.
flex-end : les éléments s'alignent sur le côté droit du conteneur.
center : les éléments s'alignent au centre du conteneur.
espace entre : les éléments s'affichent avec un espacement égal entre eux.
espace autour : les éléments s'affichent avec un espacement égal autour d'eux.
la source
Approche CSS grille
la source
Besoin de suivre la solution nouvelle et facile suivante:
la source
la source
Faites simplement haut, bas, gauche et droite à 0.
la source
Vous pouvez y parvenir en utilisant CSS (votre élément
display:inline-grid
+grid-auto-flow: row;
) Grid et Flex Box (élément parentdisplay:flex;
),Voir l'extrait ci-dessous
la source
Lien source
Voir d'autres méthodes ici
la source
La façon la plus simple de centrer un div verticalement et horizontalement est la suivante:
Un autre exemple :
la source
Il s'agit d'un problème connexe que les gens peuvent consulter sur cette page lors de la recherche: lorsque je veux centrer un div pour un gif animé "en attente" de 100px, j'utilise:
la source
Si vous le préférez sans :
flexbox / grille / table
ou sans :
vertical-align: middle
Tu peux faire:
HTML
CSS
la source
Cela devrait fonctionner
la source
Facile ! Utilisez l'affichage flex sur le conteneur et la marge automatique sur le texte !!!!
Démo: https://jsfiddle.net/ay95f08g/
Testé: Safari, Chrome, Firefox et Opera sur MacOs Mojave. (toute dernière mise à jour le 25 février 2019)
la source
Ils sont nombreux à faire de même. vous pouvez utiliser la méthode suivante pour faire le div au milieu de la page.
à votre santé !
la source
Le plus simple
flexbox
approche la :Le moyen le plus simple de centrer un seul élément verticalement et horizontalement est d'en faire un élément flexible et de définir sa marge sur
auto
:Cette extension des marges dans chaque direction poussera l'élément exactement au milieu de son conteneur.
la source