Полосы прокрутки на div переполнения не отображаются при добавлении контента в div с использованием Javascript - PullRequest
1 голос
/ 06 июля 2011

У меня есть HTML-документ, который выглядит примерно так, только гораздо сложнее и сложнее в управлении:

<body>
  <div id="title">This div does not do anything, just stays at the top.</div>
  <div id="container">
    <div id="navigation">Some navigation</div>
    <div id="content">Most of the content</div>
  </div>
</body>

Тогда у меня есть таблица стилей, которая включает следующее:

#container
{  
   height: auto !important;
   overflow: visible !important;
   overflow-x: auto;
   overflow-y: scroll;
   position: relative;
   width: auto !important;
}

Это все работает абсолютно идеально. Раздел title остается в верхней части страницы, элемент container становится прокручиваемым, если содержимое достаточно длинное, чтобы прокручивать его, иначе это не так.

Проблема в том, что я тогда использую Javascript, чтобы добавить намного больше вещей в content div. Это означает, что content div становится длиннее, чем страница после загрузки , и это, по крайней мере, означает, что в IE8 полосы прокрутки на container никогда не активируются, поэтому, как только Добавленный Javascript контент падает внизу страницы и становится недоступным.

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

Ответы [ 4 ]

1 голос
/ 06 июля 2011

Я знаю, что в IE8 есть некоторые проблемы с переполнением-y.

Возможно, вам следует попробовать это.

-ms-overflow-y: scroll;

Надеюсь, это поможет.

0 голосов
/ 28 июля 2017

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

0 голосов
/ 06 июля 2011

Решение, которое сработало, заключалось в простом взломе изменения размера элемента с помощью JavaScript, чтобы он соответствовал его фактически размеру, как только я добавил к нему дополнительные данные, например:

document.all['container'].style.height = document.documentElement.clientHeight+"px";

Конечно, это не полностью обходит проблему - для этого нам нужна новая функция:

function resizeResults()
{
    var resultPanel=document.all["container"];
    var topPanel=document.all["title"];
    var newHeight= document.documentElement.clientHeight;
    newHeight -= topPanel.clientHeight;
    resultPanel.style.height=newHeight;
}

Тогда мы можем использовать window.attachEvent("onresize", resizeResults);, чтобы гарантировать, что мы не потеряем полосу прокрутки или не запутаемся, когда пользователь изменяет размер окна.

0 голосов
/ 06 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...