首先做了一个表格,如下:
<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> .t-table{ width: 200px; } </style> </head> <body> <div> <table class="t-table" border="1px solid #000" cellpadding="0" cellspacing="0"> <thead> <th>first</th> <th>second</th> <th>third</th> <th>fourth</th> </thead> <tr> <td rowspan="3">1</td> <td>2</td> <td>3</td> <td>4</td> </tr> <tr> <td>5</td> <td>6</td> <td>7</td> </tr> <tr> <td>8</td> <td>9</td> <td>10</td> </tr> <tr> <td>11</td> <td>12</td> <td>13</td> <td>14</td> </tr> </table> </div> </body> </html>
在页面效果如下:
现在有一个很重要的需求,要求 third 和 fourth 两列居中。
考虑使用 :nth-child() 给一个 text-align:center 来控制
于是加了一段 css 样式如下:
<style type="text/css"> .t-table{ width: 200px; } .t-table td:nth-child(2){ text-align: center; } </style>
希望第二列居中,
浏览器展示如下:
发现居然错位了!! 很难过。。。
想了想应该是 rowspan 导致第2、3行的第一列没有,即从 second 开始为第一列!
知道原因以后只能放弃 :nth-child 考虑给第二列开始给一个 class,再用兄弟选择器实现。。
页面代码如下:
<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> .t-table{ width: 200px; } .t-td, .t-td ~td { text-align: center; } </style> </head> <body> <div> <table class="t-table" border="1px solid #000" cellpadding="0" cellspacing="0"> <thead> <th>first</th> <th>second</th> <th>third</th> <th>fourth</th> </thead> <tr> <td rowspan="3">1</td> <td class="t-td">2</td> <td>3</td> <td>4</td> </tr> <tr> <td class="t-td">5</td> <td>6</td> <td>7</td> </tr> <tr> <td class="t-td">8</td> <td>9</td> <td>10</td> </tr> <tr> <td>11</td> <td class="t-td">12</td> <td>13</td> <td>14</td> </tr> </table> </div> </body> </html>
展示效果如下: