- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的表是这样的:
我写了一点 CSS,所以当我将鼠标悬停在 15 年抵押栏下的特定字段上时,30 年抵押下的相应单元格也会悬停。
td:hover, td:hover + td + td + td + td {
background-color: grey;
}
这在我选择 15 年抵押贷款字段时效果很好,但在我选择 30 年抵押贷款字段时效果不佳。也就是说,它在另一个方向上不起作用。
表结构非常简单:
<thead>
<tr>
<th colSpan='1' />
<th colSpan='4'>15 year</th>
<th colSpan='4'>30 year</th>
</tr>
<tr>
<th colSpan='1' />
<th>Mortgage Payment</th>
<th>Investment Payment</th>
<th>Loan Amount</th>
<th>Investment Amount</th>
<th>Mortgage Payment</th>
<th>Investment Payment</th>
<th>Loan Amount</th>
<th>Investment Amount</th>
</tr>
</thead>
<tbody>
<tr>
<td>Year x</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
</tr>
...
</tbody>
我已经读到有 no "previous sibling" selector in CSS所以我正在寻找不同的解决方案。如果纯 CSS 无法完成工作,JavaScript 解决方案也不错。
最佳答案
这是一个只有 javascript 的解决方案。您可以使用类和 classList
,然后使用 add
和 remove
函数。使用 jQuery,这可以进一步简化。在这里我假设它总是第 4 列是相似的。为了使其更通用,您可以相应地调整代码..
仅限 JavaScript 的解决方案
window.onload = function() {
tdElems = document.getElementsByTagName('td')
tdElems = Array.prototype.slice.call(tdElems);
tdElems.forEach((elem) => {
elem.addEventListener('mouseleave', function($event) {
tdElems.forEach((td) => {
td.style.background = 'white';
})
});
elem.addEventListener('mouseover', function($event) {
showHover($event.target);
});
})
}
function showHover(elem) {
parent = elem.parentElement;
for (i = 0; i < parent.children.length; i++) {
if (parent.children[i] === elem) {
elem.style.background = 'lightgray';
if (parent.children[i + 4]) {
parent.children[i + 4].style.background = 'lightgray';
} else if (parent.children[i - 4]) {
parent.children[i - 4].style.background = 'lightgray';
}
break;
}
}
}
<table>
<thead>
<tr>
<th colSpan='1' />
<th colSpan='4'>15 year</th>
<th colSpan='4'>30 year</th>
</tr>
<tr>
<th colSpan='1' />
<th>Mortgage Payment</th>
<th>Investment Payment</th>
<th>Loan Amount</th>
<th>Investment Amount</th>
<th>Mortgage Payment</th>
<th>Investment Payment</th>
<th>Loan Amount</th>
<th>Investment Amount</th>
</tr>
</thead>
<tbody>
<tr>
<td>Year x</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
</tr>
<tr>
<td>Year x</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
</tr>
</tbody>
</table>
jQuery 解决方案
$(document).ready(function() {
$('td').hover(function($event) {
$('td').removeClass('hovered');
$(this).addClass('hovered');
const parent = this.parentElement;
var index = Array.from(parent.children).indexOf(this);
if (parent.children[index + 4]) {
$(parent.children[index + 4]).addClass('hovered');
} else if (parent.children[index - 4]) {
$(parent.children[index - 4]).addClass('hovered');
}
}, function() {
$('td').removeClass('hovered');
});
})
.hovered {
background: lightgray;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th colSpan='1' />
<th colSpan='4'>15 year</th>
<th colSpan='4'>30 year</th>
</tr>
<tr>
<th colSpan='1' />
<th>Mortgage Payment</th>
<th>Investment Payment</th>
<th>Loan Amount</th>
<th>Investment Amount</th>
<th>Mortgage Payment</th>
<th>Investment Payment</th>
<th>Loan Amount</th>
<th>Investment Amount</th>
</tr>
</thead>
<tbody>
<tr>
<td>Year x</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
</tr>
<tr>
<td>Year x</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
<td>value</td>
</tr>
</tbody>
</table>
希望这有帮助:)
关于javascript - 同时悬停 2 个表格单元格,在两个方向上彼此相隔 4 个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57881615/
我已经尝试在我的 CSS 中添加一个元素来删除每三个 div 的 margin-right。不过,似乎只是出于某种原因影响了第 3 次和第 7 次。需要它在第 3、6、9 等日工作... CSS .s
如何使 div/input 闪烁或“脉冲”?例如,假设表单字段输入了无效值? 最佳答案 使用 CSS3 类似 on this page ,您可以将脉冲效果添加到名为 error 的类中: @-webk
我目前正在尝试构建一个简单的 wireframe来自 lattice 的情节包,但由沿 y 轴的数百个点组成。这导致绘图被线框网格淹没,您看到的只是一个黑色块。我知道我可以用 col=FALSE 完全
在知道 parent>div CSS 选择器在 IE 中无法识别后,我重新编码我的 CSS 样式,例如: div#bodyMain div#paneLeft>div{/*styles here*/}
我有两个 div,一个在另一个里面。当我将鼠标悬停 到最外面的那个时,我想改变它的颜色,没问题。但是,当我将鼠标悬停 到内部时,我只想更改它的颜色。这可能吗?换句话说,当 将鼠标悬停到内部 div 上
我需要展示这样的东西 有人可以帮忙吗?我可以实现以下输出 我正在使用以下代码:: GridView.builder( scrollDirection: Axis.vertical,
当 Bottom Sheet 像 Android 键盘一样打开时,是否有任何方法可以手动上推布局( ScrollView 或回收器 View 或整个 Activity )?或者你可以说我想以 Bott
我有以下代码,用于使用纯 HTML 和 CSS 显示翻转。当您将鼠标悬停在文本上时,它会更改左右图像。 在我测试的所有浏览器中都运行良好,Safari 4 除外。据我收集的信息,Safari 4 支持
我构建了某种 CMS,但在使用 TinyMCE 和 Bootstrap 时遇到了一些问题。 我有一个页面,其中概述了一个 div,如果用户单击该 div,他们可以从模态中选择图像。该图像被插入到一个
出于某种原因,当我设置一个过渡时,当我的鼠标悬停在一个元素上时,背景会改变颜色,它只适用于一个元素,但它们都共享同一个类?任何帮助我的 CSS .outer_ad { position:rel
好吧,这真的很愚蠢。我不知道 Android Studio 中的调试监视框架发生了什么。我有 1.5.1 的工作室。 是否有一些来自 intellij 的 secret 知识来展示它。 最佳答案 与以
我有这个标记: some code > 我正在尝试获取此布局: 注意:上一个和下一个按钮靠近#player 我正在尝试这样: .nextBtn{
网站:http://avuedesigns.com/index 首页有 6 个菜单项。我希望每件元素在您经过时都有自己的颜色。 这是当您将鼠标悬停在 div 上时将所有内容更改为白色的行 li#hom
我需要在 index.php 文件中显示它,但没有任何效果。我所有的文章都没有正确定位。我将其用作代码: 最佳答案 您可以首先检查您
我是一名优秀的程序员,十分优秀!