目錄
項目設置
輕鬆的輪播
構建旋轉木製組件
基於CSS的平滑滾動
導航按鈕
首頁 web前端 css教學 超級靈活的CSS旋轉木馬,可通過JavaScript導航增強

超級靈活的CSS旋轉木馬,可通過JavaScript導航增強

Mar 26, 2025 am 10:16 AM

超級靈活的CSS旋轉木馬,可通過JavaScript導航增強

構建一種多功能的旋轉木製組件,該組件毫不費力地處理眾多項目,提供光滑的滾動,並提供動態按鈕導航是一個普遍的挑戰。該教程指導您使用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})=&amp;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 */ } &&amp;gt; * { 捲軸扣為Align:中心; } `; // ...(其他樣式組件將在稍後添加)</pre><div class="contentsignin">登入後複製</div></div> <p> <code>scroll-snap-typescroll-snap-align確保物品的光滑滾動和集中。

讓我們創建一些示例項目:

 // app.js
const顏色= ['#f1c40f','#f39c12','#e74c3c','#16a085','#2980b9','#8E44AD','#2c3e50','#2c3e50','#95a5a5a6'];
const colorsArray = colors.map(color =&gt;((
  <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'})=&gt;(
  <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'})=&gt;(
  <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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

將框陰影添加到WordPress塊和元素 將框陰影添加到WordPress塊和元素 Mar 09, 2025 pm 12:53 PM

將框陰影添加到WordPress塊和元素

使用智能表單框架創建JavaScript聯繫表格 使用智能表單框架創建JavaScript聯繫表格 Mar 07, 2025 am 11:33 AM

使用智能表單框架創建JavaScript聯繫表格

創建一個具有可滿足屬性的內聯文本編輯器 創建一個具有可滿足屬性的內聯文本編輯器 Mar 02, 2025 am 09:03 AM

創建一個具有可滿足屬性的內聯文本編輯器

使用GraphQL緩存 使用GraphQL緩存 Mar 19, 2025 am 09:36 AM

使用GraphQL緩存

使您的第一個自定義苗條過渡 使您的第一個自定義苗條過渡 Mar 15, 2025 am 11:08 AM

使您的第一個自定義苗條過渡

比較5個最佳的PHP形式構建器(和3個免費腳本) 比較5個最佳的PHP形式構建器(和3個免費腳本) Mar 04, 2025 am 10:22 AM

比較5個最佳的PHP形式構建器(和3個免費腳本)

在node.js中使用multer上傳並上傳express 在node.js中使用multer上傳並上傳express Mar 02, 2025 am 09:15 AM

在node.js中使用multer上傳並上傳express

揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐 揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐 Mar 08, 2025 am 09:45 AM

揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐

See all articles