前言
利用固定圖片 background-attachment: fixed 的方法,讓網頁上下、左右滑動時簡單的產生有前後的效果,或是可以利用各別設定不同的值產生讓每個物件有前後立體變化的錯覺。
background-attachment 是 CSS 的屬性,是設定背景會配合內容或是捲軸作移動,
固定背景
把背景固定,當滾動網頁時就會看到背景外的標籤元素會和背景有前後感覺
1 | <div class="parallax"> |
1 | .parallax { |
在滾動捲軸就可以看到像下圖的效果

或是把每一個 <div class="card"></div> 設定不同的背景,當滾動時就會改變背景

範例參考 https://codepen.io/stefanjudis/pen/nrzHI
元素變化
利用 transform-style: preserve-3d; 、 perspective: 1px; 和 overflow 這 3 個屬性
transform 可作出 X、Y 軸的位移和旋轉縮放的效果
perspective 可作 3 D 透視的效果,值愈大效果愈不明顯,而值愈小效果就愈大
overflow 設定元素是否可見。overflow-x 和 overflow-y 可設定 X 、 Y 軸超出畫面的部分是否要隱藏的 hidden ,或是設定可滾動的捲軸 scroll 。
首先先固定畫面的高,以及隱藏超出畫面的元素
1 | html { |
然後在 body 加上透視效果,讓 body 內的元素都具有透視效果
1 | body { |
在內層的元素加上屬性 transform 的位移、旋轉 … 等就可看到變化
1 | .card { |
上面範例是用 body 作為外層容器,或是指定一個外層容器也是可以
1 | .parallax { /* 外層容器 */ |
用 jQuery 作視差滾動
要先導入需要的檔案 jQuery 及 Scrolling Parallax jQuery Plugin
1 | <script type="text/javascript" src="jquery.js"></script> |
執行時只要載入圖片,插件就會自動把圖片拉伸到填滿容量的大小
1 | // 載入要有效果的圖片 |
或者是利用選擇器選取要使用效果的標籤元素
1 | $('div.parallax').scrollingParallax(); |
使用選擇器選取時要注意標籤元素的 CSS 要設定 position: fixed ,官方文件有提到建議要設定,才不會出現奇怪的錯誤
設定參數是用物件的方式,可以設定的屬性有基本的圖片尺寸、滾動的速度、方向
參數設定可到 文件 看看