Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Нужно реализовать таблицу со сроллингом и фиксированными заголовками - кто поможет? (https://javascript.ru/forum/jquery/22928-nuzhno-realizovat-tablicu-so-srollingom-i-fiksirovannymi-zagolovkami-kto-pomozhet.html)

Aetae 10.11.2011 20:49

Ну коли опу уже не нужно, выложу то что тогда прикинул:
<!DOCTYPE HTML>
<html>
<body> 
<style>
.main * {margin:0;padding:0}
.main h1 {
background: #e8e8e8; /* Old browsers */
background: -moz-linear-gradient(top,  #e8e8e8 0%, #cccccc 92%, #878787 100%); /* FF3.6+ */
background:  -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e8e8e8),  color-stop(92%,#cccccc), color-stop(100%,#878787)); /* Chrome,Safari4+  */
background: -webkit-linear-gradient(top,  #e8e8e8 0%,#cccccc 92%,#878787 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top,  #e8e8e8 0%,#cccccc 92%,#878787 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top,  #e8e8e8 0%,#cccccc 92%,#878787 100%); /* IE10+ */
background: linear-gradient(top,  #e8e8e8 0%,#cccccc 92%,#878787 100%); /* W3C */
font-size:20px;
top:0;
left:0;
position:relative;
height:30px;
line-height:30px;
margin-bottom:-30px;
z-index:1;
}
.main p {margin-top:30px;}
#scroll {height:200px;width:300px;overflow:auto;}
.main {width:300px;position:relative;border:1px solid #999;}
</style>
<div class="main">
  <div id="scroll">
    <h1>Заглавие 1</h1>
    <p>Текст 1<br>Текст 2<br>Текст 3<br>Текст 4</p>
    <h1>Заглавие 2</h1>
    <p>Текст 1<br>Текст 2<br>Текст 3<br>Текст 4</p>
    <h1>Заглавие 3</h1>
    <p>Текст 1<br>Текст 2<br>Текст 3<br>Текст 4</p>
    <h1>Заглавие 4</h1>
    <p>Текст 1<br>Текст 2<br>Текст 3<br>Текст 4<br>Текст 2<br>Текст 3<br>Текст 4</p>
    <h1>Заглавие 5</h1>
    <p>Текст 1<br>Текст 2<br>Текст 3<br>Текст 4<br>Текст 2<br>Текст 3<br>Текст 4</p>
  </div>
</div>
<script>
(function(){

function addCss(css) {
  var style = document.createElement("style");
  style.type = "text/css";   
  style.styleSheet?style.styleSheet.cssText=css:style.appendChild(document.createTextNode(css));
  document.getElementsByTagName("head")[0].appendChild(style);
}


var scr = document.getElementById('scroll'),
head = scr.getElementsByTagName("h1"),
len = i = head.length,
pos = [Infinity],
last = head[0],
headerHeight = last.offsetHeight,
headerWidth = scr.clientWidth;

addCss('.main h1{width:'+headerWidth+'px}');

while(i--){pos.unshift(head[i].offsetTop)}

scr.onscroll=function(){
  var top = scr.scrollTop;
  var i=len;
  while(i--&&top<pos[i]);
  last.removeAttribute('style');
  last=head[i];
  if(top<=pos[i+1]-headerHeight) last.style.position='absolute';
  else last.style.top=pos[i+1]-pos[i]-headerHeight+'px';
}
})()
</script>
</body>
</html>

В ие не работает, но подгонять лень, кому надо пусть тот и мучается)

DjDiablo 10.11.2011 21:04

Работает только вверх, да и то на половину(исчезающий верхний заголовок оказывается в середине). Тестил в хроме.

trikadin 10.11.2011 21:07

Ну он же обещал версию, работающую в firefox. ;)

ksa 10.11.2011 21:08

И опять же, это ведь бесплатный вариант... :lol:

DjDiablo 10.11.2011 21:10

В фаерфоксе нормуль ))
Можно сказать отработал 6000/ на количество не поддерживаемых браузеров :lol:

ksa 10.11.2011 21:13

В Опере полная фигня... :(

Aetae 10.11.2011 21:18

Цитата:

Сообщение от ksa (Сообщение 135782)
В Опере полная фигня... :(

Я отвечаю тока за фф. =)
Но по идее особой разницы в хроме и опере быть не должно. Нет под рукой проверить, потому не виноватая я.)

Мугу отрыть ещё более сырую, ужасную вресию, которая вроде работало в опере и хроме. Но хз, помойму она не сохранилась)

trikadin 10.11.2011 21:40

Цитата:

Сообщение от DjDiablo
Можно сказать отработал

А может, он не за час сделал. :p

Aetae 10.11.2011 21:49

2 джня корпел!!!111одынодын

trikadin 10.11.2011 21:54

Ну всё тогда) Что ж ты свои же условия только на половину выполняешь?)

Aetae 10.11.2011 21:56

Это шутка юмора)
В голове все было готово ещё когда говорил о часе, тогда же и написано.)


Часовой пояс GMT +3, время: 17:48.