」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 CSS 剪輯路徑和 JavaScript 實現反轉文字顏色懸停效果?

如何使用 CSS 剪輯路徑和 JavaScript 實現反轉文字顏色懸停效果?

發佈於2024-11-09
瀏覽:895

How to Achieve an Inverted Text Color Hover Effect Using CSS Clip-paths and JavaScript?

使用CSS 和JavaScript 反轉滑鼠懸停時的文字顏色

實現所需的懸停效果,其中黑色文字反轉為白色,同時保持出現黑色遊標時,我們可以將CSS 剪輯路徑的功能與JavaScript 事件處理結合。

此方法包括建立兩層文字:主文本層和反轉的文字層。倒置文字圖層位於主文字圖層後面,並將其文字顏色設為白色。

使用 JavaScript,我們捕捉滑鼠移動並動態調整倒置文字圖層的剪輯路徑。當滑鼠移動時,剪輯路徑會進行調整以顯示更多反轉的文本,從而產生主文本反轉其顏色的錯覺。

以下是關鍵程式碼元件的細分:

/* Primary Text Layer */
h1 {
  color: #000;
  position: relative;
}

/* Inverted Text Layer */
h1:before {
  position: absolute;
  content: attr(data-text); /* Same text as primary layer */
  color: #fff;
  background: #000;
  clip-path: circle(0 at var(--x, -100%) var(--y, -100%)); /* Dynamic Clip-path */
}

/* Cursor */
.cursor {
  position: fixed;
  width: 40px;
  height: 40px;
  background: #000;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  z-index: -2;
}
// Event Listener for Mouse Movement
document.body.onmousemove = function(e) {
  // Update cursor position
  cursor.style.left = e.clientX   'px';
  cursor.style.top = e.clientY   'px';

  // Update clip-path of inverted layer based on mouse position
  h1.style.setProperty('--x', (e.clientX - p.top)   'px');
  h1.style.setProperty('--y', (e.clientY - p.left)   'px');
};

範例程式碼:

WORK

結果:

當您將滑鼠懸停在「WORK」文字上時,黑色文字將逐漸過渡為白色隨著滑鼠遊標的移動。

最新教學 更多>
  • 如何在 Go (Gorilla) 中向特定客戶端發送有針對性的 Websocket 更新?
    如何在 Go (Gorilla) 中向特定客戶端發送有針對性的 Websocket 更新?
    在Go (Gorilla) 中向特定客戶端發送Websocket 更新儘管是Go 新手,但您尋求有關實現Websocket 通信的指導您的預輸入項目。您已嘗試利用 Gorilla 的 GitHub 儲存庫中的範例,但在理解如何識別特定客戶端並針對 websocket 更新進行定位方面遇到了挑戰。 要...
    程式設計 發佈於2024-11-09
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-09
  • 使用swoole作為基於ESP6的腳本可程式控制器的雲端物聯網閘道框架
    使用swoole作為基於ESP6的腳本可程式控制器的雲端物聯網閘道框架
    腳本可程式控制器的本機功能基本上已完成,開始實現遠端相關功能。 遠端系統整體架構如下: 使用ESP8266的SDK實作tcp伺服器和tcp客戶端。 在tcp伺服器的基礎上編寫http協議解析程式碼,設計簡單的http伺服器,處理與瀏覽器的資料交互,包括內建網頁的下載,並使用ajax技術獲取狀態並...
    程式設計 發佈於2024-11-09
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-09
  • 為什麼在 Java 的 Random 類別中設定種子會傳回相同的數字?
    為什麼在 Java 的 Random 類別中設定種子會傳回相同的數字?
    Java隨機數產生:為什麼設定種子會回傳相同的數字? 儘管將Random類別的種子設定為特定值,但隨機數產生器始終會傳回相同的數字。讓我們探討一下可能導致此問題的原因。 了解 Random 類別和種子初始化Java Random 類別旨在產生偽隨機數。預設情況下,它使用其內部時鐘作為種子值,使其產生...
    程式設計 發佈於2024-11-09
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-09
  • 如何克服使用反射設定結構體欄位值時 SetCan() 總是傳回 False 的問題?
    如何克服使用反射設定結構體欄位值時 SetCan() 總是傳回 False 的問題?
    使用結構體的 SetString 探索反射反射提供了動態操作 Go 結構的強大工具。在此範例中,我們在嘗試使用反射來設定結構體欄位的值時遇到一個常見問題:CanSet() 始終傳回 false。這種障礙阻止了字段修改,使我們陷入困境。 識別陷阱提供的程式碼片段突顯了兩個基本錯誤:傳遞值而非指標: ...
    程式設計 發佈於2024-11-09
  • 為什麼 MySQL 中帶有子查詢的「IN」查詢很慢,如何提升效能?
    為什麼 MySQL 中帶有子查詢的「IN」查詢很慢,如何提升效能?
    MySQL 中帶有子查詢的緩慢「IN」查詢當使用子查詢時,使用「IN」運算子的MySQL查詢可能會表現出顯著的效能下降檢索「IN」子句的值很複雜。在這種情況下,用明確值取代子查詢結果會顯著縮短執行時間。 要了解此行為的原因,需要注意的是,每次評估「IN」查詢時,MySQL 都會執行子查詢。在提供的範...
    程式設計 發佈於2024-11-09
  • 如何使用WinAPI取得螢幕解析度?
    如何使用WinAPI取得螢幕解析度?
    使用 WinAPI 取得螢幕解析度在 WinAPI 中,存在多個函數來決定目前螢幕解析度。適當的選擇取決於具體要求。 檢索顯示尺寸檢索顯示尺寸檢索顯示尺寸 主監視器:使用GetSystemMetrics(SM_CXSCREEN) 和GetSystemMetrics( SM_CYCYSEN) 取得主顯...
    程式設計 發佈於2024-11-09
  • 如何修復透過 Gmail REST API 發送電子郵件時出現的「400 錯誤請求 + 失敗前提條件」錯誤?
    如何修復透過 Gmail REST API 發送電子郵件時出現的「400 錯誤請求 + 失敗前提條件」錯誤?
    Gmail REST API:解決“400 Bad Request Failed Precondition”錯誤嘗試使用Gmail REST API 與伺服器發送電子郵件時-到伺服器授權時,您可能會遇到一條錯誤訊息,指出「400 Bad Request Failed Precondition」。此錯...
    程式設計 發佈於2024-11-09
  • 如何使用 LOAD XML 和 XML_LOAD() 將缺少 ID 列的 XML 檔案匯入 MySQL?
    如何使用 LOAD XML 和 XML_LOAD() 將缺少 ID 列的 XML 檔案匯入 MySQL?
    使用XML_LOAD() 函數將XML 檔案匯入MySQL在這種情況下,您在嘗試使用下列命令將XML 檔案匯入MySQL 資料庫表時遇到錯誤載入XML 指令。出現此問題的原因是表中的欄位數與 XML 檔案中的值不匹配,且表中多了一個自動遞增 id 欄位。 要解決此錯誤,您可以指定要使用 LOAD X...
    程式設計 發佈於2024-11-09
  • C++ 物件的記憶體是如何組織的?
    C++ 物件的記憶體是如何組織的?
    C 物件的記憶體佈局動態轉換和重新解釋操作通常涉及操作物件記憶體指標。讓我們深入研究 C 如何在記憶體中組織對象,以便更好地理解這些操作。 根據 C 標準,類別或結構中非靜態資料成員的記憶體佈局主要由它們的宣告順序決定。具有相同存取說明符的成員按其聲明的順序排序。 除了成員變數之外,物件還為以下物件...
    程式設計 發佈於2024-11-09
  • 時間數據系列:故事的其餘部分
    時間數據系列:故事的其餘部分
    Time Data Series: The Rest of the Story - AdatoSystems It’s been a while since I wrote about PHP Zmanim – the work I’ve done with it and the ...
    程式設計 發佈於2024-11-09
  • 如何在 PyCharm 中輕鬆管理 Django 專案的環境變數?
    如何在 PyCharm 中輕鬆管理 Django 專案的環境變數?
    在PyCharm 中設定環境變數在處理依賴環境變數的專案時,擁有方便的方法直接在開發環境中管理這些設定至關重要。在本指南中,我們將示範如何在 PyCharm 中輕鬆設定環境變量,而無需求助於手動配置或 bash 檔案。 具體來說,我們將重點放在為Django 專案設定以下環境變數:DATABASE_...
    程式設計 發佈於2024-11-09
  • 如何修復 Windows 上的「pip install」存取被拒絕錯誤?
    如何修復 Windows 上的「pip install」存取被拒絕錯誤?
    克服Windows 上的「pip install」存取被拒絕錯誤使用pip 安裝可能是一項簡單的任務,但有時您可能會遇到存取錯誤在Windows 上出現拒絕錯誤,即使以管理員身分執行命令提示字元或PowerShell 也是如此。 此錯誤通常表現為:WindowsError: [Error 5] Ac...
    程式設計 發佈於2024-11-09

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3