Использование CSS-селекторов не является чрезмерным усердием, если позволяет вашему HTML-коду и таблицам стилей быть проще, легче для понимания и изменения;
например, с меньшим количеством className
атрибутов в вашем HTML.
Кроме того, это лучший способ выучить их!
Для второй части вашего вопроса, я предлагаю вам этот CSS (
http://jsfiddle.net/S8Bne/):
.geniusPicks {}
.geniusPicks table {width:100%; font-size:12px; border-collapse:separate;}
.geniusPicks table tr#picksHeading {border:0px solid; height:30px;}
.geniusPicks table tr#picksHeading th {background:darkRed; color:white; font-weight:bold;}
.geniusPicks table tr.pickHeading {border:0px solid;}
.geniusPicks table tr.pickHeading td {background:red; padding-left:10px;}
.geniusPicks table tr.pickHeading+tr td:last-child {border-right:solid 1px black;}
.geniusPicks table tr.pickConsensusBody td {
border-left:1px solid;
border-top:1px solid;
background:grey;
}
.geniusPicks table tr.pickBody td {
border-left:1px solid;
border-top:1px solid;
}
.bigGap td {height:19px;}
.smallGap td {height:10px; border-top:solid 1px black;}
.geniusPicks table th,
.geniusPicks table th:last-child,
.geniusPicks table .pickHeading+tr td,
.geniusPicks table .pickHeading+tr td:last-child {text-align:center;}
.geniusPicks table th+th+th,
.geniusPicks table .pickHeading+tr td+td+td {text-align:left;}
/* Border Left Radius */
.geniusPicks table thead tr#picksHeading th:first-child, .geniusPicks table tr.pickHeading td {
border-radius:15px 0 0 0;
-moz-border-radius:15px 0 0 0;
-webkit-border-radius:15px 0 0 0;
-khtml-border-radius:15px 0 0 0;
}
/* Border Right Radius */
.geniusPicks table thead tr#picksHeading th:last-child {
border-radius:0 15px 0 0;
-moz-border-radius:0 15px 0 0;
-webkit-border-radius:0 15px 0 0;
-khtml-border-radius:0 15px 0 0;
}
.geniusPicks table .pickHeading+tr td:nth-child(4) {
border-left-style:dotted;
border-left-color:black;
border-left-width:1px;
border-top-style:solid;
border-top-color:black;
border-top-width:1px;
}
.geniusPicks table tr.pickConsensusBody td:first-child:not([rowspan]),
.geniusPicks table tr.pickBody td:first-child:not([rowspan]) {
border-top-style:dotted;
border-top-color:black;
border-top-width:1px;
border-left-style:dotted;
border-left-color:black;
border-left-width:1px;
}
Хорошая особенность этого решения в том, что оно вообще не требует изменения вашего HTML-кода.
Однако границы, которые должны быть пунктирными, останутся сплошными, если браузер (например, IE8) не поддерживает псевдокласс CSS3 :nth-child
или :not
.
Скажите, предпочитаете ли вы что-то, что полагается только на CSS2?
Но в этом случае будет необходимо либо добавить атрибут class
к каждой ячейке, которая должна быть разбита,
или разделить каждую строку, содержащую 7 ячеек, чтобы каждая ячейка "Влах" стала первым дочерним элементом в этой строке.