Si vous souhaitez utiliser display: table-cell
, et des pseudo-éléments, vous pouvez avoir une assez bonne solution (avec quelques limitations mineures).
Le code HTML ne change pas:
<div class="dossier_titre">
<h2>Horizon 2020, nouvelles opportunités</h2>
</div>
et vous pouvez appliquer le CSS suivant:
.zone_33 {
width: 238px;
padding: 0px;
margin: 0px;
}
.zone_33 .dossier_titre {
margin: 0px 0px 20px 0px;
}
.zone_33 h2 {
color: #616263;
font-size: 150%;
font-weight: lighter;
padding: 0px 0px 12px 0px;
background: none;
border-bottom: 1px solid grey;
display: table-cell;
text-transform: uppercase;
}
.zone_33 .dossier_titre:after {
content: "";
display: table-cell;
width: 100%;
}
Pour l'élément <h2>
, définissez display: table-cell
, et ajouter un pseudo-élément après .dossier_titre
(la bloc contenant pour l'élément en-tête/titre). Le pseudo-élément est également un table-cell
et a une largeur de 100% (c'est la clé).
En outre, puisque h2
n'est plus un élément de bloc, ajoutez vos marges à .dossier_titre
pour maintenir l'espacement visuel dans notre disposition.
Comment This Works
Je crée un tableau à deux cellules de la seconde cellule (le pseudo-élément) ayant une largeur de 100%.Cela déclenche le calcul par le navigateur de la largeur de la première cellule (h2
) qui contient le texte du titre. La largeur de la première cellule est donc le minimum nécessaire pour afficher le texte. La bordure inférieure est aussi longue que la ligne de texte la plus longue dans le bloc de texte de la cellule.
Limites
table-cell
est pas pris en charge dans IE7 sans un hack, mais le travail autour est assez bien connu et peut être trouvé si nécessaire.
Si le titre contenait de nombreux mots courts, la ligne pourrait se briser à des endroits inattendus. Vous devez insérer  
pour conserver des mots spécifiques ensemble au besoin.
Fiddle: http://jsfiddle.net/audetwebdesign/h34pL/
plus une cellule de table d'affichage pour le chemin \ o / –