網站中經常會出現各種各樣的抽獎活動,如果要做一個有趣的抽獎效果,需要用到一些 CSS 和 JavaScript 技術。
首先,我們可以通過 CSS3 的 transform 屬性來創建一個 3D 的轉盤效果。下面是一個示例的 CSS 代碼:
.lottery-box { position: relative; width: 300px; height: 300px; background-image: url("bg.png"); background-size: contain; background-repeat: no-repeat; perspective: 800px; } .lottery-wheel { position: absolute; top: 0; left: 0; width: 100%; height: 100%; transition: transform 6s ease-in-out; transform-style: preserve-3d; } .lottery-wheel div { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 50%; box-shadow: inset 0 0 20px rgba(0, 0, 0, .3), 0 0 20px rgba(0, 0, 0, .3); transform-origin: 50% 0 0; backface-visibility: hidden; } .lottery-wheel div:nth-child(odd) { background: linear-gradient(to top, #ff9966, #ff5e62); transform: rotateY(calc(var(--index) * 60deg)) translateZ(150px); z-index: -1; } .lottery-wheel div:nth-child(even) { background: linear-gradient(to top, #4ad4ae, #69e7f4); transform: translateZ(150px) rotateY(calc(var(--index) * 60deg)); transform-style: preserve-3d; z-index: -1; }
其中,.lottery-box 是我們包裹抽獎轉盤的容器,.lottery-wheel 包括了我們的轉盤元素,div 元素則是每個“獎品”的圓弧形塊。我們通過 transform 屬性來控制每個圓弧塊的位置和旋轉角度,而 perspective 屬性則是用來控制整個轉盤的透視效果的。
接下來,我們需要通過 JavaScript 來控制抽獎的邏輯。下面是一個示例的 JavaScript 代碼:
var lotteryBtn = document.querySelector(".lottery-btn"); var lotteryWheel = document.querySelector(".lottery-wheel"); lotteryBtn.onclick = function() { var randomNum = Math.floor(Math.random() * 6 + 1); lotteryWheel.style.transform = "rotateY(" + (randomNum * 60 - 30) + "deg)"; };
其中,lotteryBtn 是我們的“抽獎”按鈕,lotteryWheel 是包裹轉盤元素的容器。每次點擊“抽獎”按鈕時,我們都會隨機生成一個數字,然后通過改變 lotteryWheel 的 transform 屬性,讓轉盤旋轉到對應的獎品位置。
結合 CSS 和 JavaScript 技術,我們可以實現一個流暢而有趣的抽獎效果。