如何使用纯Javascript,没有插件冻结我的表的第一行?

时间:2013-04-05 09:49:03

标签: javascript html css html-table tableheader

我只需要在最新版本的Google Chrome中使用此表(因此无需担心跨浏览器解决方案,例如旧版本的IE等)。

我正在寻找一个冻结第一行并没有取得任何成功的解决方案。如果我在此CSS relative中排除单词position: fixed relative;,则标题行会叠加在一起。滚动时,不确定如何让标题保持在屏幕顶部。

表格代码

<html>
<head>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
<script type="text/javascript">

$(document).ready(function(){
    $( "#status_report .measure[data-bg='1']").css('background', 'red');
    $( "#status_report .measure[data-bg='2']").css('background', 'grey');
    $( "#status_report .measure[data-bg='3']").css('background', 'yellow');
    $( "#status_report .measure[data-bg='4']").css('background', 'green');
});

</script>
<style type="text/css">
th{
    position: fixed relative;
    background:#111;
    color:#fff;
    padding: 2px;
}
td
{
    background:#ddd;
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    padding: 2px;
}
</style>
</head>
<body>
<table id="status_report">
<tr>
    <th>field1</th>
    <th>field2</th>
    <th>field3</th>
</tr>
<tr>
<?php foreach( $data as $row ) : ?>
<tr>
    <td><?php echo $row['field1']; ?></td>
    <td class = "measure" data-bg="<?php echo $row['field2']; ?>"><?php echo $row['field2']; ?></td>    
    <td class = "measure" data-bg="<?php echo $row['field3']; ?>"><?php echo $row['field3']; ?></td>        
</tr>
<? endforeach;
$dbh = null; ?>
</table>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

您可以为此定义JScrollpane。

但是如果用户不在JScrollPane的焦点之内,它将无法工作。 因此,如果用户位于JScrollPane之外并重置位置,则可以捕获onscroll事件。

以下是此示例:

http://christian-illies.info/2011/11/javascript-scrollbalken-mit-jscrollpane/

答案 1 :(得分:0)

position: fixed relative是无效的CSS。当您将某些内容设置为fixed时,其位置会“重置”,就像在中一样,该对象将不会停留在“它假设为的位置”并且将变为相对于文档,因此您需要使用{设置它的位置{1}},top等。

这就是他们堆叠的原因。

Read more about positioning