usar third selectors second odd nth impar first como child css css3 internet-explorer css-selectors css-tables

third - impar selector css



IE: nth-child() usando impar/par no funciona (6)

Como una buena solución, jQuery ha agregado esto a su proyecto y lograr esto usando JavaScript es aceptable:

Para mi CSS, tendría

.my_table tr.even{ background:#E6EDF5; } .my_table tr.odd{ background:#F0F5FA; }

Y usaría jQuery para hacer esto:

$(document).ready(function() { $(".my_table tr:nth-child(even)").addClass("even"); $(".my_table tr:nth-child(odd)").addClass("odd"); });

Mi tabla (que funciona perfectamente en Chrome, Firefox y Opera) no se muestra correctamente en Internet Explorer.

¡El fondo permanece blanco! (Estoy usando IE-8)

Código CSS:

/*My Table*/ .my_table{ border-collapse:collapse; font:normal 14px sans-serif,tahoma,arial,verdana; margin:5px 0; } .my_table th{ color:#fff; background:#5E738A; border:1px solid #3C5169; text-align:center; padding:4px 10px; } .my_table td{ color:#555; border:1px solid #C1CAD4; text-align:center; padding:2px 5px; } .my_table tr:nth-child(even){ background:#E6EDF5; } .my_table tr:nth-child(odd){ background:#F0F5FA; }



Esta es la versión de Dojo, funciona bien:

dojo.addOnLoad(function(){ dojo.query("table tr:nth-child(odd)").addClass("odd"); dojo.query("table tr:nth-child(even)").addClass("even"); });


Hace algún tiempo, hice una solución simple de javascript para este problema :

https://gist.github.com/yckart/5652296

var nthChild = function (elem, num) { var len = elem.length; var ret = []; var i = 0; // :nth-child(num) if (!isNaN(Number(num))) { for (i = 0; i < len; i++) { if (i === num - 1) return elem[i]; } } // :nth-child(numn+num) if (num.indexOf(''+'') > 0) { var parts = num.match(//w/g); for (i = parts[2] - 1; i < len; i += parts[0] << 0) { if (elem[i]) ret.push(elem[i]); } } // :nth-child(odd) if (num === ''odd'') { for (i = 0; i < len; i += 2) { ret.push(elem[i]); } } // :nth-child(even) if (num === ''even'') { for (i = 1; i < len; i += 2) { ret.push(elem[i]); } } return ret; };

El uso es bastante simple y similar al selector css:

var rows = document.querySelectorAll(''li''); var num = nthChild(rows, 2); var formula = nthChild(rows, ''3n+1''); var even = nthChild(rows, ''even''); var odd = nthChild(rows, ''odd''); // Note, forEach needs to be polyfilled for oldIE even.forEach(function (li) { li.className += '' even''; }); odd.forEach(function (li) { li.className += ''odd''; }); formula.forEach(function (li) { li.className += '' formula''; }); num.style.backgroundColor = ''black'';

http://jsfiddle.net/ARTsinn/s3KLz/



Puede usar first-child y "+" para emular nth-child, ejemplo:

tr > td:first-child + td + td + td + td + td + td + td + td { background-color: red; }

Que seleccione la novena columna, al igual que nth-child (9), y eso funciona en IE