li要素を任意の数の列に並べたいと思っています。クリックしてli要素を100%幅に広げ、兄弟を押し出す
<ul>
<li class="yellow">
Yellow Block
</li>
<li class="red">
Red Block
</li>
<li class="green">
Green Block
</li>
</ul>
列のいずれかが、私はそのLiが100%に成長したいクリックするとその兄弟が視野の外に押されるように。
$('li').on("click", function(){
$(this).addClass("active");
$(this).siblings().addClass("nonActive");
})
私はそれがちょうど所望の視覚効果であるとして、アニメーションはプッシュ/運動、隠ぺい、またはクリーンに見え方の幅の変更を伴う可能性が緩くても、「ビューののプッシュ」という用語を使用しています。
設定が0%に、100%、兄弟姉妹に幅をクリック:
https://jsfiddle.net/bo28dy10/
.active{
width: 100%;
}
.nonActive{
width 0%;
}
問題:それは縮むように、ワードラップをすることができます原因私が試した何
ラベルが全幅で折り返される場合があるため、折り返しを設定しないでください。
設定がオーバーフローするラッパーを設定し、100%に幅をクリック:隠された: https://jsfiddle.net/gqqeq4wu/
.active{
width: 100%;
}
ul{
overflow: hidden;
}
問題:これだけの兄弟姉妹を下に強制的に行の代わりに、それらを押し出すと、私はないんだけど親に固定された高さを設定することができます。
設定がディスプレイに兄弟を設定し、100%に幅をクリック:なし: https://jsfiddle.net/xf0om99t/
.active{
width: 100%;
}
.nonActive{
display:none;
}
問題:あなたは、ディスプレイ上でアニメーションを使用することはできません。どれも、私はこれがスムーズな移行になりたいん。
この外観をシミュレートする正しい方法は何ですか?
(ボーナス:?私は列の幅(すなわち33.33パーセント)を取り除くことができ、ちょうどこれらのカラムは素晴らしいだろうと同じように親を埋めるために、自動的に拡張している場合は、私はおそらくフレキシボックスを考えている)
を?他の兄弟を '.hide()'するのははるかに簡単なので、もはやレイアウトの計算には含まれません。 –
@MarcBそれは基本的に私が3番目のフィドルで試したことですが、私は表示ではできないこれらをアニメーション化したいです:none、それらは突然消えて、アクティブな要素を左にスナップします。私はそれを感謝しますが、それを行うためのよりよい方法がある場合。 – DasBeasto
CSSのトランジションを使って、その幅を0にアニメーション化します。 –