CSS輪播圖是一種常用的網(wǎng)頁(yè)元素,用于展示多張圖片,而“風(fēng)扇”則可能指的是一種特定的輪播圖樣式,即圖片以風(fēng)扇旋轉(zhuǎn)的方式呈現(xiàn),要實(shí)現(xiàn)CSS輪播圖的循環(huán)播放效果,可以通過(guò)編寫(xiě)CSS動(dòng)畫(huà)來(lái)實(shí)現(xiàn),以下是一個(gè)簡(jiǎn)單的示例代碼:
HTML結(jié)構(gòu):
<div class="carousel"> <div class="carousel-item"> <img src="image1.jpg" alt="Image 1"> </div> <div class="carousel-item"> <img src="image2.jpg" alt="Image 2"> </div> <div class="carousel-item"> <img src="image3.jpg" alt="Image 3"> </div> <!-- 更多圖片 --> </div>
CSS樣式:
.carousel { position: relative; width: 300px; height: 200px; overflow: hidden; } .carousel-item { position: absolute; width: 300px; height: 200px; opacity: 0; transition: opacity 1s linear; } .carousel-item img { width: 100%; height: 100%; }
JavaScript代碼:
var carousel = document.querySelector('.carousel'); var items = carousel.querySelectorAll('.carousel-item'); var index = 0; var count = items.length; var timer = null; var speed = 1000; // 1秒切換一次圖片 var transitionTime = 1000; // 1秒過(guò)渡時(shí)間 var currentItem = items[index]; // 當(dāng)前顯示的圖片項(xiàng) var nextItem = items[(index + 1) % count]; // 下一張要顯示的圖片項(xiàng) var prevItem = items[(index - 1) % count]; // 上一張要顯示的圖片項(xiàng) var itemWidth = items[0].offsetWidth; // 圖片項(xiàng)的寬度,用于計(jì)算動(dòng)畫(huà)距離 var itemHeight = items[0].offsetHeight; // 圖片項(xiàng)的高度,用于計(jì)算動(dòng)畫(huà)距離 var transformValue = 'translate(' + itemWidth + 'px, ' + itemHeight + 'px) rotate(-' + (index * 60) + 'deg)'; // 計(jì)算旋轉(zhuǎn)角度和距離,這里假設(shè)每次旋轉(zhuǎn)60度,根據(jù)圖片數(shù)量調(diào)整角度值 var transformPrevValue = 'translate(' + itemWidth + 'px, ' + itemHeight + 'px) rotate(-' + ((index - 1) * 60) + 'deg)'; // 上一張圖片的旋轉(zhuǎn)角度和距離值,用于過(guò)渡動(dòng)畫(huà)效果,這里假設(shè)每次旋轉(zhuǎn)60度,根據(jù)圖片數(shù)量調(diào)整角度值 var transformNextValue = 'translate(' + itemWidth + 'px, ' + itemHeight + 'px) rotate(-' + ((index + 1) * 60) + 'deg)'; // 下一張圖片的旋轉(zhuǎn)角度和距離值,用于過(guò)渡動(dòng)畫(huà)效果,這里假設(shè)每次旋轉(zhuǎn)60度,根據(jù)圖片數(shù)量調(diào)整角度值 var transitionStyle = 'transform ' + transitionTime + 'ms ' + transformValue; // 計(jì)算過(guò)渡動(dòng)畫(huà)樣式字符串,這里假設(shè)過(guò)渡時(shí)間為1秒(1000ms) var transitionPrevStyle = 'transform ' + transitionTime + 'ms ' + transformPrevValue; // 上一張圖片的過(guò)渡動(dòng)畫(huà)樣式字符串,這里假設(shè)過(guò)渡時(shí)間為1秒(1000ms) var transitionNextStyle = 'transform ' + transitionTime + 'ms ' + transformNextValue; // 下一張圖片的過(guò)渡動(dòng)畫(huà)樣式字符串,這里假設(shè)過(guò)渡時(shí)間為1秒(1000ms) var currentItemStyle = currentItem.style; // 當(dāng)前圖片的樣式對(duì)象,用于保存原始樣式和設(shè)置過(guò)渡動(dòng)畫(huà)樣式字符串 var prevItemStyle = prevItem.style; // 上一張圖片的樣式對(duì)象,用于保存原始樣式和設(shè)置過(guò)渡動(dòng)畫(huà)樣式字符串(可選) var nextItemStyle = nextItem.style; // 下一張圖片的樣式對(duì)象,用于保存原始樣式和設(shè)置過(guò)渡動(dòng)畫(huà)樣式字符串(可選) var isTransitioning = false; // 是否正在過(guò)渡動(dòng)畫(huà)中,防止重復(fù)設(shè)置過(guò)渡動(dòng)畫(huà)樣式字符串(可選) var isTransitioningPrev = false; // 是否正在過(guò)渡動(dòng)畫(huà)中,防止重復(fù)設(shè)置過(guò)渡動(dòng)畫(huà)樣式字符串(可選)