190 votes

Comment aligner ce span à droite de la div ?

J'ai le HTML suivant :

<div class="title">
    <span>Cumulative performance</span>
    <span>20/02/2011</span>
</div>

avec ce CSS :

.title
{
    display: block;
    border-top: 4px solid #a7a59b;
    background-color: #f6e9d9;
    height: 22px;
    line-height: 22px;
    padding: 4px 6px;
    font-size: 14px;
    color: #000;
    margin-bottom: 13px;
    clear:both;
}

Si vous vérifiez ce jsFiddle : http://jsfiddle.net/8JwhZ/

vous pouvez voir que le nom et la date sont collés ensemble. Y a-t-il un moyen de faire en sorte que la date soit alignée sur la droite ? J'ai essayé float: right; sur le deuxième <span> mais ça fout en l'air le style, et pousse la date en dehors de la div qui l'entoure.

2 votes

Pouvez-vous modifier le HTML ?

3 votes

Si vous voulez que quelque chose flotte par rapport à un autre objet, le flotteur doit se trouver avant le non-flotteur. La date doit se trouver avant le titre et flotter à droite.

318voto

Phrogz Points 112337

Si vous pouvez modifier le HTML : http://jsfiddle.net/8JwhZ/3/

<div class="title">
  <span class="name">Cumulative performance</span>
  <span class="date">20/02/2011</span>
</div>

.title .date { float:right }
.title .name { float:left }

0 votes

CSS est simplifié et propre : les deux devraient être ajoutés. Le bricolage contient aussi une solution très fragile : jsfiddle.net/8JwhZ/2090

19 votes

Ou si vous voulez le mettre en ligne (comme moi) <span style="float: right">

78voto

user766304 Points 36

Travailler avec des flotteurs est un peu compliqué :

Ceci, comme beaucoup d'autres astuces de mise en page "triviales", peut être réalisé avec Flexbox.

   div.container {
     display: flex;
     justify-content: space-between;
   }

En 2017, je pense que c'est la solution préférée (par rapport au flottement) si vous n'avez pas à supporter les anciens navigateurs : https://caniuse.com/#feat=flexbox

Vérifiez fiddle comment les différentes utilisations de float se comparent à flexbox ("peut inclure quelques réponses concurrentes") : https://jsfiddle.net/b244s19k/25/ . Si vous avez toujours besoin de vous en tenir au flotteur, je vous recommande bien sûr la troisième version.

31voto

Philipp Points 441

Une solution alternative aux flottants consiste à utiliser le positionnement absolu :

.title {
  position: relative;
}

.title span:last-child {
  position: absolute;
  right: 6px;   /* must be equal to parent's right padding */
}

Voir aussi le violon .

13voto

hydro17 Points 51

La solution utilisant la flexbox sans justify-content: space-between .

<div class="title">
  <span>Cumulative performance</span>
  <span>20/02/2011</span>
</div>

.title {
  display: flex;
}

span:first-of-type {
  flex: 1;
}

Lorsque nous utilisons flex:1 sur le premier <span> il occupe tout l'espace restant et déplace le second <span> à droite. Cette solution est à la portée de tous : https://jsfiddle.net/2k1vryn7/

Ici https://jsfiddle.net/7wvx2uLp/3/ vous pouvez voir la différence entre deux approches flexbox : flexbox avec justify-content: space-between et flexbox avec flex:1 sur le premier <span> .

5voto

Kerel Points 1

Vous pouvez le faire sans modifier le html. http://jsfiddle.net/8JwhZ/1085/

<div class="title">
<span>Cumulative performance</span>
<span>20/02/2011</span>
</div>

.title span:nth-of-type(1) { float:right }
.title span:nth-of-type(2) { float:left }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X