IDENTIFICADORES
Son elemento de más alta jerarquía y definen parámetros generales para los elementos de un bloque se definen como #id normalmente se aplican a listas o bloques.
<style> #parrafo { color: green; font-size:20px; } </style> <div id="parrafo"> <p> Este es el selector id párrafo </p> </div> <p> Párrafo sin selector</p>
Podemos ver como el párrafo dentro del bloque es afectado por el identificador pero no es afectado el que esta fuera.
CLASES
Son elementos de jerarquía menor y se utilizan para elementos individuales o para definir clases dentro de una identificar como por ejemplo:
<style> #parrafo { font-size:20px; } #parrafo .parraforojo { color: red; } .parrafoazul { color:blue; } </style> <div id="parrafo"> <p class="parraforojo"> Este es el selector id párrafo </p> </div> <p class="parrafoazul"> Párrafo azul con p</p> <div class="parrafoazul"> Párrafo azul con div</div> <div class="parrafoarojo"> Párrafo rojo con div</div>
Aquí podemos apreciar que el clase .parraforojo define el color del párrafo pero depende el tamaño que define el identificador de mayor jerarquía #parrafo.
Mientras que la clase independiente .parrafoazul puede aplicarse elemento p que no depende de nadie incluso podemos aplicarlo a otros elementos como div, pero si intentamos aplicar la clase parraforojo en forma independiente del identificador #parrafo veremos que no funciona ya que no esta cumpliendo la jerarquía que le impone su identificador #parrrafo.
Existen muchos selectores que podemos utilizar aquí veremos algunos
Selector par (even) e impar (odd)
Este selector se aplica a una matriz de elementos que utilizan la misma clase y se puede afectar a los elementos pares o impares, por ejemplo coloreamos el fondo de una lista de párrafos.
<html> <head> <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> <style> p { padding:5px; margin:0px; } </style> <script> $(document).ready(function(){ $('p:even').css('background-color','#f8f8f8'); $('p:odd').css('background-color','#9ACD32'); $('li:odd').css('background-color','#9ACD32'); }); </script> <body> <h3>PÁRRAFOS</h3> <p class="lista">El usuario 1 ha dejado un mensaje</p> <p class="lista">El usuario 2 ha dejado un mensaje</p> <p class="lista">El usuario 3 ha dejado un mensaje</p> <p class="lista">El usuario 4 ha dejado un mensaje</p> <br><br> <h3>LISTA UL</h3> <ul> <li class="lista">El usuario 1 ha dejado un mensaje</li> <li class="lista">El usuario 2 ha dejado un mensaje</li> <li class="lista">El usuario 3 ha dejado un mensaje</li> <li class="lista">El usuario 4 ha dejado un mensaje</li> </ul> </body>
SELECTOR PRIMERO (First) E ÚLTIMO (Last)
Estos selectores nos permiten manipular el primero y el ultimo elemento de una lista determinada, por ejemplo establecemos la lista en color gris, el primer elemento en verde y el ultimo elemento en azul.
<html> <head> <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> <style> li { padding:5px; margin:0px; } </style> <script> $(document).ready(function(){ $('li').css('background-color','#dddddd'); $('li:first').css('background-color','#9ACD32'); $('li:last').css('background-color','#6495ED'); }); </script> <body> <h3>LISTA UL</h3> <ul> <li class="lista">El usuario 1 ha dejado un mensaje</li> <li class="lista">El usuario 2 ha dejado un mensaje</li> <li class="lista">El usuario 3 ha dejado un mensaje</li> <li class="lista">El usuario 4 ha dejado un mensaje</li> </ul> </body>
SELECTOR FOCUS
El foco sobre un elemento se activa al hacer clic sobre un elemento y se desactiva al hacer clic en otra zona de la web o en otro elemento. Veremos un ejemplo con un formulario de login, creamos la clase .focologin y luego la aplicamos sobre el identificador del formulario #login para afectar a todos los elementos que contiene. También podemos aplicarlo a una capa o bloque div y colocar el formulario dentro del bloque.
<html> <head> <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> <style> .focologin { background: #90EE90; } </style> <body> <h3>FORMULARIO </h3> <form id="login"> Usuario: <input type="text" name="usuario"> Clave: <input type="password" name="clave"> <input type="submit" value="Login"> </form> <script> $( "#login" ).delegate( "*", "focus blur", function() { var elem = $( this ); setTimeout(function() { elem.toggleClass( "focologin", elem.is( ":focus" ) ); }, 0 ); }); </script> </body>
Asignar o cambiar un estilo css a un elemento con AddClass
Si queremos asignar un estilo css dinámicamente o que cambiar según alguna condición establecida utilizaremos AddClass. En este caso tenemos una clase .botonverde y a los input tipo text le asignamos la clase .cajatexto desde Jquery. El input tipo password no se ve afectada y el botón submit tampoco ya que no les hemos asignado ninguna clase css.
<html> <head> <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> <style> .botonverde { background: #90EE90; border: solid 2px blue; } .cajatexto { background: #FFFF00; border: solid 2px #000000; } </style> <body> <h3>FORMULARIO REGISTRO</h3> <form id="registrarse"> Nombre: <input type="text" name="nombre"><br> Domicilio: <input type="text" name="domicilio"><br> Teléfono: <input type="text" name="telefono"><br> Email: <input type="password" name="email"><br> <input type="submit" value="Enviar"> <input type="button" value="Cancelar"> </form> <script> $( ":button" ).addClass( "botonverde" ); $( ":text" ).addClass( "cajatexto" ); </script> </body>
SELECTOR EQUALS O IGUAL
Este selector permite identificar un elemento de una matriz de elementos según la posición en que se encuentra por ejemplo una celda de una tabla, debemos tener en cuenta que los elementos se enumeran como los índices de una matriz comenzando por 0,1,2,etc
<html> <head> <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> <body> <table border="1"> <tr> <th>Titulo A</th> <th>Titulo B</th> <th>Titulo C</th> </tr> <tr> <td>Celda 0</td> <td>Celda 1</td> <td>Celda 2</td> </tr> <tr <td>Celda 3</td> <td>Celda 4</td> <td>Celda 5</td> </tr> </table> <script> $( "td:eq( 0 )" ).css( "color", "yellow" ); $( "td:eq( 0 )" ).css( "background", "Green" ); $( "td:eq( 4 )" ).css( "color", "white" ); $( "td:eq( 4 )" ).css( "background", "blue" ); </script> </body> </html>
Continuando con las tablas y la aplicación de selectores, veremos como crear un diseño de fondo de forma de alternada en los colores de filas de una tabla, similar a lo aplicado anteriormente con párrafos y listas. No añadimos tanto css ni diseño como para que se aprecie mejor el efecto basicamente.
<html> <head> <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> <style> table { font-size:12px; } </style> </head> <body> <table border="1" width="500"> <h2>CALENDARIO DE CURSOS</h2> <tr> <td >Horarios</td> <td ><span ><strong>LUNES</strong></span></td> <td ><span ><strong>MARTES</strong></span></td> <td ><span ><strong>MIERCOLES</strong></span></td> <td ><span ><strong>JUEVES</strong></span></td> <td ><span ><strong>VIERNES</strong></span></td> </tr> <tr> <td >10:00 - 12:00</td> <td >Desarrollo web / CSS</td> <td >Desarrollo web / JQUERY</td> <td >Programación web / PHP</td> <td >Desarrollo web / JQUERY</td> <td >Programación / JAVA</td> </tr> <tr> <td >21:00 - 22:00</td> <td >Bases de datos / MYSQL</td> <td >Desarrollo web / JQUERY</td> <td >Programación / JAVA</td> <td >Programación web / PHP</td> <td > </td> </tr> <tr> <td >22:00 - 23:00</td> <td >Programación web / PHP</td> <td >Desarrollo web / CSS</td> <td >Programación / JAVA</td> <td > </td> <td > </td> </tr> </table> <script> $(document).ready(function(){ $("tr:odd").css("background-color", "#F8f8f8"); // filas impares $("tr:even").css("background-color", "#8FAE70"); // filas pares }); </script> </body>
SELECTOR nth-child
Continuando con el ejemplo anterior podemos utilizar como complemento el selector nth-child similar al selector eq, pero la diferencia es que con nth-child, se puede indicar posiciones en forma de operación aritmética. Se utiliza para seleccionar uno o varios elementos pero con la condición de que sea el hijo enésimo de su padre. Este selector es útil para seleccionar el segundo párrafo de un bloque o el tercer elemento de una lista, etc. Los elementos no se toman como una matriz sino por orden primero, segundo, etc
Por ejemplo si en el script anterior le añadimos
<script> $( "td:nth-child(2n+1)" ).css("background-color", "red"); </script>Se seleccionaran las columnas impares en este caso
Otros ejemplos de utilización practica de este selector serian
- Columnas Impares nth-child(2n+1)
- Columnas Pares nth-child(2n)
- Primer y cuarta columna nth-child(3n+1)