Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: style.top
 
 автор: Хулиган   (14.05.2007 в 11:31)   письмо автору
 
 

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

<body onresize="move_flash()";>

  <table id='tblFlash' align=center width=385px border=1 
         style='height:100; border-collapse:collapse; border-color:f0a0a0;'>
    <tr>
      <td>
        <!-- тут в таблице сидит флэш -->
      </td>
    </tr>
  </table>

<script>    
  function move_flash() {
    var top = document.body.clientHeight - 110;
    var left = (document.body.clientWidth - 385)/2;
    document.getElementById('tblFlash').style.left = left;
    document.getElementById('tblFlash').style.top = top;
  }
</script>

</body>


Все прекрасно работает.

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

<body onResize="move_footer();">

  <table id='footer' align=center width=100% border=1 
         style='height:50; border-collapse:collapse; border-color:f0a0a0;'>
    <tr>
      <td>
        <div align="center">FOOTER</div>
      </td>
    </tr>
  </table>

<script type="text/javascript" language="javascript">
  function move_footer(){
    document.getElementById('footer').style.top = document.body.clientHeight - 100;
  }
</script>

</body>


И ничего не получается. Таблица сидит где-то в центре страницы (сразу после предыдущих элементов)
В чем разница между двумя примерами? Почему второй не работает?
На всякий случай проверил document.getElementById('footer') - возвращает objectHTMLTable,
document.body.clientHeight тоже определяется верно. Консоль javascript показывает, что никаких ошибок в коде нет.

Что делать?

   
 
 автор: Lelik   (14.05.2007 в 11:42)   письмо автору
 
   для: Хулиган   (14.05.2007 в 11:31)
 


<style>
html {height:100%;}
body{...; height:100%; ...}
</style>

   
 
 автор: Хулиган   (14.05.2007 в 11:59)   письмо автору
 
   для: Lelik   (14.05.2007 в 11:42)
 

Это ничего не меняет. Дело не в высоте body, она определяется нормально (document.body.clientHeight равна ~700, в зависимости от браузера).
Более того, после
document.getElementById('footer').style.top = document.body.clientHeight - 100;

я вставил для проверки
alert(document.getElementById('footer').style.top);

И получаю ~600. Т.е. стиль top таблицы принял новое нужное значение, но по-прежнему таблица сидит в центре страницы. Во всех трех браузерах.

   
 
 автор: CNT   (14.05.2007 в 12:22)   письмо автору
 
   для: Хулиган   (14.05.2007 в 11:31)
 


function move_footer(){
   with (document.getElementById('footer').style) {position = 'absolute'; top = document.body.clientHeight - 100}
  } 

   
 
 автор: Хулиган   (14.05.2007 в 12:31)   письмо автору
 
   для: CNT   (14.05.2007 в 12:22)
 

Да, со стилем position = 'absolute'; работает...
Тогда возникает вопрос: почему первый пример работает без этого стиля? Там точно нет position = 'absolute'; Ни в файле css, ни в теле самого index.php.

   
 
 автор: CNT   (14.05.2007 в 15:31)   письмо автору
 
   для: Хулиган   (14.05.2007 в 12:31)
 

Видимо, потому работает, что в первом примере таблица была первым объектом после тега <body> и её относительные координаты совпали с абсолютными.

   
 
 автор: Хулиган   (14.05.2007 в 12:36)   письмо автору
 
   для: CNT   (14.05.2007 в 12:22)
 

Хотя position = 'absolute'; это не есть гут...
По причине того, что на странице есть невидимый div (display:none;) и когда я его показываю, то он наезжает на таблицу, которая жестко закреплена из-за position = 'absolute';

   
 
 автор: Lelik   (14.05.2007 в 13:20)   письмо автору
 
   для: Хулиган   (14.05.2007 в 12:36)
 

так в момент, когда ты показываешь див, прибавляй к свойству top таблицы высоту этого дива

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования