javascript-将鼠标悬停在同一表格的另一行时,更改表格行的背景颜色
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-将鼠标悬停在同一表格的另一行时,更改表格行的背景颜色,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4298字,纯文字阅读大概需要7分钟。
内容图文
![javascript-将鼠标悬停在同一表格的另一行时,更改表格行的背景颜色](/upload/InfoBanner/zyjiaocheng/675/7c1f8931cd234423bcfef6cd8d2175b5.jpg)
这是我的第一篇文章,我绝不是一个熟练的HTML / CSS / JavaScript程序员,所以如果我对自己的表述不够清楚,请多多包涵-太罗y了!
我正在为表格内容使用经典的HTML表格,并且希望能够更改与我当前所悬停的行不同的背景色.
这样做的原因是,我有许多表分为“子表”,每个表都有自己的标题和下面的一个或多个行.但是,这些子表(都具有相同的样式)没有被编码为表,而是我仅使用不同的类来为其设置样式(这主要是因为它们是如此之小,每个incl标头都有1-6行).
我想做的是,一旦将任何子表的标题和行都悬停了,就应该改变背景色(后者很容易用CSS实现).由于可以在网上找到JavaScript,因此我设法实现了这一点-请参见sample code,它可能会对此做更好的解释,另请参见下面的代码-但是,每个子标题都需要一个唯一的ID. (请注意,每个子表使用单独的tbody-如果将onMouseover事件应用于每行,则当从一行悬停到另一行时,子标题的颜色会闪烁/不停闪烁-这在CSS中永远不会发生,但是仅使用JavaScript-当然还要创建更多代码.)
无需为每个子标题分配唯一的ID,我想要一个使用类的解决方案,而是看到每个子表都使用相同的ID(我当然会为tbody分配一个类).我想其中的棘手部分可能是确保仅影响当前子表的标题,而不是同时影响所有子表的标题.
如果更容易创建一个解决方案,其中每个子表实际上都编码为一个单独的表(从语义的角度来看可能还更好?),请这样做.当然,更好的情况是JavaScript本身是否应用了onMouseover等事件,这样我就不必将其放入每个子表的内联代码中-我已经知道可以为按钮等完成此操作我想这样做是有可能的.
我从未使用过jQuery,因此更希望使用纯JavaScript解决方案.
再次获取示例代码,请参见my fiddle
非常感谢您的投入!
JavaScript:
function changeTo(myId) { document.getElementById(myId).className='sub-header-highlight'; }
function changeBack(myId) { document.getElementById(myId).className='sub-header'; }
CSS:
thead { color: #FFF; background: #000; }
.sub-header { color: #FFF; font-weight: bold; background: #F00; }
.sub-header-highlight { color:# FFF; font-weight: bold; background: #0F0; }
tr.sub-header:hover { background: #0F0; } /* if JS turned off */
.sub-row1 { color: #000; background: #FFF; }
.sub-row2 { color: #000; background: #EEE; }
tr.sub-row1:hover, .sub-row2:hover { background: #FF0; }
HTML的一部分:
<tbody onm ouseover="changeTo('sub1');" onm ouseout="changeBack('sub1');">
<tr class="sub-header" id="sub1">
<td>Sub-Header 1</td>
</tr>
<tr class="sub-row1">
<td>Contents of row 1</td>
</tr>
<tr class="sub-row2">
<td>Contents of row 2</td>
</tr>
<tr class="sub-row1">
<td>Contents of row 3</td>
</tr>
</tbody>
解决方法:
您可以极大地简化HTML标记和CSS,并且不需要使用Javascript.
>首先,除备用行样式外,所有类都可以列出(除非您不关心IE 8及以下版本,在这种情况下,您可以取出IE条件CSS和类名.请参见browser CSS selector compatibility chart.)
>其次,将子标题中的每个td更改为th.
>第三,在父tbody上使用:hover伪选择器来设置th的样式.
请参阅此working in a jsfiddle,经过测试可在IE 7和Firefox 14中完美运行.
这是CSS:
table { border-collapse:collapse; }
thead { color: #FFF; background-color: #000; }
tbody th { color: #FFF; font-weight: bold; background-color: #F00; text-align:left; }
tbody:hover th { background: #0F0; }
tbody tr:nth-child(odd) { background-color:#EEE; }
tbody tr:hover td { background: #FF0; }
样式注释:
> CSS属性“ background”不仅需要颜色,还需要重置其他属性.只要您要设置样式,就使用“背景色”.
> tr:hover上需要额外的td,以使特异性规则使IE的优先级高于奇数行的特殊着色.
>“奇数”行实际上是数据的偶数行,因为子标题占用了第一个奇数行.
>使用CSS border-collapse:collapse代替直接在表格上的单元格间距.
我必须将IE的条件CSS放在小提琴的HTML部分中,因为它必须在样式标签之外.
<!--[if lte IE 8]>
<style type="text/css">
tbody tr.odd { color: #000; background: #EEE; }
</style>
<![endif]-->
这是HTML.看看现在有多干净?
<table>
<thead>
<tr>
<th>MAIN HEADER</th>
</tr>
</thead>
<tbody>
<tr>
<th>Sub-Header 1</th>
</tr>
<tr>
<td>Contents of row 1</td>
</tr>
<tr class="odd">
<td>Contents of row 2</td>
</tr>
<tr>
<td>Contents of row 3</td>
</tr>
</tbody>
<tbody>
<tr>
<th>Sub-Header 2</th>
</tr>
<tr>
<td>Contents of row 1</td>
</tr>
</tbody>
<tbody>
<tr>
<th>Sub-Header 3</th>
</tr>
<tr>
<td>Contents of row 1</td>
</tr>
<tr class="odd">
<td>Contents of row 2</td>
</tr>
</tbody>
</table>
最后,我意识到这些颜色可能只是示例,因此我是否建议明亮的原色不能很好地适应人类的认知反应?您可以选择一种突出显示效果.请参阅我为您整理的a working example,使用(在我看来)更悦目的颜色.当您将鼠标悬停在该部分上时,会看到该部分如何“发光”?美丽!
注意:在IE8及更高版本中,右侧将有一个额外的边框.如果您有一个多列表,并且喜欢内部边框,并且想要支持IE8及以下版本,则需要在每行的最后一个单元格中添加一个类,以便可以删除其右边框.
内容总结
以上是互联网集市为您收集整理的javascript-将鼠标悬停在同一表格的另一行时,更改表格行的背景颜色全部内容,希望文章能够帮你解决javascript-将鼠标悬停在同一表格的另一行时,更改表格行的背景颜色所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。