Come posso rilevare se un div ha più di una riga? Voglio dire, in questo modo:Rileva se un div ha più di una riga
div :multiline {
...
}
vorrei formattare il contenuto per quanto riguarda il numero di linee (1 o più)
Come posso rilevare se un div ha più di una riga? Voglio dire, in questo modo:Rileva se un div ha più di una riga
div :multiline {
...
}
vorrei formattare il contenuto per quanto riguarda il numero di linee (1 o più)
Se siete disposti a utilizzare JavaScript/JQuery, si potrebbe controllare l'altezza del div e vedere se è maggiore di quello che sarebbe con una sola riga di testo. Certo, questo non è molto a prova di errore, ma non saprei un altro modo.
Non è possibile gestire questo solo da css? –
@ KissKoppány Non che io abbia visto. – Daedalus
Anche io non la penso così. Ho cercato un po 'di più e non ho trovato niente JS-less. –
Non sono sicuro di poterlo gestire con i CSS, ma dovresti essere in grado di farlo con JQuery. Devo ammettere che il mio JQuery non è eccezionale e sono in procinto di impararlo, quindi prendilo con un pizzico di sale. Puoi usare l'altezza della proprietà per trovare l'altezza del div e aggiungere gli stili necessari in base all'altezza del div.
$("div").ready(
function test(event) {
var heightOfDiv = $(document).height();
if (heightOfDiv > 15){
$("div").css({
backgroundColor: "green"
});}
}
);
Non definirei questa soluzione come qualcosa che potrebbe potenzialmente portare a una soluzione. Pensavo che la tua domanda fosse interessante; quindi ho deciso di giocare un po 'con i CSS.
Si utilizza la larghezza corrente interno span
(data tramite inline-block
display) per determinare la larghezza trattino. Usiamo calc()
per rendere il rientro 100%
meno la larghezza genitore di 200px
a cui è stato aggiunto il nostro rientro finale (30px
).
Funziona meglio se il contenuto a linea singola non si avvicina alla larghezza completa del contenitore.
Quick Notes:
calc()
(list of support):before
pseudo classe (list of support)inline-block
per monitorare la larghezza del contenuto.codice HTML:
<h1>Success Cases</h1>
<p><span class="indent">Single line Single line</span></p>
<p><span class="indent">The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog.</span></p>
<h1>Failure Cases</h1>
<p><span class="indent">Single line Single line Single 1</span></p>
<p><span class="indent">Single line Single line Single line</span></p>
codice CSS:
p {
background-color: #ccc;
margin: 10px;
width: 200px;
}
p > .indent {
display: inline-block;
}
p > .indent:before {
background-color: red;
content: "";
float: left;
width: calc(100% - 200px + 30px);
height: 1em;
}
Questo è davvero fantastico; molto bene! :) –
wow, bella soluzione :) –
Penso che la tua ** demo ** non sia realmente intuitiva per ciò che l'OP ** vuole veramente ** (come la pseudo-classe immaginaria ': multiline'), potresti modificare la demo cosicché se 'div' contiene solo 1 singola linea, il suo colore di sfondo sarà' verde' e se contiene più di 1 riga (multilinea), il suo colore di sfondo dovrebbe essere 'rosso'? In generale, abbiamo bisogno di molte più proprietà di stile rispetto al solo colore di sfondo. –
CSS ha la pseudo-elemento ':: first-Line', ma questo è il basa line-solo selettore disponibile in CSS, che non ha vera capacità di creare assegni o stili condizionali. Come vuoi formattare il contenuto? –
Questo div è un div "alert" e mi piacerebbe inserire 'padding-left: 0px' se ha solo una riga, altrimenti' padding-left: 5px' –