4

我有一个 jQuery 响应表。
当您缩小浏览器窗口时,您可以看到不同的布局。

我想更改每个表的第二列值的颜色,但我不知道如何为第二列值提供 id 并更改其颜色。

在下面提供一个小提琴以及我的代码:

#page-wrap {
    margin: 50px;
}
/* 
        Generic Styling, for Desktops/Laptops 
        */
 table {
    width: 100%;
    border-collapse: collapse;
}
/* Zebra striping */
 tr:nth-of-type(odd) {
    background: #eee;
}
th {
    background: #1a4567;
    color: white;
    font-weight: bold;
}
td, th {
    padding: 6px;
    border: 1px solid #ccc;
    text-align: left;
}
/* 
        Max width before this PARTICULAR table gets nasty
        This query will take effect for any screen smaller than 760px
        and also iPads specifically.
        */
 @media only screen and (max-width: 760px), (min-device-width: 768px) and (max-device-width: 1024px) {
    /* Force table to not be like tables anymore */
    table, thead, tbody, th, td, tr {
        display: block;
    }
    /* Hide table headers (but not display: none;, for accessibility) */
    thead tr {
        position: absolute;
        top: -9999px;
        left: -9999px;
    }
    tr {
        border: 1px solid #ccc;
    }
    td {
        /* Behave  like a "row" */
        border: none;
        border-bottom: 1px solid #eee;
        position: relative;
        padding-left: 50%;
    }
    td:before {
        /* Now like a table header */
        position: static;
        /* Top/left values mimic padding */
        top: 6px;
        left: 6px;
        width: 45%;
        padding-right: 10px;
        white-space: nowrap;
    }
    /*
            Label the data
            */
    td:nth-of-type(1):before {
        content:"BOM Id";
    }
    td:nth-of-type(2):before {
        content:"Brand Name";
    }
    td:nth-of-type(3):before {
        content:"BOM Type";
    }
    td:nth-of-type(4):before {
        content:"BOM Description";
    }
    td:nth-of-type(5):before {
        content:"Edit";
    }
    td:nth-of-type(6):before {
        content:"Related";
    }
    td:nth-of-type(7):before {
        content:"Print";
    }
    td:nth-of-type(8):before {
        content:"ECO";
    }
    td:nth-of-type(9):before {
        content:"Dev";
    }
    td:nth-of-type(10):before {
        content:"Files";
    }
}
/* Smartphones (portrait and landscape) ----------- */
 @media only screen and (min-device-width : 320px) and (max-device-width : 480px) {
    body {
        padding: 0;
        margin: 0;
        width: 320px;
    }
}
/* iPads (portrait and landscape) ----------- */
 @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
    body {
        width: 495px;
    }
}
4

3 回答 3

2

如果您只想为第二列着色,您可以使用类似于:

td:nth-child(2) {
    background: #CCC
}

演示- 更改第二列的颜色


如果您还想包含标题本身,您可以将其添加到 中th,类似于:

th:nth-child(2) {
    background: teal
}

演示- 也更改第二列标题的颜色


如果你想每隔一列着色,而不仅仅是第二列,你可以使用奇数甚至类似于此:

th:nth-child(even) {
    background: teal;
}

td:nth-child(even) {
    background: #CCC;
}

演示- 每隔一列应用颜色


于 2013-04-04T18:55:58.780 回答
1

对于每张桌子的第二列,您可以

td:nth-child(2),th:nth-child(2){}

或者

td:first-child+td,th:first-child+th{}

确保是否在早期 IE 中工作

于 2013-04-04T19:02:53.870 回答
0

这是适合您要求的JSFiddle 。我已经清理它并在CSS中添加了两行。


您提到您不知道如何将ID提供给较小分辨率设备的第二列。对于您的示例,第一列的选择器td:before是,第二列的选择器是td。更具体地说,以下 CSS 似乎可以完成您正在寻找的内容:

@media only screen and (max-width: 760px) {
   td {
      color:orange;
   }

   td:before {
      color:darkblue; 
   }
}

从您的响应式转换来看,您的第一列实际上来自内容CSS 属性td:before而不是th标记。从语义的角度来看,这是错误的,但我猜你有强制这种行为的限制。

于 2014-04-08T17:55:54.773 回答