助CSS所提供的animation動畫屬性及2D、3D變換屬性,我們可以擺脫對JavaScript的依賴,設計開發各類效果優秀的前端動態效果,在之前文章和視頻中我們也介紹了不少基于CSS與JavaScript技術實現的各類動畫及頁面元素設計效果。本文主要介紹使用CSS技術實現精美的3D旋轉相冊效果。主要實現效果動畫展示如下:
純CSS技術實現旋轉相冊效果展示
本例開發主要涉及使用技術包括animation動畫屬性、keyframes關鍵幀、transform變形等相關知識及方法、技術。部分核心技術說明如下:
1、CSS自定義屬性(變量)
在使用CSS進行樣式定義時,可以使用自定義屬性,即變量。從變量而言考慮的話,會涉及到變量的定義、賦值與使用等。自定義屬性的聲明使用--表示。其賦值與style樣式其他屬性類似可通過:(冒號)進行賦值。在使用該自定義屬性時需要用var()函數對屬性名進行包裹。如在自定義變量需要進行數學運算時需要使用calc()方法。自定義屬性實例如下:
:root{--fontSize:2em;}
p{font-size:var(--fontSize);}
CSS自定義屬性使用實例如上所示,我們定義了一個fontSize變量,在P元素選擇器中使用了該定義的變量,即設置P段落字體size為2em。
2、3D變換屬性與方法
實現3D效果需要使用3D變換相關屬性與方法,其主要屬性方法包括transform-origin(旋轉原點)、transform-style(旋轉類型2D/3D)、perspective(透視點)等屬性,主要方法包括translate位移、scale放縮、rotate旋轉與skew扭曲等。使用實例代碼如下:
position: absolute;//定位
transform-origin: center;//中心點
transform-style: preserve-3d;//類型
transform:
translateZ(400px) rotateY(60deg);
//沿Z軸移動400px,沿Y軸旋轉60度
3、flex布局
本例需要使用flex布局用于實現將頁面元素在頁面中位置進行定位與布局設置,主要設置水平與垂直居中效果,實例代碼如下:
display: flex;
justify-content: center;
align-items: center;
在明確以上基本技術點之后,我們就可以收集素材完整3D旋轉相冊的設計與制作。首先第一步就是素材的采集,本例所需圖片如下所示:
3D旋轉相冊圖片素材
在完成素材搜集基礎上就可以使用CSS頁面布局技術等,實現頁面的布局,通過旋轉變換,將10張圖片進行不同角度的分布。其中頁面布局代碼如下:
頁面布局代碼
完成頁面元素設置之后,就要考慮頁面布局問題,本例需要實現旋轉因此需要將每一個圖片所對應元素進行旋轉等變換設置。部分代碼如下:
CSS樣式設置
核心CSS樣式設置如上圖所示,其中我們定義了動畫animate,因此需要使用keyframes對其關鍵幀進行定義,關鍵幀定義如下:
動畫關鍵幀定義
通過關鍵幀定義之后,整個gallery層就會繞著y軸進行旋轉最終實現動態旋轉效果。本例靜態展示如下圖所示:
3D旋轉相冊靜態效果展示
以上給出了3D旋轉相冊設計及實現過程核心知識點及實現思路過程、核心代碼說明。如需完整代碼請關注并私信。
本頭條號長期關注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可在評論區回復。更多程序設計相關教程及實例分享,期待大家關注與閱讀!
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style type="text/css">
body{
background: #f14849;
}
div{
position: relative;
width: 300px;
height: 300px;
margin:100px auto;
}
div img{
position: absolute;
top:0;
left:0;
transition:all 1s;
backface-visibility:hidden;
}
/*
1、先把背面(bg01)的圖片,先翻轉180deg 隱藏
2、鼠標移入,讓前面(bg02)的圖片,翻轉180deg 隱藏
3、再讓bg01 翻轉回0deg
*/
div img:nth-of-type(1){transform:rotateY(180deg);}
div:hover img:nth-of-type(2){
transform:rotateY(180deg);
}
div:hover img:nth-of-type(1){
transform:rotateY(0deg);
}
</style>
</head>
<body>
<div>
<img src="img/bg01.png" >
<img src="img/bg02.png" >
</div>
</body>
</html>
片規格: 300px * 300px
avaScript案例講解:3D相冊拖拽旋轉
知識點:利用for循環動態布局,獲取元素,css3與js的結合,3D場景的打造,JS加載問題,編程思維,定時器,鼠標事件,event事件。
效果圖:
拖拽可旋轉
*請認真填寫需求信息,我們會在24小時內與您取得聯系。