改变第二列的颜色

时间:2013-04-04 18:45:49

标签: javascript jquery html css css3

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

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

提供fiddle以及我的代码:

#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;
    }
}

3 个答案:

答案 0 :(得分:2)

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

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

DEMO - 更改第二列的颜色


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

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

DEMO - 更改第二列标题的颜色


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

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

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

DEMO - 为每个第二列应用颜色


答案 1 :(得分:0)

仅适用于每张桌子的第2栏

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

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

确保在IE早期工作

答案 2 :(得分:0)

这是您的请求的正确JSFiddle。我已将其清理干净并在 CSS 中添加了两行。


您提到您并不知道如何将 ID 提供给较小分辨率设备的第二列。对于您的示例,第一列的选择器td:before,第二列的选择器td。更具体地说,以下CSS似乎可以实现您的目标:

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

   td:before {
      color:darkblue; 
   }
}

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