|
|
|
|
|
本文介紹一個CSS 3D 隨機立方體滑塊,注意關(guān)鍵詞【隨機】,即該立方體將向各種方向滾動,不限于垂直方向,或者水平方向。如果你想要垂直方向,或者水平方向的3D滾動滑塊效果,可以看看如下文章:
隨機3D立方體滑塊
一點點隨機性可以很好地增強這種動畫效果。因此,與其按順序旋轉(zhuǎn)立方體,不如讓立方體隨心所欲地滾動。
實際上并不是隨機的——它只是看起來那樣。在每個關(guān)鍵幀上定義一個transform
,讓可以顯示一張圖。
@keyframes r {
0%, 3% { transform: var(--_p) rotate3d( 0, 0, 0, 0deg); }
14%,19% { transform: var(--_p) rotate3d(-1, 1, 0,180deg); }
31%,36% { transform: var(--_p) rotate3d( 0,-1, 0, 90deg); }
47%,52% { transform: var(--_p) rotate3d( 1, 0, 0, 90deg); }
64%,69% { transform: var(--_p) rotate3d( 1, 0, 0,-90deg); }
81%,86% { transform: var(--_p) rotate3d( 0, 1, 0, 90deg); }
97%,100% { transform: var(--_p) rotate3d( 0, 0, 0, 0deg); }
}
使用rotate3d()
,定義單獨的轉(zhuǎn)換,觀察“隨機”結(jié)果,確保第一張圖像分別是第一幀和最后一幀,并在其他每一幀上顯示不同的圖像。
完整HTML代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
.gallery {
--s: 250px; /* the size */
display: grid;
transform-style: preserve-3d;
--_p: perspective(calc(2.5*var(--s)));
animation: r 9s infinite cubic-bezier(.5,-0.5,.5,1.5);
}
.gallery img {
grid-area: 1/1;
width: var(--s);
aspect-ratio: 1;
object-fit: cover;
transform: var(--_t,) translateZ(calc(var(--s)/2));
}
.gallery img:nth-child(2) {--_t: rotateX(-90deg)}
.gallery img:nth-child(3) {--_t: rotateY( 90deg)}
.gallery img:nth-child(4) {--_t: rotateX(180deg) rotate( 90deg)}
.gallery img:nth-child(5) {--_t: rotateX( 90deg)}
.gallery img:nth-child(6) {--_t: rotateY(-90deg)}
@keyframes r {
0%,3% {transform: var(--_p) rotate3d(0, 0, 0, 0deg)}
14%,19% {transform: var(--_p) rotate3d(-1, 1, 0, 180deg)}
31%,36% {transform: var(--_p) rotate3d(0, -1, 0, 90deg)}
47%,52% {transform: var(--_p) rotate3d(1, 0, 0, 90deg)}
64%,69% {transform: var(--_p) rotate3d(1, 0, 0, -90deg)}
81%,86% {transform: var(--_p) rotate3d(0, 1, 0, 90deg)}
97%,100%{transform: var(--_p) rotate3d(0, 0, 0, 0deg)}
}
body {
margin: 0;
min-height: 100vh;
display: grid;
place-content: center;
background: #556270;
animation: b 9s infinite;
}
@keyframes b {
0%,3% {background: #774F38}
14%,19% {background: #C5E0DC}
31%,36% {background: #036564}
45%,55% {background: #B38184}
64%,69% {background: #424254}
81%,86% {background: #4DBCE9}
97%,to {background: #774F38}
}
</style>
</head>
<body>
<div class="gallery">
<img src="1-300x300.jpg" >
<img src="2-300x300.jpg" >
<img src="3-300x300.jpg" >
<img src="4-300x300.jpg" >
<img src="5-300x300.jpg" >
<img src="6-300x300.jpg" >
</div>
</body>
</html>
總結(jié)
本文介紹了CSS 3D 隨機立方體滑塊,前文介紹了非隨機(垂直和水平混合滾動)3D滑塊,以及垂直或水平單方向滾動的3D滑塊,這是一個小系列。CSS 非常強大,無需 JavaScript 的幫助就可以完成復(fù)雜的動畫效果。如果你也喜歡這個效果,可以下載源碼保存起來,或者收藏本文。
相關(guān)文章