Se si desidera utilizzare display: table-cell
e pseudo-elementi, è possibile avere una soluzione piuttosto buona (con alcune limitazioni minori).
Il codice HTML non cambia:
<div class="dossier_titre">
<h2>Horizon 2020, nouvelles opportunités</h2>
</div>
e si può applicare il seguente CSS:
.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%;
}
Per l'elemento <h2>
, impostare display: table-cell
, e aggiungere un pseudo-elemento dopo .dossier_titre
(la contenente il blocco per l'intestazione/elemento titolo). Lo pseudo-elemento è anche un table-cell
e ha una larghezza del 100% (questa è la chiave).
Inoltre, poiché h2
non è più un elemento di blocco, aggiungere i margini a .dossier_titre
per mantenere la spaziatura visiva nel nostro layout.
come funziona
sto creando una tabella a due celle con la seconda cella (lo pseudo-elemento) avente una larghezza di 100%.Ciò fa sì che il browser calcoli la larghezza di restringimento per la prima cella (h2
) che contiene il testo del titolo. La larghezza della prima cella è quindi il minimo necessario per visualizzare il testo. Il bordo inferiore è lungo quanto la riga di testo più lunga nel blocco di testo all'interno della cella della tabella.
Limitazioni
table-cell
non è supportato in IE7 senza un hack, ma il work-around è abbastanza noto e può essere trovato, se necessario.
Se il titolo contiene molte parole brevi, è possibile che la linea si interrompa in luoghi inattesi. Dovresti inserire  
per mantenere insieme parole specifiche, se necessario.
Fiddle: http://jsfiddle.net/audetwebdesign/h34pL/
fonte
2013-05-06 14:55:33
più una cella della tabella di visualizzazione per il modo \ o / –