Абсолютная позиция thead не работает в IE7
Я пытаюсь исправить заголовок таблицы при прокрутке вниз по страницам. Проблема в IE7, thead не являются абсолютными, но показывают в "правильных" позициях. Надо летать над столом. Он отлично работает в FireFox 11
У меня есть структура таблицы следующим образом:
<span id="MyTable">
<table border="0" cellpadding="2" cellspacing="2" width="100%">
<thead class="tableFloatingHeader">
<tr>
<th>t</th>
<th>t</th>
<th>t</th>
<th>t</th>
<th>t</th>
<th>t</th>
</tr>
<tr>
<td><b>Total</b></td>
<td></td>
<td align="right"><b>2</b></td>
<td align="right"><b>2</b></td>
<td align="right"><b>2</b></td>
<td align="right"><b>2</b></td>
</tr>
</thead>
<thead class="tableFloatingHeaderOriginal">
<tr>
<th>t</th>
<th>t</th>
<th>t</th>
<th>t</th>
<th>t</th>
<th>t</th>
</tr>
<tr>
<td><b>Total</b></td>
<td></td>
<td align="right"><b>2</b></td>
<td align="right"><b>2</b></td>
<td align="right"><b>2</b></td>
<td align="right"><b>2</b></td>
</tr>
</thead>
CSS
.tableFloatingHeader {
overflow: hidden;
position: absolute;
top: 0;
display: none;
left: auto;
background-color: red;
}
JQuery
<script type="text/javascript">
function UpdateTableHeaders() {
$("div.divTableWithFloatingHeader").each(function() {
var originalHeaderRow = $(".tableFloatingHeaderOriginal");
var floatingHeaderRow = $(".tableFloatingHeader");
var offset = $(this).offset();
var scrollTop = $(window).scrollTop();
if ((scrollTop > offset.top) && (scrollTop < offset.top + $(this).height())) {
floatingHeaderRow.css("display", "block");
floatingHeaderRow.css("top", Math.min(scrollTop - offset.top, $(this).height() - floatingHeaderRow.height()) + "px");
// Copy cell widths from original header
$("th", floatingHeaderRow).each(function(index) {
var cellWidth = $("th", originalHeaderRow).eq(index).css('width');
$(this).css('width', cellWidth);
});
// Copy row width from whole table
floatingHeaderRow.css("width", $(this).css("width"));
}
else {
floatingHeaderRow.css("display", "none");
floatingHeaderRow.css("top", "0px");
}
});
}
UpdateTableHeaders();
$(window).scroll(UpdateTableHeaders);
$(window).resize(UpdateTableHeaders);
</script>
1 ответ
Решение
Это может помочь вам, в основном добавить условный стиль выражения CSS для IE7. Я не люблю использовать выражения, но IE7 - другое животное.
thead tr {
position: relative;
top: expression(this.offsetParent.scrollTop);
}
Изменить * Неправильный URL