А почему один-то хедер не будет колонку растягивать?
От rowspan придется отказаться. понял. жаль. ну да ладно. главное, чтобы colspan работал :) а кто-нибудь что-нибудь знает про onmouseover для <col> ? он и не должен отрабатывать? :( |
Цитата:
|
Чего тут сложного. Ставишь mouseover на всю таблицу, вычисляешь event.target/srcElement, находишь какой он по счёту(cellIndex) и меняешь у соответствующего col стиль.)
Кстати допилил чуток велосипед. Теперь он не зависит от ширины скроллбара и свободно растягивается на любую заданную ширину(можно и в процентах). <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <script type="text/javascript">window.onload=function(){ var table=document.getElementsByTagName('table')[0]; var cells=table.rows[table.rows.length-1].cells; var hoverDiv=document.createElement('div'); hoverDiv.style.cssText="position:relative;height:10000px;margin-top:-10000px;background:#ddf;z-index:-1"; table.onmouseover=function(e){ var t=e?e.target:window.event.srcElement; while(t.tagName!='TD'&&t.tagName!='TABLE')t=t.parentNode; if(t.tagName=='TD') { cells[t.cellIndex].appendChild(hoverDiv); } } } </script> <style type="text/css"> * {margin:0;padding:0} .fHeader td, .fHeader tr{ border:1px solid #bbb; } .fHeader { padding-top:24px; /* высота загаловка, соот-но если больше 1 строки-увеличить. */ width:100%; /*ширина*/ height:102px; /*высота - 24px на header, -1px на нижний border*/ /* background:#fdfffd; цвет таблицы по дефалту(не совместим с подсветкой колонок =) )*/ font-family: MS Sans serif,Verdana,Arial; border-bottom:1px solid #bbb; position:relative; overflow:hidden; } .fHeaderScroll { border-right:1px solid #bbb; height:100%; overflow:auto; overflow-x:hidden;/*opera fix*/ } .fHeader table { width:100%; border-collapse:collapse; } .fHeaderFix { zoom:1 /*ie fix*/ } .fHeader thead div{ height:0; text-align:left; overflow:hidden; } .fHeader thead div div { height:22px; /* высота загаловка (-2px на border), соот-но если больше 1 строки-увеличить. */ background:#ddd; /*цвет header'a по дефалту*/ border:1px solid #aaa; position:absolute; top:0; width:300%; margin-left:-1px; } .fHeaderTop{ margin-top:-24px; /* высота загаловка */ height:22px; /* высота загаловка (-2px на border) */ border:1px solid #aaa; position:relative; z-index:2; } .fHeader tfoot tr, .fHeader tfoot td { border-bottom:0 } .fHeader thead tr, .fHeader thead td{ border-top:0; } </style> </head> <body> <h3>Таблица спецсимволов html</h3> <div class="fHeader"> <div class="fHeaderTop"> </div> <div class="fHeaderScroll"> <div class="fHeaderFix"> <table> <thead> <tr> <td> <div><div>Имя</div>Имя</div> &nbsp; </td> <td> <div><div>Код</div>Код</div> &#160; </td> <td> <div> <div>Вид</div>Вид</div> </td> <td> <div><div>Описание</div>Описание</div> неразрывный пробел </td> </tr> </thead> <tbody> <tr><td>&iexcl;</td><td>&#161;</td><td>¡</td><td>перевернутый восклицательный знак</td></tr> <tr><td>&cent;</td><td>&#162;</td><td>¢</td><td>цент</td></tr> <tr><td>&pound;</td><td>&#163;</td><td>£</td><td>фунт стерлингов</td></tr> <tr><td>&curren;</td><td>&#164;</td><td>¤</td><td>денежная единица</td></tr> <tr><td>&yen;</td><td>&#165;</td><td>¥</td><td>иена или юань</td></tr> <tr><td>&brvbar;</td><td>&#166;</td><td>¦</td><td>разорванная вертикальная черта</td></tr> <tr><td>&sect;</td><td>&#167;</td><td>§</td><td>параграф</td></tr> <tr><td>&uml;</td><td>&#168;</td><td>¨</td><td>трема (знак над гласной для произнесения ее отдельно от предшествующей гласной; напр., na¨ve)</td></tr> <tr><td>&copy;</td><td>&#169;</td><td>©</td><td>знак copyright</td></tr> <tr><td>&ordf;</td><td>&#170;</td><td>ª</td><td>женский порядковый числитель</td></tr> <tr><td>&laquo;</td><td>&#171;</td><td>«</td><td>левая двойная угловая скобка</td></tr> <tr><td>&not;</td><td>&#172;</td><td>¬</td><td>знак отрицания</td></tr> <tr><td>&shy;</td><td>&#173;</td><td></td><td>место возможного переноса</td></tr> <tr><td>&reg;</td><td>&#174;</td><td>®</td><td>знак зарегистрированной торговой марки</td></tr> <tr><td>&macr;</td><td>&#175;</td><td>¯</td><td>знак долготы над гласным</td></tr> <tr><td>&deg;</td><td>&#176;</td><td>°</td><td>градус</td></tr> </tbody> <tfoot> <tr><td>&bdquo;</td><td>&#8222;</td><td>„</td><td>нижняя двойная кавычка</td></tr> </tfoot> </table> </div> </div> </div> </body> </html> .....upd Ан нет, опера цучко не меняет динамически стиль у col, так что обломчик. .....upd2 Добавил вариант подсветки колонок, не самый лучший, зато самый быстрый в случае больших таблиц.) Велосипеды такие велосипеды. |
Aetae,
Супер-супериор. Мне не хватает навыков для того, чтобы применить технику к своей таблице. она (образно) такова: <table border="1" cellpadding="0" > <tr bgcolor="#ccffcc"><td colspan="2" align="center">ученик</td><td>оценка</td></tr> <tr bgcolor="#ccffcc"><td>Имя</td><td>Фамилиё</td><td> </td></tr> <tr><td>Вася</td><td>Пупкин</td><td>2</td></tr> <tr><td>Степа</td><td>Ступкин</td><td>2</td></tr> <tr><td>Миша</td><td>Печкин</td><td>2</td></tr> <tr><td>Гриша</td><td>Овечкин</td><td>2</td></tr> </table> И вот хотелось бы ей обе стровчки-то и зафиксировать. Фиг с ним с RowSpan, он не так важен, но просто многострочность (два TR) нужна, и объединение заголовков в верхней строке тоже нужно. Видимо, во второй строке тоже как-то дивы надо позиционировать, попадая ровно-ровно под дивы первой строки? |
Для кого комменты ставил?)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <script type="text/javascript">window.onload=function(){ var table=document.getElementsByTagName('table')[0]; var cells=table.rows[table.rows.length-1].cells; var hoverDiv=document.createElement('div'); hoverDiv.style.cssText="position:relative;height:10000px;margin-top:-10000px;background:#ddf;z-index:-1"; table.onmouseover=function(e){ var t=e?e.target:window.event.srcElement; while(t.tagName!='TD'&&t.tagName!='TABLE')t=t.parentNode; if(t.tagName=='TD') { cells[t.cellIndex].appendChild(hoverDiv); } } } </script> <style type="text/css"> * {margin:0;padding:0} .fHeader td, .fHeader tr{ border:1px solid #bbb; } .fHeader { *!* padding-top:47px; /* высота загаловка, соот-но если больше 1 строки-увеличить. */*/!* width:100%; /*ширина*/ height:102px; /*высота - 24px на header, -1px на нижний border*/ /* background:#fdfffd; цвет таблицы по дефалту(не совместим с подсветкой колонок =) )*/ font-family: MS Sans serif,Verdana,Arial; border-bottom:1px solid #bbb; position:relative; overflow:hidden; } .fHeaderScroll { border-right:1px solid #bbb; height:100%; overflow:auto; overflow-x:hidden;/*opera fix*/ } .fHeader table { width:100%; border-collapse:collapse; } .fHeaderFix { zoom:1 /*ie fix*/ } .fHeader thead div{ height:0; text-align:left; overflow:hidden; } .fHeader thead div div { height:22px; /* высота загаловка (-2px на border), соот-но если больше 1 строки-увеличить. */ background:#ddd; /*цвет header'a по дефалту*/ border:1px solid #aaa; position:absolute; top:0; width:300%; margin-left:-1px; } *!*.fHeader div.fHeaderLower {*/!* *!* top:23px;*/!* *!*}*/!* *!* .fHeader div.fHeaderMiddle {*/!* *!* height:45px;/* высота загаловка (-2px на border) */*/!* *!* line-height:45px;*/!* *!*}*/!* *!*.fHeaderTop{*/!* *!* margin-top:-47px; /* высота загаловка */*/!* *!* height:45px; /* высота загаловка (-2px на border) */ */!* border:1px solid #aaa; position:relative; z-index:2; } .fHeader tfoot tr, .fHeader tfoot td { border-bottom:0 } .fHeader thead tr, .fHeader thead td{ border-top:0; } </style> </head> <body> <div class="fHeader"> <div class="fHeaderTop"> </div> <div class="fHeaderScroll"> <div class="fHeaderFix"> <table> <thead> <tr> <td> <div><div>ученик</div></div> <div><div class="fHeaderLower">Имя</div>Имя</div> Вася </td> <td> <div><div class="fHeaderLower">Фамилиё</div>Фамилиё</div> Пупкин </td> <td> <div><div class="fHeaderMiddle">оценка</div>оценка</div> 2 </td> </tr> </thead> <tbody> <tr><td>Степа</td><td>Ступкин</td><td>2</td></tr> <tr><td>Миша</td><td>Печкин</td><td>2</td></tr> <tr><td>Степа</td><td>Ступкин</td><td>2</td></tr> <tr><td>Миша</td><td>Печкин</td><td>2</td></tr> <tr><td>Степа</td><td>Ступкин</td><td>2</td></tr> <tr><td>Миша</td><td>Печкин</td><td>2</td></tr> <tr><td>Степа</td><td>Ступкин</td><td>2</td></tr> <tr><td>Миша</td><td>Печкин</td><td>2</td></tr> </tbody> <tfoot> <tr><td>Гриша</td><td>Овечкин</td><td>2</td></tr> </tfoot> </table> </div> </div> </div> </body> </html> |
Цитата:
Спасибо!! Буду тестить. |
Ну они какбэ очевидны.)
|
Всё основано на том что элемнты с position:absolute отсчитывает вою позицию от ближайшего родителя с position отличной от static(по умолчанию)
<style type="text/css">div {border:1px solid #050;padding:1px;}</style> <div style="position:relative"> relative <div style="overflow:auto;height:80px"> обычный <span style="position:absolute;top:0">/absolute/</span> текст <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> </div> </div> |
Цитата:
|
немного актуален. если можно, ссылку, пожалуйста, я поглядел бы.
|
Часовой пояс GMT +3, время: 05:02. |