ASP.Net Форма, связанная с базовой моделью, сжимается при добавлении дополнения / позиционирования

#html #css #forms #asp.net-core-mvc #stylin&

#HTML #css #формы #asp.net-core-mvc #оформление

Вопрос:

У меня возникают проблемы с этой конкретной формой, когда дело доходит до попытки форматирования страницы, добавления заголовка и перемещения остального содержимого вниз на 10% экрана, чтобы заголовки не были скрыты под заголовком, который я добавляю. Этот CSS работает должным образом для других страниц, просто перемещая содержимое вниз на 10% (я также пробовал использовать отступы):

 .content{
    position: absolute;
    top: 10%;
}
  

однако, когда я помещаю ее в эту конкретную форму, она сжимает все мои элементы формы, изображение сжатых элементов формы. Я не совсем уверен, что могло бы быть причиной этого, поскольку я просто пытаюсь добавить пробел над формой.

Вот код формы на этой странице .cshtml (эта форма на 90% состоит из предварительно сгенерированного кода Visual Studios 2019 и работает до <div class="content"&&t; тега):

 <div class="content"&&t;
            <div class="row"&&t;
                <div class="col-md-4"&&t;
                    <form asp-action="Edit"&&t;
                        <div asp-validation-summary="ModelOnly" class="text-dan&er"&&t;</div&&t;
                        <input type="hidden" asp-for="@Model.id" class="form-control" /&&t;

                        <div class="form-&roup"&&t;
                            <label asp-for="FirstName" class="control-label"&&t;</label&&t;
                            <input asp-for="FirstName" class="form-control" value="@Model.FirstName" /&&t;
                            <span asp-validation-for="FirstName" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <label asp-for="LastName" class="control-label"&&t;</label&&t;
                            <input asp-for="LastName" class="form-control" value="@Model.LastName" /&&t;
                            <span asp-validation-for="LastName" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <label asp-for="Username" class="control-label"&&t;</label&&t;
                            <input asp-for="Username" class="form-control" value="@Model.Username" /&&t;
                            <span asp-validation-for="Username" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <label asp-for="Password" class="control-label"&&t;</label&&t;
                            <input asp-for="Password" class="form-control" value="@Model.Password" /&&t;
                            <span asp-validation-for="Password" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <label asp-for="StreetAddress" class="control-label"&&t;</label&&t;
                            <input asp-for="StreetAddress" class="form-control" value="@Model.StreetAddress" /&&t;
                            <span asp-validation-for="StreetAddress" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <label asp-for="City" class="control-label"&&t;</label&&t;
                            <input asp-for="City" class="form-control" value="@Model.City" /&&t;
                            <span asp-validation-for="City" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <label asp-for="State" class="control-label"&&t;</label&&t;
                            <input asp-for="State" class="form-control" value="@Model.State" /&&t;
                            <span asp-validation-for="State" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <label asp-for="ZipCode" class="control-label"&&t;</label&&t;
                            <input asp-for="ZipCode" class="form-control" value="@Model.ZipCode" /&&t;
                            <span asp-validation-for="ZipCode" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <label asp-for="ApprovalStatus" class="control-label"&&t;</label&&t;
                            <input asp-for="ApprovalStatus" class="form-control" value="@Model.ApprovalStatus" /&&t;
                            <span asp-validation-for="ApprovalStatus" class="text-dan&er"&&t;</span&&t;
                        </div&&t;
                        <div class="form-&roup"&&t;
                            <input type="submit" value="Save" class="btn btn-primary" /&&t;
                            <input type="reset" value="Cancel" class="btn btn-primary" asp-action="Mana&eVolunteers" /&&t;
                        </div&&t;
                    </form&&t;
                </div&&t;
            </div&&t;

            <div&&t;
                <a asp-action="Landin&"&&t;Back to List</a&&t;
            </div&&t;
        </div&&t;
  

К вашему сведению: оставшийся HTML-код на этой странице (непосредственно над формой).

         <div class="header"&&t;
            <im& src="~/Ima&es/BitworksLo&o.pn&" id="header-im&" /&&t;
            <h2&&t;Volunteer Mana&ement System</h2&&t;
        </div&&t;

        <h1&&t;Edit</h1&&t;

        <hr /&&t;
  

Редактировать: теперь я попробовал это на нескольких формах одинаковой природы (формы, привязанные к модели ASP.Net-core .cshtml), и тот же шаблон происходит с этими полями и метками с точки зрения их сжатия. Возможно ли это, но между самими формами, привязанными к модели? Есть ли другой способ, который работает и показывает тот же результат?

Ответ №1:

Вероятно, она сжимается из-за того, что класс content имеет абсолютное позиционирование, но не имеет родительского элемента полной ширины. Вы могли бы просто добавить свойство width: 100%; в .content класс, и тогда это выглядело бы более нормально.

Но в этом случае вы можете (и, вероятно, должны) избегать использования абсолютной позиции все вместе.

Лучшим способом было бы установить для заголовка фиксированную высоту и удалить свойство position из содержимого.

 .header {
  hei&ht: 100px;
}
.content {
 // removed all properties. 
}
  

Теперь это приводит к тому, что заголовок и содержимое располагаются относительно друг друга, и поэтому они будут накладываться друг на друга.