2013-05-18 5 views
0

У меня есть DIV, который содержит среди прочих вещей таблицу, которая, очевидно, растет или уменьшается по размеру, когда строки или столбцы добавляются или удаляются, когда это происходит, контейнер DIV должен быть соответствующим образом изменен , Если окно браузера недостаточно велико, чтобы показать всю таблицу, DIV должен содержать необходимую полосу прокрутки, иначе полосы прокрутки не должны отображаться. Кусок торта, не так ли?Как избавиться от ненужных полос прокрутки

В IE 10 все работает так же хорошо, как ожидалось, однако в Chrome и Safari 2 уродливые полосы прокрутки появляются, даже когда они не нужны ... по крайней мере, это то, что я понимаю, когда проверяю свойства объекта DIV, и я вижу это:

this.offsetWidth = 642 
this.scrollWidth = 638 

так что нет горизонтальной полосы прокрутки, не так ли?

this.offsetHeight = 420 
this.scrollHeight = 416 

поэтому нет вертикальной полосы прокрутки, не так ли?

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

Я попытался следующее:

this.style.overflow = "hidden"; 
this.style.left = q/2+"px"; 
this.style.width = v+"px"; 
this.style.top = p+"px"; 
this.style.height = i+"px"; 
this.style.overflow = "auto"; 

, но я все еще получаю такое же поведение.

+0

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

+0

Вы пробовали переполнение? – Sanjeev

ответ

0

Решенный !!!

Это было прямо в купели моего носа, но потребовалось время для меня, чтобы понять:

this.style.overflow = "hidden"; 
this.style.left = q/2+"px"; 
this.style.width = v+"px"; 
this.style.top = p+"px"; 
this.style.height = i+"px";  
if(this.scrollHeight>this.offsetHeight) this.style.overflowY = "auto"; 
if(this.scrollWidth>this.offsetWidth) this.style.overflowX = "auto"; 
Смежные вопросы