Html 我可以使用CSS给表格列着色而不给单个单元格着色吗?

Html 我可以使用CSS给表格列着色而不给单个单元格着色吗?,html,css,Html,Css,有没有一种方法可以使列的跨度一直向下。请参见下面的示例: 发动机 引擎 汽车 身体 1. 2. 3. 4. 5. 6. 7. 7. 1. 2. 3. 4. 5. 6. 是的,您可以。。。使用元素: .grey{ 背景色:rgba(128128,.25); } 瑞德先生{ 背景色:rgba(255,0,0,25); } 蓝先生{ 背景色:rgba(0,0255,25); } # 颜色1 颜色2 1. 红色 红色 红色 蓝色 2. 红色 红色 红色 蓝色 您可以使用第n个子项的选择器: t

有没有一种方法可以使列的跨度一直向下。请参见下面的示例:


发动机
引擎
汽车
身体
1.
2.
3.
4.
5.
6.
7.
7.
1.
2.
3.
4.
5.
6.
是的,您可以。。。使用元素:

.grey{
背景色:rgba(128128,.25);
}
瑞德先生{
背景色:rgba(255,0,0,25);
}
蓝先生{
背景色:rgba(0,0255,25);
}

#
颜色1
颜色2
1.
红色
红色
红色
蓝色
2.
红色
红色
红色
蓝色

您可以使用第n个子项的
选择器:

tr td:n个孩子(2),
tr td:第n个孩子(3){
背景:#ccc;
}

标题1
标题2
第1栏
第2栏
第3栏
第1栏
第2栏
第3栏
第1栏
第2栏
第3栏

我将使用
第n个子类
css伪类:

tr td:nth-child(2), tr th:nth-child(2), tr td:nth-child(3), tr td:nth-child(4), tr th:nth-child(4), tr td:nth-child(6), tr td:nth-child(7){
    background-color: #DDD;
}
tr td:n个孩子(2),
第四名:第n名儿童(2),
tr td:n第n个孩子(3),
tr td:第n个孩子(4),
第四名:第n名儿童(4),
tr td:n第n个孩子(6),
tr td:第n个孩子(7){
背景色:#DDD;
}

发动机
引擎
汽车
身体
1.
2.
3.
4.
5.
6.
7.
7.
1.
2.
3.
4.
5.
6.

以下机具是第n个子选择器,应该可以工作

<style type="text/css">
    th:nth-child(2),
    th:nth-child(4)
    {
        background-color: rgba(255, 0, 0, 1.0);
    }

    td:nth-child(2), 
    td:nth-child(3),
    td:nth-child(4),
    td:nth-child(6),
    td:nth-child(7)
    {
        background-color: rgba(255, 0, 0, 0.5);
    }
</style>

第n个孩子(2),
第四名:第四名儿童(4)
{
背景色:rgba(255,0,0,1.0);
}
td:N个孩子(2),
td:N个孩子(3),
td:N个孩子(4),
td:N个孩子(6岁),
运输署:第n名儿童(7)
{
背景色:rgba(255,0,0,0.5);
}

通常最简单的方法是设置单元格的样式(如果需要,可以按列),但是可以用不同的方式设置列的样式。一种简单的方法是在
colgroup
元素中包装列,并在其上设置样式。例如:


.x{
背景色:#DDD
}
发动机
引擎
汽车
身体
1.
2.
3.
4.
5.
6.
7.
7.
1.
2.
3.
4.
5.
6.

使用第n个子表达式的我的版本:

使用层叠规则的CSS概念,首先给单元格着色,然后给想要透明的单元格着色。第一个选择器选择第一个单元格之后的所有单元格,第二个选择器选择第五个要透明的单元格


/*有色的*/
td:n子(n+2){背景色:#ddd}
/*未着色*/
td:n子(5){背景色:透明}
发动机
引擎
汽车
身体
1.
2.
3.
4.
5.
6.
7.
7.
1.
2.
3.
4.
5.
6.
您可以使用CSS3:


.表td:第n种类型(1){
背景:红色;
}
.表td:第n种类型(5){
背景:蓝色;
}
.表td:第n种类型(3){
背景:绿色;
}
.表td:第n种类型(7){
背景:石灰;
}
.表td:第n种类型(2){
背景:天蓝色;
}
.表td:第n种类型(4){
背景:黑暗;
}
.表td:第n种类型(6){
背景:海军;
}
样式表:
1.
2.
3.
4.
5.
6.
7.
7.
1.
2.
3.
4.
5.
6.

未设置样式的表格: 1. 2. 3. 4. 5. 6. 7. 7. 1. 2. 3. 4. 5. 6.
这是一个老问题,有很多很好的答案。只想添加尚未提及的
-n
第n个子项
选择器。它们在将CSS应用于多列时很有用,但在设置样式之前可能不知道列的数量,或者有多个不同宽度的表

/* Select the first two */
table tr td:nth-child(-n + 2) {
  background-color: lightblue;
}

/* Select all but the first two */
table tr td:not(:nth-child(-n + 2)) {
    background-color:lightgreen;
}

/* Select last two only */
table tr td:nth-last-child(-n + 2) {
  background-color:mistyrose;
}

/* Select all but the last two */
table tr td:not(:nth-last-child(-n + 2)) {
    background-color:yellow;
}

jsiddle:

请注意,对于跨列,您需要
。使用包含所有列的
colgroup
是毫无意义的。@JukkaK.Korpela无论您是否指定它,它都会以这种方式解析-就像
一样。我只是更喜欢指定。我发现
col
标记的使用并不常见,但我总是将其用于列宽,以防其他人好奇为什么这样做,或者哪些CSS属性可以用于列,CSS 2.1规范的相关部分是和。@zipzit:如果您确实需要一个表,也就是说,如果数据在本质上是表格形式的(比如有价格的产品表),那么表没有什么错。对表格的批评是反对将其用作布局工具。想知道这一进入网络的热门问题是如何被问到的。截至目前,Sit在Q和a上分别获得了24票和43票,而被接受的答案过去和现在都像疯子一样被提高,人们喜欢学习他们不知道的东西,无论是jQuery数字解析的一个文档化特性,还是一个做得很好的HTML标记/概念,他们都不知道:)@canon-heh是的,无论如何都是不错的答案……您可能希望tr和td之间有一个
,因为您遇到了麻烦,只在trs中选择tds,只在表中选择tds。。。(注意桌子组。)谢谢你的回答,这是不同的解决方案。这是一种过分的做法。过度指定不利于性能
表格tr td
是冗余的,因为
td
始终在
tr
表格中。如果
col组中的单个
col
元素不需要单独设置样式,您还可以在
colgroup
本身上设置
span
属性-
,而不是将
col
元素放在其中。设置
col
本身的样式要比这好得多(更干净、更快)。