CSS多圖片文字滑動(dòng)切換是一種常見(jiàn)的網(wǎng)頁(yè)設(shè)計(jì)效果,本文將介紹如何使用CSS實(shí)現(xiàn)這種效果。
首先,我們需要準(zhǔn)備多張圖片和對(duì)應(yīng)的文字。假設(shè)我們有三張圖片和三段文字:
<div class="slider"> <img src="img1.jpg" alt="Image 1"> <img src="img2.jpg" alt="Image 2"> <img src="img3.jpg" alt="Image 3"> <p>Caption 1</p> <p>Caption 2</p> <p>Caption 3</p> </div>
接下來(lái),我們需要將圖片和文字布局在一起,并且只顯示當(dāng)前選中的圖片和文字。我們可以使用CSS的position屬性和透明度來(lái)實(shí)現(xiàn)這個(gè)效果:
.slider img { position: absolute; top: 0; left: 0; opacity: 0; transition: opacity 1s ease-in-out; } .slider img.active { opacity: 1; } .slider p { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); opacity: 0; transition: opacity 1s ease-in-out; } .slider p.active { opacity: 1; }
上面的代碼中,我們?cè)O(shè)置所有圖片和文字的position屬性為absolute,然后設(shè)置它們的opacity屬性為0,這樣它們就不可見(jiàn)了。當(dāng)某張圖片和對(duì)應(yīng)的文字被選中時(shí),我們給它們添加一個(gè)active類,這個(gè)類的opacity屬性被設(shè)置為1,于是它們就顯示出來(lái)了。同時(shí),我們給它們?cè)O(shè)置了一個(gè)1秒的transition動(dòng)畫(huà),使得顯示和隱藏效果更加平滑。
現(xiàn)在我們來(lái)寫(xiě)一些JavaScript代碼來(lái)實(shí)現(xiàn)自動(dòng)切換圖片和文字的功能。我們可以創(chuàng)建一個(gè)變量current來(lái)表示當(dāng)前選中的圖片和文字,然后定期調(diào)用一個(gè)函數(shù)來(lái)更新它們:
let current = 0; function showSlide(n) { let slides = document.querySelectorAll('.slider img'); let captions = document.querySelectorAll('.slider p'); for (let i = 0; i< slides.length; i++) { slides[i].classList.remove('active'); captions[i].classList.remove('active'); } slides[n].classList.add('active'); captions[n].classList.add('active'); current = n; } function nextSlide() { let n = current + 1; if (n >= slides.length) { n = 0; } showSlide(n); } setInterval(nextSlide, 5000);
上面的代碼中,我們定義了兩個(gè)函數(shù):showSlide和nextSlide。showSlide函數(shù)用來(lái)顯示指定的圖片和文字,它接受一個(gè)參數(shù)n表示要顯示的圖片和文字的序號(hào),0表示第一張,1表示第二張,以此類推。nextSlide函數(shù)用來(lái)切換到下一張圖片和文字,它先將current加1,然后判斷是否超出了范圍,如果超出了范圍就回到第一張。最后,我們使用setInterval函數(shù)定時(shí)調(diào)用nextSlide函數(shù),實(shí)現(xiàn)自動(dòng)切換效果。
通過(guò)上面的步驟,我們已經(jīng)可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的CSS多圖片文字滑動(dòng)切換效果了。如果您想增加更多的細(xì)節(jié)和動(dòng)畫(huà)效果,可以進(jìn)一步修改上面的代碼。