今天,我們想向您展示如何創建平鋪背景圖像的幻燈片效果。其靈感來自於國外的一個工作室網站(圍觀),這個網站充滿了各種有趣和創意效果,一定記得去看看。
這個幻燈片效果是由四個區域的獨立移動構成,通過畫面分割,同時顯示出新的圖片。這里需要組合使用 CSS3 的3D轉換、過渡和動畫功能。除了這種效果我們也將添加兩個更多的變化,我們的宗旨是實現超流暢的交互體驗。
溫馨提示:為保證最佳的效果,請在 IE10+、Chrome、Firefox 和 Safari 等現代瀏覽器中瀏覽。
對於幻燈片,我們需要一個特殊的 HTML 結構來實現四個不同的頁面區域,每個區域都使用相同的圖像,但用了不同的定位,讓四個區域拼起來剛好是一張完整的背景圖片。我們需要確保內容充滿整個頁面,因為這是一個全屏幻燈片效果。
我們先定義一個簡單的初始結構,能夠指定在每個面板(或幻燈片)中哪張圖像會顯示,然后創建我們的重復結構的片段。所以,最初我們希望是這樣的:
<div id="boxgallery" class="boxgallery" data-effect="effect-1">
<div class="panel"><img src="img/1.jpg" alt="Image 1"/></div>
<div class="panel"><img src="img/2.jpg" alt="Image 2"/></div>
<div class="panel"><img src="img/3.jpg" alt="Image 3"/></div>
<div class="panel"><img src="img/4.jpg" alt="Image 4"/></div>
</div>
為了能夠通過把圖片分解成片段來實現動畫效果,我們將需要為每個面板定義下面這樣的結構:
div id="boxgallery" class="boxgallery" data-effect="effect-1">
<div class="panel current">
<div class="bg-tile">
<div class="bg-img"><img src="img/1.jpg" /></div>
</div>
<div class="bg-tile">
<div class="bg-img"><img src="img/1.jpg" /></div>
</div>
<div class="bg-tile">
<div class="bg-img"><img src="img/1.jpg" /></div>
</div>
<div class="bg-tile">
<div class="bg-img"><img src="img/1.jpg" /></div>
</div>
</div>
<div class="panel">
<div class="bg-tile">
<div class="bg-img"><img src="img/2.jpg" /></div>
</div>
<div class="bg-tile">
<div class="bg-img"><img src="img/2.jpg" /></div>
</div>
<div class="bg-tile">
<div class="bg-img"><img src="img/2.jpg" /></div>
</div>
<div class="bg-tile">
<div class="bg-img"><img src="img/2.jpg" /></div>
</div>
</div>
<div class="panel">
<!-- ... -->
</div>
<div class="panel">
<!-- ... -->
</div>
<nav>
<span class="prev"><i></i></span>
<span class="next"><i></i></span>
</nav>
</div>
當然,你可能看上面的結構可能會問為什么不使用背景圖片而用圖像元素?其實在嘗試使用各種方式對比之后,我們在試驗后得出結論,使用背景圖像與設置背景大小的方式可能會導致過渡效果有問題。例如使用 background-size: cover 會導致轉換動畫出現顫抖現象。
我們還需要添加一個導航,這樣我們就可以通過面板進行瀏覽。上面我們還用到了數據屬性,里面設置了動畫的效果。下面,讓我們添加一些樣式到這個效果中。需要注意的是,這里演示的 CSS 將不包含任何瀏覽器的前綴,但在源碼文件是有的。
首先,我們在全屏模式,所以為了讓我們的頁面布滿窗口,需要設置如下:
html, body, .container {
height: 100%;
}
主容器和子元素都將絕對定位,面板將占據所有的寬度和高度:
.js .boxgallery,
.js .boxgallery div {
position: absolute;
}
.js .boxgallery,
.js .panel {
top: 0;
left: 0;
width: 100%;
height: 100%;
}
由於我們的效果將可能有元素超出自己的區域,我們還需要確保不會溢出:
.js .boxgallery,
.bg-tile,
.bg-img {
overflow: hidden;
}
這個例子有三種效果,下面是用於第一效果的 CSS 動畫效果代碼:
.boxgallery[data-effect="effect-1"] .panel.active .bg-tile,
.boxgallery[data-effect="effect-2"] .panel.active .bg-tile {
animation: scaleDown 1.1s ease-in-out;
}
@keyframes scaleDown {
from { transform: translate3d(0,0,380px); }
to { transform: translate3d(0,0,0); }
}
- 太贊了!超炫的頁面切換動畫效果【附源碼下載】
- 創意無限!一組網頁邊欄過渡動畫【附源碼下載】
- 好東西!動感的頁面加載動畫效果【附源碼下載】
- 使用 CSS3 實現3D圖片滑塊效果【附源碼下載】
- 時尚設計!三種奇特網格加載效果【附源碼下載】
本文鏈接:如何創建平鋪背景的四格幻燈片效果 via Codrops

