Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Расположение DIV-а в IE


Автор: NextAlex 7.9.2006, 15:25
Привет всем.
Есть такой код.
Код

<div border style="width:100%; position:absolute; bottom:20px; left:0px;">
..... код ....
</div>

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

function layer(layerName){
 //DOM1
  if(document.getElementById) return document.getElementById(layerName)
 //MSIE4
  if(document.all) return document.all[layerName]
 //Netscape 4
  if(document.layers) return document.layers[layerName]
 //неподдерживаемый браузер
  return null
}
        function showhide(id){
         if (layer(id).style.display=="block"){
         layer(id).style.display="none";
         }else{
         layer(id).style.display="block";
         }
        }
        function show(id){
         layer(id).style.display="block";
        }
        function hide(id){
         layer(id).style.display="none";
        }

В результате работы этого скрипта изменяется размер страницы и слой, расположенный внизу страницы (первый кусок кода), должен сместиться вниз и разместиться как ему положено в 20 пикелях от низа страницы.
При просмотре странички под Opera, Mozilla, Netscape, Konqueror и вообще всем что отличается от IE всё работает отлично, а под IE этот нижний div-остается на месте, как будто на него не действуют вообще никакие законы.
Помогите побороть...

Автор: zera 7.9.2006, 16:02
ничего не понял, почему слой должен сместиться? в приведенном коде ничего на это не указывает. 

Автор: NextAlex 7.9.2006, 23:36
Цитата(zera @  7.9.2006,  16:02 Найти цитируемый пост)
почему слой должен сместиться? в приведенном коде ничего на это не указывает. 

потому что у слоя привязка к низу страницы 
Код

<div border style="width:100%; position:absolute; bottom:20px; left:0px;">
..... код ....
</div>

под Оперой и другими нормальными браузерами это работает четко

Автор: JlOKu 8.9.2006, 04:56
А помоему там нет никакой привязки , если было бы вот так
Код

<div border style="width:100%; position:absolute; bottom:20px; left:0px;z-index[a]">
<!--  А у остальных b>a то заданный слой был бы последним -->
..... код ....
</div>

Автор: NextAlex 8.9.2006, 09:41
JlOKu, во-первых мне нужно чтобы слой был сверху и полностью виден, а во-вторых всё равно не помогает - уже пробовал.

Автор: zera 8.9.2006, 13:03
Цитата(NextAlex @  7.9.2006,  23:36 Найти цитируемый пост)
потому что у слоя привязка к низу страницы

это я вижу. еще я вижу функцию show/hide. не вижу почему что-то должно смещаться. изменения позиции в приведенном коде ну никак нет.
если вопрос в том, что слой надо показать, то z-index повыше ставь. 
hint: надеюсь div находится в элементе с position:[relative|absolute]? иначе не должно работать.

Автор: NextAlex 8.9.2006, 23:59
zera
Цитата(zera @  8.9.2006,  13:03 Найти цитируемый пост)
show/hide. не вижу почему что-то должно смещаться. изменения позиции в приведенном коде ну никак нет.

измемения позиции на самом деле нет, но слои, которые показывает и прячет show/hide растягивают контент и из-за этого меняется высота страницы.

Цитата(zera @  8.9.2006,  13:03 Найти цитируемый пост)
hint: надеюсь div находится в элементе с position:[relative|absolute]? иначе не должно работать.

конечно нет smile

Спасибо тебе огромное - всё заработало как должно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)