Mam następujący kod HTML do renderowania polu wprowadzania daty z ikoną:Dlaczego te elementy HTML w .NET Razor mają dodatkowe odstępy spowodowane przez nowe linie?
@if (Model.ShowThis){
<input id="box1" type="hidden" value="@Model.SelectedDate.ToString("yyyy-MM-dd")" size="10" />
<span id="icon1" class="picture"></span>
}
Zauważysz, że ikona jest przesunięty w prawo. Gdybym zmodyfikować kod, aby być:
@if (Model.ShowThis){
<input id="box1" type="hidden" value="@Model.SelectedDate.ToString("yyyy-MM-dd")" size="10" /><!--
--><span id="icon1" class="picture"></span>
}
można zauważyć, że nie ma już przesunięcie uwagi na usunięcie wszelkich potencjalnych białej przestrzeni. Bez tych komentarzy, mogę przejść do debuggera i zobaczyć dodatkowe odstępy między elementami, które po usunięciu, naprawia również problem.
Dlaczego są standardowymi nowe linie w pliku .cshtml (wewnątrz bloku Razor), powodując tam być non-breaking przestrzenie między tymi elementami HTML? Nigdy nie widziałem tego zachowania w innych plikach tego samego typu.
Doskonałe wyjaśnienie! Wielkie dzięki! – Ryan
Czy możesz wyjaśnić oferowane rozwiązanie CSS? Próbowałem tego i skończyło się na przesunięciu ikony w dół, zamiast z powrotem w lewo, tak jak powinno być. Jaki jest pomysł wykorzystania rozmiaru czcionki, aby to osiągnąć? – Ryan
'rozmiar-czcionki' określi białą przestrzeń renderowaną w kontenerze. Kiedy jest to "0", to białe znaki nie będą renderowane, tak jak znak nie będzie renderowany z regułą 'font-size: 0'. Prawdopodobnie reset jest winowajcą. Spróbuj określić oryginalny rozmiar czcionki, a zamiast '1rem' (który jest w zasadzie resetowany do dokumentu root' font-size'), ustaw go tak, jak było przed zastosowaniem 'font-size: 0' pojemnik. –