¿Cómo dirigiría este div usando CSS?


En el siguiente código, ¿cómo me dirigiría al segundo div.b usando CSS?

<div>
  <div class="a"></div>
  <div class="a"></div>
  <div class="a"></div>
  <div class="b"></div>
  <div class="b"></div>
  <div class="a"></div>
</div>
Author: BoltClock, 2014-03-07

2 answers

En este caso particular, podría usar el combinador de hermanos adyacente , +.

EJEMPLO AQUÍ

.b + .b {
   color:red;
}

Lo anterior asume que no hay más de dos elementos .b adyacentes. Si este no fuera el caso, el combinador general de hermanos , ~, sería más útil suponiendo que todavía hay solo dos elementos .b.

EJEMPLO AQUÍ

.b ~ .b {
    color:red;
}

Como alternativa, también podría utilice lo siguiente, que funcionará con múltiples elementos .b, independientemente de la posición. Inicialmente, use .b ~ .b para establecer el estilo del segundo elemento objetivo. Entonces necesitará usar .b ~ .b ~ .b para restablecer el estilo de los elementos .b después del segundo elemento .b.

EJEMPLO AQUÍ

.b ~ .b {
    color:red;
}
.b ~ .b ~ .b {
    color:initial;
}

Esto debería funcionar teóricamente en todos los casos, por ejemplo:

<div class="a">1a</div>
<div class="a">2a</div>
<div class="a">3a</div>
<div class="b">1b</div>
<div class="a">4a</div>
<div class="b">2b</div> <!-- This would be styled red.. -->
<div class="b">3b</div>

También vale la pena señalar que el valor initial no se admite en IE. Por lo tanto, podría usar color:#000 para restablecer el color a los valores predeterminados. Alternativamente, inherit funcionaría también.

Como un ejemplo más práctico, podrías usar algo como esto:

EAXMPLE AQUÍ

.b ~ .b {
    width:200px;
    background:blue;
    color:#fff;
}
.b ~ .b ~ .b {
    width:auto;
    background:transparent;
    color:#000;
}
 34
Author: Josh Crozier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-07 03:09:43

También hay otra forma de lograr lo que quieres hacer.

div > :nth-child(5){

}

Http://jsfiddle.net/WvL88/3 /

 13
Author: Dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-07 01:49:07