CSS文字特效實例:猜猜我是誰

CSS文字特效實例:猜猜我是誰

引言

在之前的文章中,我們分別實現了空心文字、文字填充、文字模糊、文字裂開等效果。本文將使用一個小實例,組合使用相關特效:當鼠標懸停在圖片上時,其余圖片模糊,且文字會上下裂開,其效果圖如下所示:

效果圖

在這里插入圖片描述

代碼實現:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文字特效實例:猜猜我是誰</title><style>/* 容器樣式 */.image-container {display: flex;width: 100%;height: 80vh;}/* 圖片樣式 */.image-wrapper {flex: 1;margin: 10px;font-size: 150px;font-weight: 900;/* 文字裁剪效果 */background-clip: text; -webkit-background-clip: text; /* 顏色設置為透明,用圖片填充 */color: transparent; /* 圖片鋪滿容器 */background-size: cover; background-position: center;/* 文字水平居中 */text-align: center;/* 文字垂直居中 */display: flex;align-items: center;justify-content: center;border: 2px solid #eee;border-radius: 10px;/* 確保偽元素相對于該元素定位 */position: relative; }/* 分別給每個image-wrapper設置不同的背景 */.image-wrapper:nth-child(1) {background-image: url('./img/nezha.jpg');}.image-wrapper:nth-child(2) {background-image: url('./img/aobing.jpg');}.image-wrapper:nth-child(3) {background-image: url('./img/xiaobao.jpg');}/* 模糊效果樣式 */.blur {filter: blur(5px);}/* 文字裂開效果 */.text-split::before,.text-split::after {/* 使用自定義屬性中的文本內容 */	content: attr(data-text); /* 絕對定位,確保文字能覆蓋在原始文本上 */position: absolute; top: calc(50% - 105px);left: 0;width: 100%;/* 一定要注意高度設置,可能會導致元素切割出現錯誤 */height: 200px;/* 文字顏色 */color: #c1c1c1;}.text-split::before {/* 裁剪路徑,只顯示上半部分 */clip-path: polygon(0% 0%, 100% 0%, 100% 50%, 0% 50%); animation: crack1 1s forwards; } .text-split::after {/* 裁剪路徑,只顯示下半部分 */clip-path: polygon(0% 50%, 100% 50%, 100% 100%, 0% 100%); animation: crack2 1s forwards; } /* 向上移動 */@keyframes crack1 {0% { transform: translateY(0); } 100% { transform: translateY(-25px); } }/* 向下移動 */@keyframes crack2 {0% { transform: translateY(0); } 100% { transform: translateY(25px); } }/* 文字裂開時,中間要展示的文字部分 */.middle-text {position: absolute;top: 50%;left: 0;width: 100%;text-align: center;/* 文字顏色 */color: #eee;/* 使用多層不同的陰影疊加,實現文字發光 */text-shadow: 0 0 15px #00ffff,  		   0 0 30px rgba(0, 255, 255, 0.5),  0 0 50px rgba(0, 255, 255, 0.3);font-size: 24px; transform: translateY(-50%);/* 確保在偽元素之上顯示 */z-index: 1;}</style>
</head><body><div class="image-container"><div class="image-wrapper" data-text="猜猜看">猜猜看</div><div class="image-wrapper" data-text="猜猜看">猜猜看</div><div class="image-wrapper" data-text="猜猜看">猜猜看</div></div><script>// 獲取所有.image-wrapper元素let wrappers = document.querySelectorAll('.image-wrapper');// 鼠標進入時的具體操作function hover(element) {// 遍歷所有.image-wrapper元素wrappers.forEach(function(wrapper) {if (wrapper !== element) {// 不是當前元素,添加模糊效果wrapper.classList.add('blur');}else{ // 是當前元素// 1.移除原本的文本屬性,并顯示完整圖片wrapper.textContent = ''wrapper.style.webkitBackgroundClip = 'border-box';wrapper.style.backgroundClip = 'border-box';// 2.添加text-split類wrapper.classList.add('text-split')// 3.設置中間文字元素const middleText = document.createElement('span');middleText.classList.add('middle-text');// 4.獲取背景圖片的url路徑const backgroundImageUrl = window.getComputedStyle(wrapper).backgroundImage;// 4.1.url路徑分解:先去除()'"等字符,并根據/切割const imageUrlSplits = backgroundImageUrl.replaceAll(/[()"' ]/g, '').split('/')// 4.2.url路徑分解中的最后一個元素即為圖片名稱const imageName = imageUrlSplits.pop()// 4.3.根據背景圖片的名稱,設置要展示的文字const textContent = ',你猜對了嗎?'if (imageName === 'nezha.jpg') {middleText.textContent = '我是哪吒' + textContent;} else if (imageName === 'aobing.jpg') {middleText.textContent = '我是敖丙' + textContent;} else if (imageName === 'xiaobao.jpg') {middleText.textContent = '我是申小豹' + textContent;} else {middleText.textContent = '未知圖片';}// 5.添加中間文字元素wrapper.appendChild(middleText);}});}// 鼠標離開時的具體操作function leave(element) {// 遍歷所有.image-wrapper元素wrappers.forEach(function (wrapper) {// 移除模糊效果wrapper.classList.remove('blur');if (wrapper === element) {// 移除中間文字元素const middleText = wrapper.querySelector('.middle-text');if (middleText) {wrapper.removeChild(middleText);}// 添加文字裁剪效果wrapper.style.webkitBackgroundClip = 'text';wrapper.style.backgroundClip = 'text';// 移除文字分裂效果wrapper.classList.remove('text-split');wrapper.textContent = wrapper.dataset.text;}});}// 鼠標進入時效果function handleMouseOver() {hover(this);}// 鼠標移除時效果function handleMouseOut() {leave(this);}// 為每個.image-wrapper元素添加事件監聽器wrappers.forEach(function (wrapper) {wrapper.addEventListener('mouseover', handleMouseOver);wrapper.addEventListener('mouseout', handleMouseOut);});// 頁面卸載時,清除事件監聽window.addEventListener('beforeunload', function () {wrappers.forEach(function (wrapper) {wrapper.removeEventListener('mouseover', handleMouseOver);wrapper.removeEventListener('mouseout', handleMouseOut);});});</script>
</body>
</html>    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

美團社招一面

美團社招一面 做題 1、面試題 <style> .outer{width: 100px;background: red;height: 100px; }.inner {width: 50px;height: 50px;background: green; }</style> <div class"outer"><div class"inner"></div> </div>…

InitializingBean接口和@PostConstruct-筆記

1. InitializingBean 簡介 1.1 功能簡介 InitializingBean 是 Spring 框架中的一個接口&#xff0c;用在 Bean 初始化后執行自定義邏輯。它提供了 afterPropertiesSet() 方法&#xff0c;該方法在以下時機被 Spring 容器自動調用&#xff1a; 屬性注入完成后&#xff08;即所…

《代碼整潔之道》第9章 單元測試 - 筆記

測試驅動開發 (TDD) 是一種編寫整潔代碼的“規程”或“方法論”&#xff0c;而不僅僅是測試技術。 JaCoCo 在運行測試后生成詳細的覆蓋率報告的工具&#xff0c; maven 引用。 測試驅動開發 測試驅動開發&#xff08;TDD&#xff09;是什么&#xff1f; TDD 不是說寫完代碼…

openGauss新特性 | DataKit支持PostgreSQL到openGauss的遷移能力

Postgresql-\>openGauss遷移工具debezium-connector-postgres 可獲得性 本特性自openGauss 7.0.0-RC1版本開始引入。 特性簡介 debezium-connector-postgres工具是一個基于Java語言的Postgresql到openGauss的復制工具。該工具提供了初始全量數據及對象&#xff08;視圖、…

在MySQL Shell里 重啟MySQL 8.4實例

前一段時間看到MySQL官方視頻的Oracle工程師在mysql shell里面重啟mysql實例&#xff0c;感覺這個操作很方便&#xff0c;所以來試試&#xff0c;下面為該工程師的操作截圖 1.MySQL Shell 通過root用戶連上mysql&#xff0c;shutdown mysql實例 [rootmysql8_3 bin]# mysqlshMy…

truffle

文章目錄 truffle目錄結構各文件作用在本地測試合約 truffle 項目來自https://github.com/Dapp-Learning-DAO/Dapp-Learning/blob/main/basic/04-web3js-truffle/README-CN.md Truffle 是基于 Solidity 語言的一套開發框架&#xff0c;它簡化了去中心化應用&#xff08;Dapp&…

SpringCloud核心組件Eureka菜鳥教程

關于Spring Cloud Eureka的核心概念 Eureka 是 Netflix 開源的一款基于 REST 的服務發現工具&#xff0c;主要用于中間層服務器的云端負載均衡。它通過維護一個服務注冊表來實現服務之間的通信1。在 Spring Cloud 中&#xff0c;Eureka 提供了一個高可用的服務注冊與發現機制&a…

職業教育新形態數字教材的建設與應用:重構教育生態的數字化革命

教育部新時代職業學校名師(名匠)名校長培養計劃專題 四川省第四批職業學校名師(名匠)培養計劃專題 在某職業院校的智能制造課堂上&#xff0c;學生佩戴VR設備&#xff0c;通過數字教材中的虛擬工廠完成設備裝配訓練&#xff0c;系統實時生成操作評分與改進建議。這一場景折射出…

基于Python的攜程國際機票價格抓取與分析

一、項目背景與目標 攜程作為中國領先的在線旅行服務平臺&#xff0c;提供了豐富的機票預訂服務。其國際機票價格受多種因素影響&#xff0c;包括季節、節假日、航班時刻等。通過抓取攜程國際機票價格數據&#xff0c;我們可以進行價格趨勢分析、性價比評估以及旅行規劃建議等…

Windows 圖形顯示驅動開發-初始化WDDM 1.2 和 PnP

(WDDM) 1.2 及更高版本顯示微型端口驅動程序的所有 Windows 顯示驅動程序都必須支持以下行為&#xff0c;以響應即插即用 (PnP) 基礎結構啟動和停止請求。 根據驅動程序返回成功或失敗代碼&#xff0c;或者系統硬件是基于基本輸入/輸出系統 (BIOS) 還是統一可擴展固件接口 (UEF…

【1區SCI】Fusion entropy融合熵,多尺度,復合多尺度、時移多尺度、層次 + 故障識別、診斷-matlab代碼

引言 2024年9月&#xff0c;研究者在數學領域國際頂級SCI期刊《Chaos, Solitons & Fractals》&#xff08;JCR 1區&#xff0c;中科院1區 Top&#xff09;上以“Fusion entropy and its spatial post-multiscale version: Methodology and application”為題發表最新科學研…

高并發架構設計之緩存

一、引言 緩存技術作為高并發架構設計的基石之一&#xff0c;通過數據暫存和快速訪問機制&#xff0c;在提升系統性能、降低后端負載方面發揮著不可替代的作用。優秀的緩存設計能夠將系統吞吐量提升數個數量級&#xff0c;將響應時間從秒級降至毫秒級&#xff0c;甚至成為系統…

Unity AI-使用Ollama本地大語言模型運行框架運行本地Deepseek等模型實現聊天對話(一)

一、Ollama介紹 官方網頁&#xff1a;Ollama官方網址 中文文檔參考&#xff1a;Ollama中文文檔 相關教程&#xff1a;Ollama教程 Ollama 是一個開源的工具&#xff0c;旨在簡化大型語言模型&#xff08;LLM&#xff09;在本地計算機上的運行和管理。它允許用戶無需復雜的配置…

Docker Python 鏡像使用指南

1. 使用 Python 鏡像創建容器 docker run -itd -v /data:/data python:latest 作用&#xff1a;創建一個基于 python:latest 鏡像的容器&#xff0c;并后臺運行。 參數說明&#xff1a; -itd&#xff1a;交互式后臺運行&#xff08;-i 交互模式&#xff0c;-t 分配偽終端&…

matlab中Simscape的調用-入門

Simscape 是由 MathWorks 公司開發的一款基于物理建模的仿真工具&#xff0c;它建立在 MATLAB/Simulink 平臺之上&#xff0c;專門用于建模和仿真多領域物理系統。 主要特點 多領域建模&#xff1a;Simscape 提供了豐富的物理元件庫&#xff0c;涵蓋了機械、電氣、液壓、氣動…

Flowable7.x學習筆記(十三)查看部署流程圖

前言 Flowable 的流程圖是 Flowable Modeler 或 Process Editor 中&#xff0c;使用拖拽和屬性面板基于 BPMN 2.0 元素&#xff08;如任務、網關、事件、序列流等&#xff09;渲染出的業務流程圖形界面?。 一、將圖形導出可查看的作用 ① 可視化建模 幫助業務分析師和開發者…

Bootstrap 模態框

Bootstrap 模態框 Bootstrap 模態框&#xff08;Modal&#xff09;是 Bootstrap 框架中的一個組件&#xff0c;它允許你在一個頁面中創建一個模態對話框&#xff0c;用于顯示內容、表單、圖像或其他信息。模態框通常覆蓋在當前頁面上&#xff0c;提供了一種不離開當前頁面的交…

python-69-基于graphviz可視化軟件生成流程圖

文章目錄 1 Graphviz可視化軟件1.1 graphviz簡介1.2 安裝部署2 基于python示例應用2.1 基本示例2.2 解決中文顯示亂碼2.3 顯示多個輸出邊2.4 顯示輸出引腳名稱2.5 從左至右顯示布局2.6 設置節點為方形3 參考附錄1 Graphviz可視化軟件 1.1 graphviz簡介 Graphviz(Graph Visua…

AJAX 介紹

一、什么是AJAX ? AJAX 是 異步的 JavaScript 和 XML&#xff08;Asynchronous JavaScript And XML&#xff09; 的縮寫&#xff0c;是一種實現瀏覽器與服務器進行數據通信的技術。其核心是通過 XMLHttpRequest 對象在不重新刷新頁面的前提下&#xff0c;與服務器交換數據并更…

新ubuntu物理機開啟ipv6讓外網訪問

Ubuntu 物理機 SSH 遠程連接與 IPv6 外網訪問測試指南 1. 通過 SSH 遠程連接 Ubuntu 物理機 1.1 安裝 SSH 服務 sudo apt update sudo apt install openssh-server1.2 檢查 SSH 服務狀態 sudo systemctl status ssh確認出現 active (running)。 1.3 獲取物理機 IP 地址 i…