Firefox игнорирует прописку при использовании переполнения: прокрутка

При использовании overflow: scroll в сочетании с свойством CSS padding: /* ... */ в Firefox отсутствует дополнение в нижней части элемента. (Но работает в Chrome и Safari.)

Просмотр демонстрации

Я что-то пропустил или есть какая-то работа для этой проблемы?


Обратите внимание: демон не использует какую-либо библиотеку для нормализации, но я тоже пробовал normalize.css, но безуспешно.

Ответы

Ответ 1

в Firefox padding-bottom игнорируется с переполнением: auto или переполнение: прокрутка, см. документацию

https://bugzilla.mozilla.org/show_bug.cgi?id=748518

еще, если вы хотите обойти свой пример, чтобы достичь желаемого результата, а затем посмотрите скрипт: https://jsfiddle.net/nileshmahaja/4vuaf4o3/1/

Измененный CSS

.container {
    height: 200px;
    padding: 50px 50px 0;
    border: solid 1px red;
    overflow-y:auto;
    display:block;
}
ul{
    padding:0 0 50px;
    display:block
}
li {
    padding: 0;
    margin: 0;
}

Ответ 2

После небольшого мозгового штурма с другими разработчиками, хотя и не очень изящного, это чистое решение CSS работает:

.container:after {
    content: "";
    height: 50px;
    display: block;
}

скрипка

Ответ 3

Я не поклонник создания дополнительных элементов DOM для работы с отображением проблем, однако, похоже, он помогает разбить элемент на два элемента, например:

<div class="container">
    <div class="container-inner">
        <!-- long content -->
    </div>
</div>

а затем присвоить overflow: scroll внешнему элементу и добавить padding: /* ... */ во внутренний элемент.

Ответ 4

Я закончил тем же эффектом (пробел между последним элементом в прокручиваемом контейнере и концом контейнера) несколько иначе:

.container :last-child {
    margin-bottom: 50px;
}

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

Здесь Fiddle

Ответ 5

Вы не можете использовать ответ Артуриона во всех случаях, например, после input или элемента img. Вместо этого вы можете создать элемент распорки, такой как div и поместить его в конец прокручиваемого содержимого:

.spacer-1rem {
    content: "";
    height: 1rem;
    display: block;
}

Ответ 6

Хотя то, что сработало для меня, было похоже на другие предложенные ответы, эти другие ответы не спомогли мне.

То, что сработало, было следующим:

.container::after {
    content: '';
    display: block;
    padding: calc(var(--desiredPadding) / 2);
}

что означает:

  • для меня было необходимо использовать padding на псевдоэлементе. Использование padding-bottom не сработало, как и height
  • Мне нужно было разделить отступы на 2, как следствие
  • Необходимо было указать display: block