пробел под div

ИЗМЕНИТЬ здесь новый jsfiddle, который успешно воспроизводит проблему

У меня есть это белое пространство, появляющееся под моим div.

Здесь показано на 2-х фото, одно пролистано вниз:

введите здесь описание изображения

введите здесь описание изображения

Я хочу избавиться от пробела. Веб-страница должна занимать 100% области просмотра при включении панели навигации, поэтому она должна меняться при изменении области просмотра, и это происходит, и она имеет правильный размер, но затем под страницей, которую вы можно прокрутить вниз. Белое пространство выглядит как точный размер панели навигации. Как избавиться от этого пробела? Пожалуйста, попробуйте на jsfiddle

код:

<nav class="navbar navbar-dark navbar-fixed-top">
    <div class="container-fluid">
        <button     class="navbar-toggler hidden-md-up pull-xs-right" 
                    type="button" 
                    data-toggle="collapse" 
                    data-target="#nav-content">
                    &#9776;
        </button>
        <a class="navbar-brand" href="#">THE VEGAN REPOSITORY</a>
        <div class="collapse navbar-toggleable-sm" id="nav-content">
            <ul class="nav navbar-nav pull-xs-right">
                <li class="nav-item">
                    <a class="nav-link" href="#">FIND</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">ADD</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">LOGIN</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">SIGN UP FREE</a>
                </li>
            </ul>
        </div>
    </div>
</nav>

<div id="landing-page" class="text-uppercase">
    <div class="container-fluid" style="height: 100%;">
        <div class="row hidden-lg-up" style="height: 20%;">
            <div class="col-xs-3 flex-xs-middle">
                <img width="100" src="images/monster2.png" />
            </div>
            <div class="col-xs-3 offset-xs-6 flex-xs-middle">
                <img class="pull-xs-right" width="100" src="images/monster4.png" />
            </div>
        </div>
        <div class="row" id="middle-row">
            <div class="col-xs-1 col-sm-2 col-md-3 hidden-md-down flex-xs-top 
                flex-sm-middle">
                <img width="80%" src="images/monster2.png" />
            </div>
            <div class="col-md-12 col-lg-6 flex-xs-middle ">
                <div style="text-align: center;">
                    <h5 class="display-6">the vegan repository</h5>
                    <h1 class="display-3">
                        find vegan stuff* near you.
                    </h1>
                                        <a id="try-now-button" class="with-border clickable" href="#search-filter-page">
                        <h5 class="text-center medium-text">try now</h5>
                    </a>
                </div>
            </div>
            <div class="col-xs-1 col-sm-2 col-md-3 hidden-md-down 
                flex-xs-top flex-sm-middle">
                <img class="pull-xs-right" width="80%" src="images/monster4.png" />
            </div>
        </div>
        <div class="row" style="height:5%;">
            <h4 class="display-6 flex-xs-bottom">
                *Stuff like restaurants, meat alternatives, 
                dairy alternatives, and much more!
            </h4>
        </div>
    </div>
</div>

CSS:

#landing-page {
  background-color: dimgray;
  height: calc(100% - 50px);
  margin-top: 50px;
  overflow-y: auto;
  padding: 10px 40px 10px 40px;
  min-height: 396px; }

h1 {
  font-size: 10vmin;
  color: #FFF; }

h5 {
  color: rgba(255, 255, 255, 0.7); }

h4 {
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.7); }

/* MORE THAN 75 (XL) */
#middle-row {
  height: 95%; }

/* LESS THAN 75 (LG) */
@media (max-width: 74.9em) {
  #middle-row {
    height: 95%; } }
/* LESS THAN 62 (MD) */
@media (max-width: 61.9em) {
  #middle-row {
    height: 75%; } }
/* LESS THAN 48 (SM) */
@media (max-width: 47.9em) {
  #middle-row {
    height: 75%; } }
/* LESS THAN 34 (XS) */
@media (max-width: 33.9em) {
  #middle-row {
    height: 75%; } }

.navbar-toggler {
  color: rgba(255, 255, 255, 0.7); }

.navbar-dark .navbar-nav .nav-link {
  color: rgba(255, 255, 255, 0.7); }

.navbar-dark .navbar-nav .nav-link:focus,
.navbar-dark .navbar-nav .nav-link:hover {
  color: #FFF; }

nav {
  background-color: #fc4747; }


  html, body {
  height: 100%; }

ИЗМЕНИТЬ здесь новый jsfiddle, который успешно воспроизводит проблему


person BeniaminoBaggins    schedule 04.08.2016    source источник
comment
Я не вижу пробелов.   -  person Leo the lion    schedule 04.08.2016
comment
Мы не видим пробела в jsfiddle, проблема может быть в тегах html/body.   -  person Cladiuss    schedule 04.08.2016
comment
@Leothelion Загрузили ли мои фотографии проблемы? у меня плохое подключение к интернету   -  person BeniaminoBaggins    schedule 04.08.2016
comment
нет... мы не можем видеть какие-либо фотографии, так как они поступают из локальной сети, а не из интернет-ссылки.   -  person Leo the lion    schedule 04.08.2016
comment
Вы используете MAC и проверяете браузер Chrome?   -  person jerry    schedule 04.08.2016
comment
Да, мы можем видеть фотографии в сообщении. Но мы не можем видеть изображения в jsfiddle, поскольку вы указываете относительный путь со своего веб-сайта.   -  person Cladiuss    schedule 04.08.2016
comment
нам не нужны никакие изображения, это проблема с css и height элементами   -  person spirit    schedule 04.08.2016


Ответы (3)


В CSS, если вы хотите указать свойство height с помощью процентов, вы должны указать height родительского контейнера. поэтому в вашем случае ваш элемент #landing-page имеет родительский тег <body>, а тег <body> имеет родительский тег <html>. Вот почему вы должны указать:

html, body { height: 100%; }

в тебе css.

Еще одна проблема здесь:

<div class="row hidden-lg-up" style="height:20%;">
    ...
</div>
<div class="row" style="height:95%;">
    ...
</div>
<div class="row" style="height:5%;">
    ...
</div>

попробуйте просуммировать все высоты =) измените так, чтобы они в сумме составляли 100% и вы получите то, что хотите


ОБНОВЛЕНИЕ

Мне удалось воспроизвести вашу проблему локально, так что вот решение.
На самом деле у вас проблема не с белой линией внизу, основной виновник нижней строки в то время как margin-top свойство элемента #landing-page =).
Посмотрите, если вы удалите элемент <nav>, вы увидите такую ​​же белую линию вверху. Похоже, вы установили высоту 100% для #landing-page, а затем сместили ее вниз. Браузер отрисовывает фон на 100% видимого пространства, но, как вы можете заметить, у вас есть некоторая вертикальная прокрутка, и все, что находится под этой прокруткой, не имеет background-color.

В общем, margin сложны, когда дело доходит до background-color или background-image, так как это может привести к текущей (или похожей) проблеме. Переместите значение margin-top в значение padding-top, чтобы иметь тот же интервал, чем удалите calc() из свойства height, например:

#landing-page {
  background-color: dimgray;
  height: 100%; /* just 100% */
  overflow-y: auto;
  padding: 60px 40px 10px 40px; /* added margin-top to padding-top */
  min-height: 396px; }
person spirit    schedule 04.08.2016
comment
Спасибо, вы правы насчет высоты, прибавляемой к 100%. Однако мои элементы body и html уже имеют высоту 100%, извините. Я забыл добавить это к вопросу, потому что я использую angular 2, и этот css для html и body абстрагируется в файл, о котором я забыл. Я добавлю эту информацию к вопросу. Белое пространство внизу все еще там. Я думаю, что что-то в моем окружении вызывает это. Я в отпуске на отдаленном острове, использую свой мобильный телефон в качестве точки доступа Wi-Fi и испытываю некоторые странные проблемы. - person BeniaminoBaggins; 04.08.2016
comment
какой браузер вы используете? В хроме внизу нет пробела, когда html и body составляют 100% высоты. - person spirit; 04.08.2016
comment
Могу ли я получить доступ к вашему сайту через Интернет? Это где-то в сети? - person spirit; 04.08.2016
comment
@Beniamino_Baggins, ты здесь? - person spirit; 04.08.2016
comment
Я только что вернулся в онлайн. Мне удалось воспроизвести проблему в новом jsfiddle, который я разместил в вопросе. - person BeniaminoBaggins; 05.08.2016
comment
@Beniamino_Baggins, обновил мой ответ рабочим решением - person spirit; 05.08.2016

В jsfiddle мы не видим пробелов, поэтому проблема может быть связана с тегами html/body. Если они всегда имеют размер 1155 пикселей, независимо от того, насколько вы изменяете размер, попробуйте установить html и высоту тела на 100%:

html, body { height: 100%; }
person Cladiuss    schedule 04.08.2016

Установите цвет фона на body вместо div, это решит вашу проблему.

person Wim Mertens    schedule 05.08.2016
comment
Это делает белое пространство серым. Но я хочу, чтобы белое пространство полностью исчезло. Чтобы не было прокрутки и высота страницы была 100% при включении панели навигации. - person BeniaminoBaggins; 05.08.2016
comment
Понятно, но почему вы используете height: calc(100% - 50px); вместо 100%? - person Wim Mertens; 05.08.2016
comment
Также попробуйте перейти на padding, а не на margin, и примените box-sizing: border-box к #landing-page. - person Wim Mertens; 05.08.2016
comment
используя вычисление высоты, потому что она идет ниже панели навигации, которая составляет 50 пикселей, и она должна заканчиваться в нижней части области просмотра, а не на 50 пикселей ниже нее. Спасибо, я попробую это в ближайшее время. - person BeniaminoBaggins; 05.08.2016
comment
Нет, панель навигации фиксирована, поэтому она не будет увеличивать высоту. Поэтому вам нужно установить высоту на 100% - person Wim Mertens; 05.08.2016