Bonjour,
Je souhaite mettre côte à côte 3 div, jusque là rien d'exceptionnel, mais j'ai quelques exigences qui rendent tout ceci un peu compliqué pour moi :
les 3 div côte à côte :
- doivent occuper tout l'espace disponible (largeur de l'écran)
- ne doivent pas dépasser la largeur de l'écran
- doivent garder la même hauteur, quel que soit le contenu
- doivent rester côte à côte, quelle que soit la largeur de l'écran
div de gauche :
- la largeur doit être fixe
div du centre :
- elle doit occuper tout l'espace disponible pour afficher un maximum de contenu
- si son contenu occupe trop de place pour tenir sur une seule ligne, il doit être tronqué
- son contenu doit (idéalement) être centré par rapport à la page et non par rapport à la div
div de droite :
- elle ne doit en aucun cas masquer une partie de son contenu
- sa largeur doit être identique à celle de son contenu, de façon à libérer un maximum de place pour la div du centre
J'ai passé pas mal de temps à essayer diverses solutions (j'ai même essayé avec display:table), mais je me retrouve toujours bloqué par un point.
À l'heure actuelle, j'en suis là :
Mais ma div de droite est fixe ce qui est gênant, car :
- si trop petite, elle n'affiche pas l'intégralité de son contenu
- si trop grande, elle gaspille inutilement l'espace qui devrait être disponible pour le contenu de la div du centre
J'ai fait un Codepen ici si vous voulez voir à quoi cela ressemble.
Je vous remercie beaucoup de votre aide
Blaise
Je souhaite mettre côte à côte 3 div, jusque là rien d'exceptionnel, mais j'ai quelques exigences qui rendent tout ceci un peu compliqué pour moi :
les 3 div côte à côte :
- doivent occuper tout l'espace disponible (largeur de l'écran)
- ne doivent pas dépasser la largeur de l'écran
- doivent garder la même hauteur, quel que soit le contenu
- doivent rester côte à côte, quelle que soit la largeur de l'écran
div de gauche :
- la largeur doit être fixe
div du centre :
- elle doit occuper tout l'espace disponible pour afficher un maximum de contenu
- si son contenu occupe trop de place pour tenir sur une seule ligne, il doit être tronqué
- son contenu doit (idéalement) être centré par rapport à la page et non par rapport à la div
div de droite :
- elle ne doit en aucun cas masquer une partie de son contenu
- sa largeur doit être identique à celle de son contenu, de façon à libérer un maximum de place pour la div du centre
J'ai passé pas mal de temps à essayer diverses solutions (j'ai même essayé avec display:table), mais je me retrouve toujours bloqué par un point.
À l'heure actuelle, j'en suis là :
<div class="wrapper">
<div class="wrapmiddle">
<div class="middle">contenu centré et non prioritaire</div>
</div>
<div class="left">largeur fixe</div>
<div class="right">contenu prioritaire</div>
</div>
.wrapper{
width: 100%;
margin: 0 auto;
}
.wrapmiddle{
float: left;
width: 100%;
background-color: yellow;
}
.middle{
margin-right:102px;
margin-left:102px;
background-color: pink;
height: 50px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
}
.left{
float: left;
width: 100px;
margin-left: -100%;
background-color: blue;
height: 50px;
}
.right{
float: left;
width: 100px;
margin-left: -100px;
background-color: red;
height: 50px;
white-space: nowrap;
overflow: hidden;
}
Mais ma div de droite est fixe ce qui est gênant, car :
- si trop petite, elle n'affiche pas l'intégralité de son contenu
- si trop grande, elle gaspille inutilement l'espace qui devrait être disponible pour le contenu de la div du centre
J'ai fait un Codepen ici si vous voulez voir à quoi cela ressemble.
Je vous remercie beaucoup de votre aide
Blaise