2016-05-26 15 views
9

Ho un elemento div che contiene del testo. Questo elemento ha una larghezza fissa. Se il testo è così lungo da non poter essere contenuto in una riga, voglio nascondere quel testo (l'intero testo, non solo le righe extra). Altrimenti mostra il testo.Nascondi testo se non rientra in una riga con CSS

Questo può essere fatto con i CSS?

L'aggiunta di alcuni elementi aggiuntivi in ​​html che possono aiutare a ottenere questo risultato è accettabile.

+0

Vuoi dire che si desidera nascondere tutto il testo, se non può andare bene? O solo la parte che verrà tagliata? –

+0

nascondi tutto il testo – Luka

+2

@Luka Dubito che sia possibile. Il CSS non può "rilevare" l'overflow. Può gestirlo in diversi modi ma questo è tutto. Usa javascript. –

risposta

8
  1. Inserire il testo in un involucro interno del blocco interno con white-space: nowrap per evitare interruzioni di riga.
  2. Inserire uno pseudoelemento blocco inline vuoto prima di quello inner-wrapper.
  3. Quando l'involucro interno è più largo dell'involucro esterno, verrà spostato nella seconda riga dell'involucro esterno.
  4. Per nascondere utilizzare overflow: hidden e impostare lo stesso valore su height e line-height.

.outer-wrapper { 
 
    overflow: hidden; 
 
    height: 1.2em; 
 
    line-height: 1.2em; 
 
    border: 1px dotted black; 
 
    margin: 1em; 
 
} 
 
.outer-wrapper::before { 
 
    content: ''; 
 
    display: inline-block; 
 
} 
 
.inner-wrapper { 
 
    display: inline-block; 
 
    white-space: nowrap; 
 
}
<div class="outer-wrapper"> 
 
    <div class="inner-wrapper"> 
 
    this is a short line 
 
    </div> 
 
</div> 
 
<div class="outer-wrapper"> 
 
    <div class="inner-wrapper"> 
 
    this is a super long line of text that it is never ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever going to fit on a single line! 
 
    </div> 
 
</div>

+2

questo è abbastanza intelligente. – ray

1

Se si desidera nascondere il testo in più, si può fare qualcosa di simile:

div { 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    max-width: 50em; 
 
    border: 1px dotted black; 
 
}
<p><br><br></p> 
 

 
<div> 
 
    this is a super long line of text that it is never ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever ever going to fit on a single line! 
 
</div>

Se si desidera nascondere completamente l'intero elemento, è necessario utilizzare JavaScript. Il CSS non ha modo di "rilevare" se il testo è troppo lungo.

+0

Volevo nascondere l'intero testo. Aggiornerò la mia domanda per sottolineare che – Luka

+0

Come ho detto nella mia risposta, sarà necessario utilizzare JavaScript. –

Problemi correlati