Comment aligner un inline-block horizontalement et verticalement
Quel est le meilleur/le plus propre à l'aide de CSS
pour aligner les #dates div
sur le côté droit de la tête, et verticalement dans le milieu.
J'ai essayé float: right
, mais qui ne permettent pas la vertical-align
. Je veux éviter d'utiliser des flotteurs, donc je suis en utilisant inline-block
, et en utilisant le positionnement relatif. Est-il plus approprié?
Je n'aime pas le fait que j'ai à faire un top de 30px, et à l'aide d'essais et d'erreur jusqu'à ce qu'il centres.
<div id="header">
<a id="logo" href="~/" runat="server">
<img src="Images/Interface/logo.png" alt="logo" />
</a>
<div id="dates">
<div id="hijri-date">2 Ramadhaan, 1435 AH</div>
<div id="gregorian-date">Sunday 29 June 2014</div>
</div>
</div>
#header
{
background-color: white;
padding: 15px;
position: relative;
}
#logo
{
display: inline-block;
vertical-align: middle;
}
#logo img
{
vertical-align: bottom; /* to get rid of text descender space underneath image */
}
#dates
{
display: inline-block;
position: absolute;
right: 30px;
top: 30px;
font-size: 14px;
font-family: 'Open Sans';
color: #696969;
background: url(Images/Interface/date-icon.png) no-repeat;
background-position-y: center;
padding-left: 32px;
}
OriginalL'auteur sprocket12 | 2014-07-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire usage de css
display:table
:Exemple
Vous pouvez avoir besoin de donner le n ° dates d'une largeur si vous voulez qu'il soit aligné à droite
CSS tables ont des avantages pour cette application. Il pourrait aider à avoir un sous-wrapper div autour du bloc de texte dans la main droite d'une cellule de tableau, de cette façon, vous pouvez utiliser text-align droit, et pas besoin de s'inquiéter quant à la nature exacte de la table largeur de la cellule.
comment est-ce jsfiddle.net/peteng/F7Nb5/4
OriginalL'auteur Pete
À L'Aide De Inline-Blocks
À l'aide de vos éléments HTML comme affiché, essayez le code CSS suivant:
Puisque vous avez deux éléments enfants
#header
, à gauche de l'image du logo et d'un droit du bloc de texte, il suffit d'utilisertext-align: justify
pour forcer le logo à gauche et le texte à droite.Pour obtenir que cela fonctionne, vous avez besoin d'au moins deux lignes dans le
#header
.Pour générer une deuxième ligne, l'utilisation d'un pseudo-élément:
#header:after
qui va mettre en place un 100% grand vide inline-block après la date. Lewidth: 100%
des forces pour démarrer et remplir une 2ème ligne et de lavertical-align: top
se débarrasser de l'espace blanc supplémentaire en dessous de la ligne de base.De traiter avec l'espace blanc de la hauteur, réglez
line-height: 0
dans#header
qui permettra à la hauteur de la pseudo-élément à l'effondrement de 0. Cependant, vous devez réinitialiser leline-height: 1.5
dans#dates
pour obtenir un texte lisible.Avantages et les Inconvénients
Avec cette approche, les éléments finira par enveloppe à deux lignes, comme la largeur de la page est petite.
Si vous souhaitez conserver les éléments sur une seule ligne, vous pourriez être mieux à l'aide de CSS tables.
Voir démo: http://jsfiddle.net/audetwebdesign/3U3w4/
OriginalL'auteur Marc Audet
Je pense, la meilleure façon pour le vertical align est à l'aide de
css:display-table
etcss"display-table-cell
propriétés. Si vous souhaitez aligner à droite le contenu de id="dates", vous devez utilisercss:display-inline-table
à l'intérieur de ce bloc.Voir Tripoter
OriginalL'auteur Vladimir Shevchuk
À l'aide de
display: flex;
propriété, vous pouvez définir les éléments à l'horizontale et à la verticale du centre.Exemple
OriginalL'auteur Ashish Mehta