На моем веб-сайте есть таблицы, вложенные в абсолютно позиционированные перетаскиваемые диалоговые окна, которые отображаются / скрываются в зависимости от некоторых действий пользователя. Стоит отметить, что в этих таблицах есть table-layout: auto;
и width: auto;
. Возникла проблема, когда в таблице было столько строк, что они выходили за нижний край экрана. Это вызвало проблемы с перетаскиванием, поскольку мы ограничили перетаскивание краями области просмотра. Чтобы решить эту проблему, я заключил таблицу в <div>
и установил на ней max-height: 400px; overflow: auto;
. Это дает пользователю красивую вертикальную полосу прокрутки всякий раз, когда таблица превышает максимальную высоту. Это работает, но по какой-то причине браузер (как IE, так и Chrome) не принимает во внимание ширину полосы прокрутки, поэтому каждый раз, когда высота таблицы превышает максимальное значение и вызывает переполнение, таблица скручивается влево. и к некоторым ячейкам в первом столбце применен очень уродливый перенос слов. Без комбинации переполнения / максимальной высоты ширина таблицы рассчитывается правильно и переполнения нет.
Живая демонстрация на jsFiddle
Я нашел два способа обойти это, оба из которых неосуществимы ...
- Явно установите ширину для каждой из ячеек (или используйте
table-layout: fixed
) - Используйте
overflow-y: scroll;
вместо auto, при котором полоса прокрутки отображается всегда, даже если она не нужна. Что еще хуже, так это то, что overflow-y является свойством CSS3.
Должно быть лучшее решение! Как я могу получить вертикальную полосу прокрутки на родительском элементе моей таблицы без переноса слов?