PHP & CSS:如何为表格的每一行获得悬停效果?

Posted

技术标签:

【中文标题】PHP & CSS:如何为表格的每一行获得悬停效果?【英文标题】:PHP & CSS: How to get hover effect for each row of a table? 【发布时间】:2012-08-28 15:20:28 【问题描述】:

我正在使用此代码来显示事件。每个事件都是可点击的,但我真的需要一个背景色悬停效果。也许没有 javascript 也可以?

<table class="tableLine">
<tr>
<th>Wann?</th>
<th>Was?</th>
<th>Wer?</th>
<th>Wo?</th>
</tr>

<?php
$all_events = array();
$ten_events = array();

for($i = 0; $events = mysql_fetch_object($events_resource); $i++)

if($i < 9)

    $ten_events[] = $events;



$all_events[] = $events;

  

$i = 0;

foreach($ten_events as $event) 

$row = $i % 2;

echo "<tr onclick=\"window.location.href = '?page=single_event&amp;id=$event->id'\" style=\"cursor: pointer;\">
        <td class='row_$row'>$event->de_date</td></a>
        <td class='row_$row'>$event->category</td>
        <td class='row_$row'>$event->who</td>
        <td class='row_$row'>$event->location</td>
      </tr>";

$i++;

 
?>

CSS

这是我的行的 CSS 代码。

.tableLine 
font-family: Verdana,Arial,sans-serif;
font-weight: normal;
font-size: 10px;
width: 614px;
border: 0;
padding: 0;
border-spacing: 0;
text-align: left;


.tableLine th 
background-color: #990000;
color: #f3f2ea;
font-weight: bold;


.row_0 
background-color: #424140;
padding: 3px 5px 3px 5px;
color: #f3f2ea;


.row_1 
background-color: #555352;
padding: 3px 5px 3px 5px;
color: #f3f2ea;


.tableLine tr:hover 
background: #990000;

【问题讨论】:

tr:hover 不适合你吗? 我想你的意思是tr:hover。他说的是每一行,而不是每个单元格。 @Mike,已编辑,谢谢。 我更新了两个代码。我为 tableline-class 尝试了 tr:hover,但它不起作用。 我添加了 tr:hover 代码,但它不起作用。 【参考方案1】:

使用 CSS:

 tr:hover  background: #CCC;  

【讨论】:

我试过了:.tableLine tr:hover background-color: #990000; 这对我不起作用。 您使用的是旧版本的 Internet Explorer 吗?【参考方案2】:

试试这个:

    td 中删除class='row_$row' 并将其放到tr 标签中 然后替换这部分 css:

/**/

.row_0 
background-color: #424140;
padding: 3px 5px 3px 5px;
color: #f3f2ea;


.row_1 
background-color: #555352;
padding: 3px 5px 3px 5px;
color: #f3f2ea;

用这个:

.row_0 
   background-color: #424140;


.row_1 
   background-color: #555352;


.row_0:hover, .row_1:hover 
   background-color: #EEE; /* highlight row */


.tableLine tr td 
   padding: 3px 5px 3px 5px;
   color: #f3f2ea;

【讨论】:

谢谢。一个小问题:是否可以删除这个 onclick-JavaScript?这对我来说是一个糟糕的解决方案。如果 JavaScript 被禁用,任何人都无法点击链接。 我知道一种方法:在每个td 中放置一个a 标签。不是最好的解决方案,但至少它可以在没有 javascript 的情况下工作。 :P 我明白了,它并不完美,因为它只能在文本上点击,因为如果禁用 JavaScript,则填充区域不可点击。但总比没有好。如果有人知道更好的解决方案:请随时发布。谢谢! 也许您可以将填充添加到a 标记,而不是在td 中设置填充? 因为锚标签默认是内联元素。您需要将其display 样式设置为block【参考方案3】:

尝试使用CSS

table tr:hoverbackground:#eee;​

【讨论】:

【参考方案4】:

如果您还想突出显示每一列,您可以为每一列 td 赋予一个独特的类,并使用如下所示的内容。 (jQuery)

$("td").hover(
    // Mouse Over Function
    function () 
        $('.'+$(this).attr('class')).each(function() 
            $(this).css("background","#FAFAFA");
        );
        $(this).parent().children("td").each(function() $(this).css("background","#FAFAFA"));
        $(this).css("background","#FAEEFA");
    ,
    // Mouse Out Function
    function () 
        $('.'+$(this).attr('class')).each(function() 
            $('.'+$(this).attr('class')).css("background","#FFFFFF");
        );
        $(this).parent().children("td").each(function() $(this).css("background","#FFFFFF"));
    );

【讨论】:

我不怀疑这会起作用,但是你为什么要使用臃肿的 jQuery 来做一个简单的悬停背景更改? @Mike 我找不到仅使用 html 和 css 突出显示该列的方法。如果有办法请告诉我。 OP 说的是“行”而不是“列”。 是的,但是答案已经给出了,尽管我会增加一些价值。请注意,我以“如果您也...”开头,只是认为有一天有人会发现它有帮助

以上是关于PHP & CSS:如何为表格的每一行获得悬停效果?的主要内容,如果未能解决你的问题,请参考以下文章

如何为表格中的每一行创建一个删除按钮?

如何为表格的每一行放置一个表格

如何为表格的每一行创建展开/折叠功能?角6

Power Query:如何为列表中的每一行添加列

SQL:如何为一列中具有重复值的每组行选择一行?

如何为每一行创建 HTML 表格按钮并将第一列的值输入到 Flask 函数进行查询