2017-02-23 11 views
2

サイドバーは、コンテンツの一部を表示するだけで、サイドバーの幅がすべて表示されます。CSSでトランジション楕円を作る方法

これはCSSコードです:

.sidenav { 
    height: 100%; 
    width: 100px; 
    position: fixed; 
    z-index: 2; 
    top: 0; 
    left: 0; 
    background-color: #fff; 
    overflow: hidden; 
    padding-top: 20px; 
    transition: 0.8s; 
    -webkit-transition: 0.8s; 
    opacity: 0.8; 
    box-shadow: 0px 20px 50px black; 
} 
.sidenav:hover{ 
    width: 215px; 
    transition: 0.8s; 
    -webkit-transition: 0.8s; 
    overflow: hidden; 
} 

私の質問は、私のサイドバーの遷移は全幅を表示し、次に楕円最初になるようにする方法です。

前のおかげで、これは例示である: the initial statefinal statewhat I mean state

+0

完全なコードをJSfiddleまたはcodepenに投稿する –

答えて

1

あなただけの単純なトランジション効果でこれを達成することはできません。あなただけの幅遷移に国境半径を達成するためにCSS keyframe animationsを使用する必要があります。もちろん

.sidenav { 
 
    height: 100%; 
 
    width: 100px; 
 
    position: fixed; 
 
    z-index: 2; 
 
    top: 0; 
 
    left: 0; 
 
    background-color: #fff; 
 
    overflow: hidden; 
 
    padding-top: 20px; 
 
    transition: 0.8s; 
 
    opacity: 0.8; 
 
    box-shadow: 0px 20px 50px black; 
 
    border-radius: 0; 
 
    background: black; 
 
} 
 

 
.sidenav:hover { 
 
    width: 215px; 
 
    overflow: hidden; 
 
    animation-name: roundborder; 
 
    animation-duration: 1s; 
 
    animation-iteration-count: 1; 
 
} 
 

 
@keyframes roundborder { 
 
    0% { border-radius: 0; } 
 
    50% { border-radius: 0 50% 50% 0; } 
 
    100% { border-radius: 0; } 
 
}
<div class="sidenav"></div>

古いブラウザのサポートのために適切なベンダープレフィックスを必要とします。詳細については、border-radius on MDNを参照してください。

+0

幅が100pxから215pxに変更されたときに半径が変更されることを意味しますが、既に215pxになっている場合は – Rian

+0

に戻ります。これにはキーフレームアニメーションが必要です。 – andreas

+0

ねえ、私はどのように境界を凹面にするのですか?出来ますか? – Rian

関連する問題