javascript - CSS 表格 - 鼠标悬停在 3 个表格上的颜色效果
问题描述
我有 3 张桌子,里面有信息。在将鼠标悬停在列上时,行会被着色。这对每个表都非常适用,但我希望这样:
如果我的鼠标在表 1 中的字段 3 上,不仅要使表 1 中的字段 3 着色,还要在表 2 和表 3 中着色。
table {
overflow: hidden;
}
tr:hover {
background-color: #ffa;
}
td,
th {
position: relative;
width: 50px;
height: 20px;
text-align: center;
}
td:hover::after,
th:hover::after {
content: "";
position: absolute;
background-color: #ffa;
left: 0;
top: -5000px;
height: 10000px;
width: 100%;
z-index: -1;
}
Table 1
<table border=1>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>mouse over on this field</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>
Table 2
<table border=1>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>should also color this field</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>
Table 3
<table border=1>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>and this one</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>
解决方案
使用 jQuery index()
,您可以获取悬停单元格的行索引和列索引,并将一个类添加到其他表中的相应单元格
const $tables = $('table')
$('td, th').hover(function() {
const $cell = $(this),
$row = $cell.parent(),
$table = $cell.closest('table'),
cIdx = $cell.index(),
rIdx = $row.index();
$tables.not($table).each(function() {
$(this).find('tr').eq(rIdx).children().eq(cIdx).addClass('activeCell');
});
}, function() {
$('.activeCell').removeClass('activeCell')
})
table {
overflow: hidden;
}
.activeCell,
tr:hover {
background-color: #ffa;
}
td,
th {
position: relative;
width: 50px;
height: 20px;
text-align: center;
}
td:hover::after,
th:hover::after {
content: "";
position: absolute;
background-color: #ffa;
left: 0;
top: -5000px;
height: 10000px;
width: 100%;
z-index: -1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Table 1
<table border=1>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>mouse over on this field</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>
Table 2
<table border=1>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>should also color this field</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>
Table 3
<table border=1>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>and this one</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>
</table>
推荐阅读
- google-api - Google 登录同意页面未针对我的应用程序请求的所有范围请求许可
- c++ - Windows 控制台调整大小被忽略 - 屏幕缓冲区搞砸了
- python - for循环中某些值的条件(Python pandas)
- java - 发布密钥无法与已部署的应用程序一起使用
- javascript - 访问 localstorage 中的 `access_token` 属性
- sql-server - 按日期查找 SQL Server 查询?
- reference - 未解决的参考:openRawResource
- python - 无法使用装饰器创建动态方法
- rapidclipse - 如何修复错误“类型 entityClass_ 已定义?
- java - 如何保护 JpaRepository