Почему существует вертикальная полоса прокрутки, если у родителя и ребенка одинаковая высота?

Мне нужны мои .sideBar и .contentHolder элементы внутри .displayContainer.

Проблема заключается в том, что .displayContainer создает ненужную вертикальную полосу прокрутки. Горизонтальная полоса прокрутки в порядке, но нет необходимости в вертикальной полосе прокрутки.

Я проверил и обнаружил, что элементы .displayContainer и дочерние элементы имеют одинаковую вычисленную высоту. Итак, почему существует вертикальная полоса прокрутки?

Может кто-нибудь дать мне идею, как удалить его?

body, html {
  margin: 0px;
  padding: 0px;
  border: 0px;
  height: 100%;
  width: 100%;
}
.displayContainer {
  height: 100%;
  width: 100%;
  overflow: auto;
  white-space: nowrap;
}
.sideBar {
  background-color: green;
  display: inline-block;
  width: 20%;
  height: 100%;
}
.contentHolder {
  background-color: red;
  display: inline-block;
  width: 100%;
  height: 100%;
}
<div class="displayContainer">
  <div class="sideBar"></div>
  <div class="contentHolder"></div>
</div>

Ответы

Ответ 1

Краткий ответ

В CSS вы столкнулись с одним из самых сложных настроек: vertical-align: baseline

Переключите значение в top, bottom или middle, и все должно быть установлено.


Описание

Начальное значение свойства vertical-align, которое применяется к элементам на уровне строки и таблицы, составляет baseline. Это позволяет браузерам предоставлять пространство ниже элементов для так называемых descenders.

В типографике строчные буквы, такие как j, g, p и y, называются descenders, потому что они нарушают базовую линию.

базовый уровень

Базовая линия - это линия, на которой сидят большинство букв и ниже которых расширяются ограничители.

enter image description here

Источник: Wikipedia.org

Поскольку все элементы линейного уровня по умолчанию vertical-align: baseline, такие элементы, как button, input, textarea, img и, как и в вашем коде, inline-block divs, будут слегка приподниматься от нижнего края их контейнера.

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

Источник: Wikipedia.org

Это пространство descender добавляет высоту внутри контейнера, что вызывает переполнение и вызывает вертикальную прокрутку.

Вы можете увидеть пространство descender, прокрутив в нижней части demo. Вы заметите небольшой зазор между дочерними элементами и нижним краем.

Вот несколько способов справиться с этим:

  • Переопределить vertical-align: baseline с помощью vertical-align: bottom (или другое значение).

  • Переключитесь с display: inline-block на display: block.

  • Задайте a line-height: 0 для родителя.

  • Установите a font-size: 0 для родителя. (При необходимости вы можете восстановить размер шрифта для детей.)

Ответ 2

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

Если в последние 20px или около того ничего не будет (честно говоря, этого не должно быть), то работа вокруг этого Dhaval предполагает (добавление переполнения: hidden, в ваш css) должно быть хорошо.

Если вы хотите увидеть контент до конца, вы можете попробовать использовать абсолютные значения или просто изменить 100% -99%