2017-02-26 16 views
0

私は、あなたがそれをクリックすると、CSSトランジションを使って内側の要素がスライドアップする要素を持っています。私は親ノードのCSS ':activeの内部要素の高さを変更することでこれを行います。私は後でこれを解除する方法を理解できません。次の作業はありません:JavaScriptの要素で::アクティブ状態を解除するにはどうすればよいですか?

/* NONE OF THESE WORK */ 
//Attempt 1 
document.activeElement = null; 

//Attempt 2 
document.activeElement.blur(); 

//Attempt 3 
document.body.focus(); 

//Attempt 4 
document.body.click(); 

//Attempt 5 
myElement.blur(); 

有効にしない方法がありますか?

+0

を使用して:active疑似クラスを使用すると、内側の要素が再び非表示にしたいですかCSSを削除することができますか? – nnnnnn

+0

@nnnnnnはい。以前の状態に戻って欲しい。 –

+0

':active'はデフォルトで' mouseup'に設定されていません:https://jsfiddle.net/nr5nd9p2/1/ – wscourge

答えて

1

あなたはelement.classList.remove("hasactive");

var inner = document.getElementById("inner"); 
 

 
inner.addEventListener("transitionend", function(evt){ 
 
\t this.parentNode.classList.remove("hasactive"); 
 
})
#outer:active #inner { 
 
    height: 200px; 
 
    
 
} 
 
#inner { 
 
    background: red; 
 
    height: 0; 
 
    transition: height 1s linear; 
 
    -webkit-transition: height 1s linear; 
 
} 
 
#outer { 
 
    height: 30px; 
 
    background:blue; 
 
}
<div id="outer"> 
 
    <div id="inner"> 
 
    
 
    </div> 
 
</div>

+0

downvotersは分かりません。これはそれを行う方法です。しかし、なぜあなたは '#inner'と'#outer'要素が必要ですか? –

+1

私は質問を参考にした例を提供しようとしました:*あなたがそれをクリックすると内部要素を表示する要素を持っています* – wscourge

+0

ここに何かがないか、 '.hasactive' CSS規則が適用されていませんか?説明してください。 – gyre

関連する問題