是否可以划掉 HTML table 中的单元格?
Is it possible to cross out cells in an HTML table?
我想创建一个 HTML table,我可以在其中划掉单元格,如下图所示:
我最初想在单元格中做一个 CSS 直角三角形,但我不知道如何只给斜边上色,而不给其他两条边或三角形本身上色。
换句话说,我想做的事情是否可行?
制作带有对角线的图像,然后将该图像拉伸 100% 的单元格宽度和高度是否最有意义?
谢谢
好吧,这有点老套,但它确实有效。
利用 linear-gradient
对当前单元格使用background-image
,在内容下方划线
table
{
min-width: 100%;
}
table td
{
border: 1px solid silver;
position: relative;
}
table td.crossed
{
background-image: linear-gradient(to bottom right, transparent calc(50% - 1px), red, transparent calc(50% + 1px));
}
<table>
<tbody>
<tr>
<td>Content</td>
<td>Content</td>
<td>Content</td>
</tr>
<tr>
<td>Content</td>
<td class="crossed">Content</td>
<td>Content</td>
</tr>
</tbody>
</table>
使用伪元素删除 table 单元格内容
如果要在单元格的内容上加上删除线,也可以使用伪元素,像这样:
table
{
min-width: 100%;
}
table td
{
border: 1px solid silver;
position: relative;
}
table td.crossed::after
{
position: absolute;
content: "";
left:0;
right:0;
top:0;
bottom:0;
background-image: linear-gradient(to bottom right, transparent calc(50% - 1px), red, transparent calc(50% + 1px));
}
<table>
<tbody>
<tr>
<td>Content</td>
<td>Content</td>
<td>Content</td>
</tr>
<tr>
<td>Content</td>
<td class="crossed">Content</td>
<td>Content</td>
</tr>
</tbody>
</table>
<style>
td.diagonalRising
{
background: linear-gradient(to right bottom, #ffffff 0%,#ffffff
49.9%,#000000 50%,#000000 51%,#ffffff 51.1%,#ffffff 100%);
}
td.diagonalFalling
{
background: linear-gradient(to right top, #fff 0%,#fff 49.9%,#000000
50%,#000000 51%,#fff 51.1%,#fff 100%);
}
<style>
以上link将为您做进一步的解释。它还支持所有方向,垂直、水平或对角线。
你为什么不简单地使用 backgroundImage: 'linear(to bottom right, black)'
(反应风格属性)??
我想创建一个 HTML table,我可以在其中划掉单元格,如下图所示:
我最初想在单元格中做一个 CSS 直角三角形,但我不知道如何只给斜边上色,而不给其他两条边或三角形本身上色。
换句话说,我想做的事情是否可行?
制作带有对角线的图像,然后将该图像拉伸 100% 的单元格宽度和高度是否最有意义?
谢谢
好吧,这有点老套,但它确实有效。
利用 linear-gradient
对当前单元格使用background-image
,在内容下方划线
table
{
min-width: 100%;
}
table td
{
border: 1px solid silver;
position: relative;
}
table td.crossed
{
background-image: linear-gradient(to bottom right, transparent calc(50% - 1px), red, transparent calc(50% + 1px));
}
<table>
<tbody>
<tr>
<td>Content</td>
<td>Content</td>
<td>Content</td>
</tr>
<tr>
<td>Content</td>
<td class="crossed">Content</td>
<td>Content</td>
</tr>
</tbody>
</table>
使用伪元素删除 table 单元格内容
如果要在单元格的内容上加上删除线,也可以使用伪元素,像这样:
table
{
min-width: 100%;
}
table td
{
border: 1px solid silver;
position: relative;
}
table td.crossed::after
{
position: absolute;
content: "";
left:0;
right:0;
top:0;
bottom:0;
background-image: linear-gradient(to bottom right, transparent calc(50% - 1px), red, transparent calc(50% + 1px));
}
<table>
<tbody>
<tr>
<td>Content</td>
<td>Content</td>
<td>Content</td>
</tr>
<tr>
<td>Content</td>
<td class="crossed">Content</td>
<td>Content</td>
</tr>
</tbody>
</table>
<style>
td.diagonalRising
{
background: linear-gradient(to right bottom, #ffffff 0%,#ffffff
49.9%,#000000 50%,#000000 51%,#ffffff 51.1%,#ffffff 100%);
}
td.diagonalFalling
{
background: linear-gradient(to right top, #fff 0%,#fff 49.9%,#000000
50%,#000000 51%,#fff 51.1%,#fff 100%);
}
<style>
以上link将为您做进一步的解释。它还支持所有方向,垂直、水平或对角线。
你为什么不简单地使用 backgroundImage: 'linear(to bottom right, black)'
(反应风格属性)??