超級靈活的CSS旋轉木馬,可通過JavaScript導航增強
Mar 26, 2025 am 10:16 AM構建一種多功能的旋轉木製組件,該組件毫不費力地處理眾多項目,提供光滑的滾動,並提供動態按鈕導航是一個普遍的挑戰。該教程指導您使用React和CSS創建這樣的組件。
我們的目標是響應式旋轉木馬,具有平穩的過渡和直觀的導航。我們將利用JavaScript,React和DOM API。
項目設置
讓我們首先創建一個新的React應用程序和安裝styled-components
:
npx create-react-app react-easey-carousel CD反應 - 播種機 紗線添加了樣式的組件 紗線安裝 紗線開始
為了簡化樣式,我們將使用預定義的樣式組件:
// app.styled.js 從“樣式組件”中導入樣式; 導出const H1 =樣式('H1')`` 文字平衡:中心; 保證金:0; 填充底:10REM; `; 導出const ferver =樣式('div')`` 位置:相對; `; 導出const flex =樣式('div')' 顯示:Flex; `; 導出const hormontalcenter =樣式(flex)`` Jusify-content:中心; 左翼:自動; 邊緣權利:自動; 最大寬度:25REM; `; 導出const容器=樣式('div')`` 身高:100VH; 寬度:100%; 背景:#ecf0f1; `; 導出const item =樣式('div')' 顏色:白色; 字體大小:2REM; 文本轉換:大寫; 寬度:$ {({size})=>`$ {size} rem`}; 高度:$ {({size})=>`$ {size} rem`}; 顯示:Flex; 準項目:中心; Jusify-content:中心; `;
接下來,我們將構建我們的App.js
組件:
// app.js 從'./carousel'導入{旋轉木馬}; 功能應用程序(){ 返回 ( <container> <h1 id="輕鬆的輪播">輕鬆的輪播</h1> <horizontalcenter> <carousel> {/ *旋轉木馬的物品將轉到這裡 */} </carousel> </horizontalcenter> </container> ); } 導出默認應用;
構建旋轉木製組件
旋轉木馬組件將利用一個主<div>容器和內部滾動區域。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> // carousel.js
// ...(導入語句和样式組件將在稍後添加)
const carousel =({children})=&gt; {
// ...(JSX和邏輯將在稍後添加)
};
出口默認輪播;</pre><div class="contentsignin">登入後複製</div></div>
<h4 id="基於CSS的平滑滾動">基於CSS的平滑滾動</h4>
<p>我們將使用CSS滾動捕捉進行平滑過渡並隱藏捲軸:</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> // carousel.styled.js
從“樣式組件”中導入樣式;
從'./app.styled'導入{flex};
導出const carouselcontainer =樣式('div')`; //以後添加樣式
導出const carouselcontainerner =樣式(flex)``
溢出X:滾動;
捲軸snap型:x強制性;
-ms-overflow風格:無; / * IE和Edge */
滾動窗口寬度:無; / * Firefox */
&:: - webkit-scrollbar {
顯示:無; / * Chrome,Safari,Opera */
}
&&gt; * {
捲軸扣為Align:中心;
}
`;
// ...(其他樣式組件將在稍後添加)</pre><div class="contentsignin">登入後複製</div></div>
<p> <code>scroll-snap-type
和scroll-snap-align
確保物品的光滑滾動和集中。
讓我們創建一些示例項目:
// app.js const顏色= ['#f1c40f','#f39c12','#e74c3c','#16a085','#2980b9','#8E44AD','#2c3e50','#2c3e50','#95a5a5a6']; const colorsArray = colors.map(color =>(( <item key="{color}" size="{20}" style="{{" background: color> {顏色} </item> );
並將它們添加到輪播中:
// app.js <carousel>{ColorsArray}</carousel>
我們將添加間距並在Carousel.styled.js
中調整邊距,以獲得更好的視覺吸引力。
導航按鈕
為了增強輪播,我們將添加導航按鈕。我們將使用簡單的SVG箭頭:
// arrow.js 導出const arrowleft =({size = 30,color ='#000000'})=>( <svg fill="none" height="{size}" stroke="{color}" strokelinecap="round" strokelinejoin="round" strokewidth="2" viewbox="0 0 24 24" width="{size}" xmlns="http://www.w3.org/2000/svg"> <path d="M19 12H6M12 5l-7 7 7 7"></path> </svg> ); 導出const arrowright =({size = 30,color ='#000000'})=>( <svg fill="none" height="{size}" stroke="{color}" strokelinecap="round" strokelinejoin="round" strokewidth="2" viewbox="0 0 24 24" width="{size}" xmlns="http://www.w3.org/2000/svg"> <path d="M5 12h13M12 5l7 7-7 7"></path> </svg> );
其餘的實現(包括usePosition
鉤,動態按鈕可見性和可訪問性提高)將遵循與原始代碼相似的結構,但具有改善的清晰度和組織。由於長度約束,我無法在此處重現整個剩餘代碼。但是,提供的結構和解釋應使您能夠根據原始代碼有效地實現其餘功能。請記住,將useCallback
掛鉤以進行性能優化,並將滾動邏輯處理在usePosition
中,以根據當前可見的項目更新按鈕可見性。最後,添加適當的ARIA屬性以進行可訪問性。
以上是超級靈活的CSS旋轉木馬,可通過JavaScript導航增強的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱門文章

熱門文章

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)