Ho il seguente codice HTML per rendere una casella di appuntamento con un'icona:Perché questi elementi HTML all'interno di .NET Razor hanno spazi aggiuntivi causati da nuove linee?
@if (Model.ShowThis){
<input id="box1" type="hidden" value="@Model.SelectedDate.ToString("yyyy-MM-dd")" size="10" />
<span id="icon1" class="picture"></span>
}
noterete che l'icona sia spostato a destra. Se modifico il codice per essere:
@if (Model.ShowThis){
<input id="box1" type="hidden" value="@Model.SelectedDate.ToString("yyyy-MM-dd")" size="10" /><!--
--><span id="icon1" class="picture"></span>
}
si noterà che non c'è uno spostamento a causa della rimozione di qualsiasi spazio bianco potenziale. Senza questi commenti, posso andare nel debugger e vedere spaziatura aggiuntiva tra gli elementi, che una volta rimosso, risolve anche il problema.
Perché le nuove righe standard all'interno di un file .cshtml (all'interno di un blocco Razor) causano spazi non interrotti tra questi elementi HTML? Non ho mai visto questo comportamento prima in altri file nello stesso tipo di scenario.
Ottima spiegazione! Molte grazie! – Ryan
Puoi spiegare la soluzione CSS che hai offerto? Ho provato questo e ha finito per spostare l'icona verso il basso, invece di tornare a sinistra come dovrebbe essere. Qual è l'idea dietro l'uso di font-size per realizzare questo? – Ryan
'font-size' determinerà lo spazio bianco reso nel contenitore. Quando è '0', quello spazio bianco non verrà renderizzato, proprio come un personaggio non potrebbe eseguire il rendering con una regola' font-size: 0'. Probabilmente è il reset che è il colpevole. Cerca di determinare la dimensione originale del font, e invece di '1rem' (che in pratica lo sta resettando per documentare root' font-size'), impostalo su qualsiasi cosa fosse prima che la 'font-size: 0' fosse applicata al contenitore. –