CSS可以實(shí)現(xiàn)無(wú)縫輪播的效果,這個(gè)效果很常見,比如廣告圖輪播、商品列表輪播等。
實(shí)現(xiàn)無(wú)縫輪播的核心原理是當(dāng)滾動(dòng)到最后一個(gè)元素時(shí),直接跳轉(zhuǎn)到第一個(gè)元素,形成一個(gè)無(wú)限循環(huán)。通過(guò)CSS的動(dòng)畫和過(guò)渡實(shí)現(xiàn)元素的滾動(dòng)和切換。具體實(shí)現(xiàn)如下:
.carousel { display: flex; overflow: hidden; } .carousel__item { flex-shrink: 0; } .carousel__wrapper { display: flex; flex-wrap: nowrap; transition: transform 0.5s; } .carousel__wrapper--clone { transition: none; } .carousel__wrapper__item { flex-shrink: 0; } .carousel__button--next, .carousel__button--prev { cursor: pointer; } .carousel__button--next { margin-left: auto; } .carousel__button--prev:hover, .carousel__button--next:hover { background-color: rgba(0, 0, 0, 0.1); } .carousel__button--disabled { opacity: 0.5; pointer-events: none; }
具體的HTML布局由需求而定,這里不討論具體實(shí)現(xiàn)。核心代碼在于.carousel__wrapper和.carousel__wrapper--clone,前者為輪播項(xiàng)的容器,后者為復(fù)制的輪播項(xiàng)容器。通過(guò)transition屬性控制切換時(shí)視覺(jué)效果。CSS實(shí)現(xiàn)的無(wú)縫輪播相比JavaScript實(shí)現(xiàn)的好處在于性能優(yōu)化更容易,而且兼容性更好。