這個網站展示了四種不同類型的動態漸層背景效果,並使用了現代前端技術和框架來實現響應式設計和互動功能。以下是對網站特點、優點以及程式碼邏輯原理的詳細分析。
-
多樣化的漸層效果:網站提供四種不同風格的動態漸層背景,從基本的線性漸層到複雜的互動式漸層,滿足不同視覺需求。
-
流暢的動畫過渡:所有背景效果都使用了CSS動畫或JavaScript動態變化,創造出流暢的視覺體驗。
-
深色主題設計:採用深色背景配合明亮的漸層色彩,提高了視覺對比度,使色彩更加鮮明。
-
半透明資訊卡片:內容區域使用半透明背景和模糊效果,既保持了背景的可見性,又提高了文字的可讀性。
-
響應式設計:使用Bootstrap框架實現完全響應式佈局,在各種設備上都能良好顯示。
-
模組化結構:HTML、CSS和JavaScript分離,遵循現代前端開發的最佳實踐。
-
互動性:特別是在互動式漸層背景中,加入了滑鼠追蹤功能,增強用戶體驗。
-
無縫導航:導航欄設計清晰,點擊切換不同背景效果時無需頁面重載,提升使用體驗。
-
優化的視覺反饋:導航項目有明確的激活狀態指示,使用黑底白字的反向配色,提高可識別性。
-
性能考量:使用CSS動畫而非大量JavaScript動畫,減輕瀏覽器負擔。
網站採用了清晰的語義化HTML結構:
-
導航區域:使用``元素包含Bootstrap導航組件,每個導航項都有
data-target
屬性指向對應的內容區塊。 -
內容區域:使用``元素分隔不同的背景效果展示,每個區域都有唯一ID與導航項的
data-target
對應。 -
外部資源引用:分離引用Bootstrap CSS/JS和Font Awesome圖標庫,以及自定義的style.css和script.js。
-
基本動態漸層背景:
#basic-gradient { background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab); background-size: 400% 400%; animation: gradientAnimation 15s ease infinite; }
通過設置背景尺寸為400%並使用keyframes動畫移動背景位置,創造出顏色流動效果。
-
進階動態漸層背景: 使用多個絕對定位的圓形元素(
.gradient-blob
),每個元素有不同的漸層色彩、位置和動畫路徑,並應用模糊濾鏡效果。 -
互動式動態漸層背景: 類似進階版,但添加了JavaScript事件監聽器,使背景元素能夠跟隨滑鼠移動。
-
彩虹圓錐漸層背景:
.rainbow-background { background: conic-gradient(#f00, #f50, #ff0, #0c0, #09d, #03a, #909, #f00); animation: rotate 20s linear infinite; }
使用
conic-gradient
創建圓錐漸層,並添加旋轉動畫和模糊覆蓋層。 -
導航欄樣式:
.nav-link.active { color: #000; background-color: #fff; font-weight: bold; }
活動項目使用黑底白字的反向配色,增強可識別性。
-
導航切換功能:
navLinks.forEach(link => { link.addEventListener('click', function(e) { e.preventDefault(); // 移除所有活動類 navLinks.forEach(l => l.classList.remove('active')); document.querySelectorAll('.content-section').forEach(section => { section.classList.remove('active-section'); }); // 添加活動類到當前項 this.classList.add('active'); const targetId = this.getAttribute('data-target'); document.getElementById(targetId).classList.add('active-section'); }); });
這段代碼實現了點擊導航項時,隱藏所有內容區域,只顯示對應的目標區域,同時更新導航項的活動狀態。
-
互動式背景邏輯:
interactiveSection.addEventListener('mousemove', (e) => { // 計算滑鼠位置相對於視窗的百分比 const rect = interactiveSection.getBoundingClientRect(); const mouseX = (e.clientX - rect.left) / rect.width; const mouseY = (e.clientY - rect.top) / rect.height; // 根據滑鼠位置移動漸層元素 blob1.style.transform = `translate(${mouseX * 10}%, ${mouseY * 10}%) rotate(${mouseX * 360}deg)`; blob2.style.transform = `translate(${-mouseX * 15}%, ${-mouseY * 15}%) scale(${1 + mouseY * 0.5})`; // 動態改變漸層顏色 const hue1 = mouseX * 360; const hue2 = mouseY * 360; blob2.style.background = `linear-gradient(135deg, hsl(${hue1}, 100%, 70%), hsl(${hue2}, 100%, 70%))`; });
這段代碼計算滑鼠在容器內的相對位置,然後根據這些值動態調整背景元素的位置、旋轉角度和顏色。
-
響應式導航欄:
window.addEventListener('scroll', () => { if (window.scrollY > 50) { navbar.style.background = 'rgba(0, 0, 0, 0.9)'; } else { navbar.style.background = 'rgba(0, 0, 0, 0.8)'; } });
監聽滾動事件,根據滾動位置調整導航欄的背景透明度。
這個網站展示了現代網頁設計中動態漸層背景的多種實現方式,結合了Bootstrap框架的響應式設計和自定義的CSS/JavaScript效果。它不僅視覺效果豐富,而且代碼結構清晰,實現了良好的用戶體驗和跨設備兼容性。特別是互動式背景的實現,展示了如何使用JavaScript創建與用戶互動的動態視覺效果,這在現代網頁設計中是一個很有價值的技術示例。