Autor Tema: Selectores CSS  (Leído 5364 veces)

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Selectores CSS
« en: 12 de Julio de 2010, 22:17:51 pm »
Me ha parecido raro no ver un tutorial específico para esto, así que voy a hablar de algunos selectores CSS, de CSS3...

Para empezar, los selectores CSS seleccionan (¿De veras?) unos objetos determinados.

Antes, lo más basico son los nombres de etiqueta, clase e id.
Etiqueta:
Se escribe el nombre de la etiqueta HTML que será afectada
Código: [Seleccionar]
div {
// esto afecta a todos los div
}
Se puede usar el comodín * para referirse a cualquier tipo de elemento.
Clase:
Se escribe el nombre de la clase prececido de un punto, esto afectará a todo elemento con class="nombre"
Código: [Seleccionar]
.miclase {
// esto afectaria por ejemplo a <a class="miclase">, <p class="miclase"> etc
}
ID:
Se escribe el nombre de la ID precedido de una almohadilla (#), afectará al elemento con id="LAID"
Código: [Seleccionar]
#hola {
// esto afecta a <a id="hola" o <p id="hola">, recuerda que la ID debe ser UNICA

Se pueden "anidar" para acceder a elementos dentro de los mismos, así:
Código: [Seleccionar]
#hola div.pepe a {
// afecta a cualquier A dentro de un div con la clase "pepe" dentro del elemento con id "hola"
}
Esto no es del todo exacto, pues algo así:
<div id="hola">
<div class="pepe">
<span><a>hola</a></span>
</div>
</div>
El "A" se vería afectado por el CSS, pero a partir de CSS3 (si no me equivoco) se puede hacer que tenga que ser un hijo inmediato, justo debajo:
Código: [Seleccionar]
#hola > div.pepe > a {
blabla
}
Esto no afectaría al codigo anterior, ya que div.pepe si es un hijo directo de #hola, pero el A no lo es, sin embargo sí afectaria al A si fuera así:
<div id="hola">
<div class="pepe">
<a><span>hola</span></a>
</div>
</div>

Esto es lo más basico, a partir de lo cual parten los selectores, los más básicos son los de efectos como son hover y active; están disponibles para cualquier elemento a partir de CSS3, y solo para los links (a) antes de este.

Hover:
Se "activa" al pasar el mouse por encima.
Código: [Seleccionar]
#hola:hover {
// Esto pasa al pasar el mouse por encima del div id="hola"
}
Active:
Se activa al hacer click, es muy útil para hacer botones sobre todo
Código: [Seleccionar]
button:active {
// Esto pasa al hacer click encima de los "button" (es una etiqueta HTML)
}
Focus y blur:
Se activa cuando recibe o pierde el foco, respectivamente.

Otros selectores muy buenos hacen referencia a las etiquetas del elemento:
[atributo]:
Afecta a los elementos que tengan el atributo, por ejemplo:
Código: [Seleccionar]
[hola] {
// cualquier elemento con atributo hola (<a hola="h">, <p hola="biba">)
}
a[title] {
// links con titulo
}
[atributo=valor], [atributo|=valor], [atributo$=valor], [atributo~=valor]:
Hacen referencia a etiquetas cuyo atributo "atributo" sea igual a valor, comience por valor, acabe en valor, y contenga valor, respectivamente.
Código: [Seleccionar]
input[type=button] {
// Hace referencia a inputs que sean botones, UTILÍSIMO!
}
a[href|=/privado] {
// Hace referencia a links que lleven a /privado
}
a[href$=html] {
// Hace referencia a links que llevan a archivos HTML
}
a[smile~=sonrisa pepe] {
// Hae refenia a links cuyo atributo smile contenga sonrisa o pepe
}

Selectores X-child:
first-child y last-child:
Seleccionan el primer y último elemento X, respectivamente.
Código: [Seleccionar]
div:first-child {
// primer div
}
ul.lista li:last-child {
// último elemento li de la lista (ul) con clase "lista"
}

nth-child(expresion):
Estos selectores son MUY utiles. Seleccionan los elementos que cumplan cierta expresión, la expresión puede ser un número entero, odd (impar) o even (par), o una expresión compleja
- número entero: selecciona el elemento que se encuentre en esa posición.
Código: [Seleccionar]
div span:nth-child(3) {
// selecciona el tercer hijo span
}
- odd o even: seleccionan los elementos impares o pares respectivamente.
Código: [Seleccionar]
a > :nth-child(odd) {
// selecciona los elementos impares hijos directos de a
}
div:nth-child(even) {
// selecciona los div pares.
- expresión compleja: estas expresiones permiten seleccionar los elementos en cierto orden.
Código: [Seleccionar]
:nth-child(2n) {
// selecciona el 2º hijo, el 4º, el 6º...
}
:nth-child(5n) {
// selecciona el 5º hijo, 10º...
}
:nth-child(3n+1) {
// selecciona el 3º, 6º, 9º... y además el primero.
}

X-of-type:
Son como los selectores child, existen first-of-type, last-of-type y nth-of-type(expresion). La única diferencia respecto a los anteriores es que a estos no les basta cualquier elemento hijo, han de ser del tipo concreto de elemento, es decir:
Código: [Seleccionar]
div > :first-child {
color: #F00;
}
div > span:first-of-type {
background: #F00;
}
<div><a>este link tiene la letra roja</a><a>este no tiene nada especial</a><span>este span tiene fondo rojo</span><span>este span es normal</span>

Adyacente:
El selector adyacente selecciona un elemento que esté justo en la siguiente posición que el otro.
Código: [Seleccionar]
div + span {
// span que esté despues de un div
}
// ejemplo
span + a {
color: #F00;
}
<span>hola</span><a>este link es rojo</a>
<span>hola</span><b>estoy en negrita</b><a>este link NO es rojo</a>

Hermano:
El selector hermano selecciona todos los elementos hermanos, independientemente de que estén al lado o no.
Código: [Seleccionar]
span ~ a {
// todos los a hermanos de un span, ejemplo:
color: #F00;
}
<div>
<span>soy un span</span>
<a>soy rojo</a>
<h1><a>yo no soy rojo</a></h1>
<b>yo estoy en negrita</b>
<a>yo tambien soy rojo</a>
</div>

Otros:
before y after
Permiten insertar algo antes y/o despues de un elemento
Código: [Seleccionar]
span.pregunta:before {
content: '¿';
}
// insertaria una interrogación antes de cualquier span .pregunta
span:after, p:after {
content: '.';
}
// pone un punto tras cualquier span o p (para vagos)

Esto es todo de momento, más adelante pondré más.

Saludos.
« Última modificación: 19 de Julio de 2011, 16:43:43 pm por westwest »

Comunidad PHPeros

Selectores CSS
« en: 12 de Julio de 2010, 22:17:51 pm »

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:Selectores CSS
« Respuesta #1 en: 12 de Julio de 2010, 23:11:08 pm »
¡Muy bien explicado West!

He aprendido muchísimas cosas del CSS mediante este tutorial, el cual me ha parecido magnífico. Voy a fijar el tema para que esté siempre a la vista de todos ;)

Saludos ^^
- Moderador de PHP


Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Selectores CSS
« Respuesta #2 en: 12 de Julio de 2010, 23:12:21 pm »
¡Muy bien explicado West!

He aprendido muchísimas cosas del CSS mediante este tutorial, el cual me ha parecido magnífico. Voy a fijar el tema para que esté siempre a la vista de todos ;)

Saludos ^^
De nada y gracias por fijarlo ^^

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Selectores CSS
« Respuesta #3 en: 13 de Julio de 2010, 22:05:41 pm »
 ¡Genial west! Enseguida te llevas un karma por arte mia :D.

Gracias a este tutorial he aprendido algo mas.

#Fdo. Physlet

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:Selectores CSS
« Respuesta #4 en: 19 de Julio de 2011, 16:13:13 pm »
Muy bueno  :)
A ver si al final aprendo PHP y me pongo con el CSS :D
¡Genial west! Enseguida te llevas un karma por arte mia :D.

Gracias a este tutorial he aprendido algo mas.
Te daría un karma, pero no puedo  :(

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Selectores CSS
« Respuesta #5 en: 19 de Julio de 2011, 16:44:11 pm »
Muy bueno  :)
A ver si al final aprendo PHP y me pongo con el CSS :DTe daría un karma, pero no puedo  :(
No pasa absolutamente nada :P

Acabo de añadir más selectores al tutorial ;)

Desconectado Mixvice

  • PHPero Experto
  • *****
  • Mensajes: 687
  • Karma: 32
  • Sexo: Masculino
  • ¡Y Tu Papá Tambien!
    • Ver Perfil
    • Tuhabbo
Re:Selectores CSS
« Respuesta #6 en: 19 de Julio de 2011, 20:31:04 pm »
Creeras que no habia visto este tutorial? jaja esta muy bueno ahi te va +K ;)

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:Selectores CSS
« Respuesta #7 en: 03 de Agosto de 2011, 18:29:58 pm »
Ahora sí, te dejé el karma porque te lo mereces y porque me sirve mucho lo de ODD y EVEN