點選上面這張圖片就可以看到效果~
這是偶然間發現的一個很酷的效果
通常網頁捲軸下拉的時候
頁面上的東西不是固定不動,就是所有一起往上移動
這個效果主要就是造成物件不同步的移動
而產生帶有透視感與立體感的背景特效~
其實程式碼不難
重點還是在如何讓頁面上的東西不同步的觀念
這個觀念就是運用 CSS 當中 position:fixed 屬性
以及判斷 scrollbar 拉動的距離 (利用 scrollTop)
接著利用類似等比級數的概念
就可以輕鬆達到頁面上每個東西該如何移動或該用何種速度移動了
同樣的原理不僅僅用在 div 的 position 上
還可以用在 background 中的 image 位置上
差別在於 background 有自身的 div 可做為計算比例的基準
若是要用在 div 的 position 上
就必須要建立一個帶有 fixed 屬性的 div 做為基準
也就是我程式裡頭的 div0
如此一來就可以輕鬆的製做出不同步的效果囉
這是CSS
這是JQuery
重點還是在如何讓頁面上的東西不同步的觀念
這個觀念就是運用 CSS 當中 position:fixed 屬性
以及判斷 scrollbar 拉動的距離 (利用 scrollTop)
接著利用類似等比級數的概念
就可以輕鬆達到頁面上每個東西該如何移動或該用何種速度移動了
同樣的原理不僅僅用在 div 的 position 上
還可以用在 background 中的 image 位置上
差別在於 background 有自身的 div 可做為計算比例的基準
若是要用在 div 的 position 上
就必須要建立一個帶有 fixed 屬性的 div 做為基準
也就是我程式裡頭的 div0
如此一來就可以輕鬆的製做出不同步的效果囉
這是CSS
#div1{width:500px; height:500px; background:url(img/20120530_01.png) 0 0 no-repeat; position:fixed; z-index:4; top:100px; left:200px; display:none;} #div2{width:320px; height:35px; background:url(img/20120530_02.png) 0 0 no-repeat; position:fixed; z-index:3; top:600px; left:280px; display:none;} #div3{width:828px; height:263px; background:url(img/20120530_03.png) 0 0 no-repeat; position:fixed; z-index:2; top:200px; left:30px; display:none;} #div4{width:850px; height:341px; background:url(img/20120530_04.png) 0 0 no-repeat; position:fixed; z-index:1; top:140px; left:30px; display:none;}
這是JQuery
var h1 = $("#div1").offset().top; var h2 = $("#div2").offset().top; var h3 = $("#div3").offset().top; var h4 = $("#div4").offset().top; $(window).scroll(function(){ var a = $(window).scrollTop(); var y = $("#div0").offset().top;//定位用的div,但如果採用背景移動的方式,則不需要 var p1 = a/(Math.abs(y-a));//計算出一個比例 var pp1 =h1-6*p1;//計算每次拉動跑動的距離 $("#div1").css({"top":pp1+"px"}); var p2 = a/(Math.abs(y-a)); var pp2 =h2-6.5*p2; $("#div2").css({"top":pp2+"px"}); var p3 = a/(Math.abs(y-a)); var pp3 =h3-4*p3; $("#div3").css({"top":pp3+"px"}); var p4 = a/(Math.abs(y-a)); var pp4 =h4-2*p4; $("#div4").css({"top":pp4+"px"}); });
沒有留言:
張貼留言