2016-06-09 1 views
0

J'ai une question étrange.Contrôle des états basculés

J'ai créé deux carrés se chevauchant légèrement. Lorsque vous cliquez sur un carré, sa largeur s'étend via la bascule. Ce que je voudrais faire est de créer une fonction qui surveille si l'événement a été déclenché et si c'est le cas, de changer l'index z du second élément pour être au-dessus du premier. Est-ce possible?

JS Fiddle: https://jsfiddle.net/theodore_steiner/qvc7da0s/9/

<div id="square1"></div> 
<div id="square2"></div> 

CSS:

#square1 
{ 
height: 20px; 
width: 20px; 
background-color: blue; 
position: absolute; 
z-index: 3; 
transition: all .4s ease; 
} 

#square1.active 
{ 
width: 50px; 
} 


#square2 
{ 
height: 20px; 
width: 20px; 
background-color: green; 
position: absolute; 
z-index: 2; 
left: 25px; 
} 

JS;

var square1 = document.getElementById("square1"); 
var square2 = document.getElementById("square2"); 


square1.onclick = function pushLeft() 
    { 
    this.classList.toggle("active"); 
    }; 

Répondre

2

Ajoutez cette règle CSS qui utilise le general sibling selector ~.

Si vous voulez seulement le frère ou la sœur, utilisez le adjacent sibling selectors +.

#square1.active ~ #square2 
{ 
    z-index: 5; 
} 

extrait de l'échantillon

var square1 = document.getElementById("square1"); 
 
var square2 = document.getElementById("square2"); 
 

 
square1.onclick = function pushLeft() { 
 
    this.classList.toggle("active"); 
 
};
#square1 { 
 
    height: 20px; 
 
    width: 20px; 
 
    background-color: blue; 
 
    position: absolute; 
 
    z-index: 3; 
 
    transition: all .4s ease; 
 
} 
 
#square1.active { 
 
    width: 50px; 
 
} 
 
#square1.active ~ #square2 { 
 
    z-index: 5; 
 
} 
 
#square2 { 
 
    height: 20px; 
 
    width: 20px; 
 
    background-color: green; 
 
    position: absolute; 
 
    z-index: 2; 
 
    left: 25px; 
 
}
<div id="square1"></div> 
 
<div id="square2"></div>

+0

Ainsi, la ligne # square1.active ~ # Square2 le "~" est essentiellement dire si square1 est actif le faire à la case 2? En général, existe-t-il une méthode de méthode dans JS pour vérifier si un événement a été déclenché? –

+0

@TheodoreSteiner Oui, en utilisant le [sélecteur de sibling '~'] (https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_selectors) – LGSon

+0

@TheodoreSteiner Comment voulez-vous dire si un événement est déclenché? ... Votre événement 'onclick' fait exactement cela, lorsqu'il est déclenché, il vous dit que quelqu'un a cliqué. – LGSon