以前少し話題になった、Nizoというサイト
がああります。このサイトで導入している、
スクロールに応じて要素をアニメーション
させるエフェクトがちょっと素敵なんです
が、これと同じような効果をjQueryで作る、
というのが今日の記事内容です。
どんなエフェクト?って思われた方はNizoでスクロールしてみてください。このエフェクトをjQueryで作る方法が公開されていたので一応メモです。
Intriguing animate-on-scroll effect
スクロールすると左右からいろいろ集まってきます。まぁそれだけなんですが、インパクトはありますね。
IE7でも問題なく動作しました。
コード
< script type = 'text/javascript' src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' ></ script > < script src = "scroll_herbs.js" ></ script > |
本体とライブラリを読み込んでマークアップします。
scroll_herbs.jsの中身で画像の配置や動きを指定します。
switch (i) { case 0: myElement.data( 'params' , { top0: -1300, x0: -2600, top1: $( this ).css( 'top' ), x1: $( this ).css( 'left' ) }); break ; case 1: myElement.data( 'params' , { top0: 0, x0: -930, top1: $( this ).css( 'top' ), x1: $( this ).css( 'left' ) }); break ; case 2: myElement.data( 'params' , { top0: 280, x0: -1030, top1: $( this ).css( 'top' ), x1: $( this ).css( 'left' ) }); break ; case 3: myElement.data( 'params' , { top0: -1200, x0: -2330, top1: $( this ).css( 'top' ), x1: $( this ).css( 'right' ) }); break ; case 4: myElement.data( 'params' , { top0: 250, x0: -530, top1: $( this ).css( 'top' ), x1: $( this ).css( 'right' ) }); break ; } }); |
CSSでも配置指定。
.element { position : absolute ; display : block ;} .element#coriander { top : 0px ; left : 30px ; width : 286px ; height : 272px ;} .element#rosemary { top : 40px ; left : 335px ; width : 370px ; height : 183px ;} .element#chives { top : 0px ; right : 30px ; width : 197px ; height : 514px ;} .element#lemonbalm { left : 30px ; top : 280px ; width : 265px ; height : 233px ;} .element#basil { right : 255px ; top : 250px ; width : 368px ; height : 263px ;} |
あんまり細かく見てないですけど、ちょっと面倒くさそうです。用途は限られますけど、珍しいですし、コードだけでも見ておいて損は無いかもしれない。