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

HTML+CSS+JavaScript

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

 

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

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

тема: Скользящая шапка таблицы
 
 автор: Richard Ferlow   (21.12.2006 в 22:53)   письмо автору
 
 

Мне понадобилось, чтобы шапка таблицы скользила, при перемещении.
Нашел вот такой скрипт.

<script language="javascript">
function change_pos_title()
{
var top_pos=document.body.scrollTop;
window.status = "X : " + top_pos;
keys.style.top=top_pos;
}
</script>

И собственно для строки таблицы делаем

<tr  id=keys  style="position:relative; top:0;">

Все конечно хорошо, но, фактически, эта строка привязывается к положению скролл бара правого. И это не есть хорошо. Надо чтобы начинала скользить только тогда, когда верхняя граница браузера этого tr коснется.
Как это можно сделать или переделать текущее ?
Пример работы можно увидеть по ссылке.

   
 
 автор: 12345   (21.12.2006 в 23:24)   письмо автору
 
   для: Richard Ferlow   (21.12.2006 в 22:53)
 

(Забыли сказать, что onscroll=omresize=change_pos_title; , ну и для Мозиллы строчку. )

<script language="javascript"> d=document;
onload=function(){y0=getPosition(keys)[1];} //возвращает [x,y]-массив, ищем по форуму
function change_pos_title() 
{
var top_pos=d.all?document.body.scrollTop:pageYoffset; 
//window.status = "X : " + top_pos; 
keys.style.top=top_pos>y0?top_pos-y0:0; 
}
</script> 

   
 
 автор: Richard Ferlow   (21.12.2006 в 23:52)   письмо автору
 
   для: 12345   (21.12.2006 в 23:24)
 

В итоге получилось

<script language="javascript">

function getPosition(obj) {var o=obj; 
var x=0, y=0; 
while(o) { 
   x+=o.offsetLeft; 
   y+=o.offsetTop; 
   o=o.offsetParent; 

return [x,y]; 
}
d=document; 
onload=function(){y0=getPosition(keys)[1];} 
function change_pos_title()  

var top_pos=d.all?document.body.scrollTop:pageYoffset;  
//window.status = "X : " + top_pos;  
keys.style.top=top_pos>y0?top_pos-y0:0;  
}
</script>


Onscroll=onresize=change_pos_title(); //предположил, что вы описались, но не уверен на счет om

В итоге в вертикальном плане работает суперзамечательно.
Но вот при изменении размеров окна все остается на том же месте.
Не могли бы Вы пояснить, как вот эту оставшуюся проблему решить, так как я в яваскрипт не силен.
Большое спасибо за ответ.

   
 
 автор: Richard Ferlow   (21.12.2006 в 23:56)   письмо автору
 
   для: Richard Ferlow   (21.12.2006 в 23:52)
 

И про Мозиллу строчка - какая имеется ввиду.
Знаю что кроме как в IE в тукущем варианте нигде это больше не работает.

   
 
 автор: 12345   (22.12.2006 в 14:54)   письмо автору
 
   для: Richard Ferlow   (21.12.2006 в 23:56)
 

Нет, в Опере ещё при скроллинге мышью работает. А чтобы и в Мозилле - добавить

if(self.addEventListener)addEventListener('DOMMouseScroll',function(){setTimeout(onscroll,1)},!1);

А при ресайзе окна оно и должно оставаться на месте, потому что сдвиг окна по x,y при этом не меняется. (Поэтому "onresize=" можно выбросить - для вашей задачи излишен.)

   
 
 автор: Richard Ferlow   (22.12.2006 в 17:23)   письмо автору
 
   для: 12345   (22.12.2006 в 14:54)
 

Не в это плане остается на месте. Центрируемая таблица перемещается и ее позиция соответственно по x меняется. А меню остается там же.

   
Rambler's Top100
вверх

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