【開源寶藏】30天學會CSS - DAY5 第五課 脈沖動畫

以下是一個完整的漸進式教程,拆解如何用 HTML + CSS 構建“Pulsar”水波脈沖動畫。通過閱讀,你將理解每個核心屬性與關鍵幀如何配合,讓一個小圓不斷散發動態波紋,并且文字始終停留在圓心。


在這里插入圖片描述

第 0 步:項目概覽

文件結構示例如下:

pulsar-effect/├─ index.html└─ style.css
  1. index.html:頁面主體,包含一個居中的 <div> 顯示“Pulse”文字。
  2. style.css:用來設置背景、圓形外觀、關鍵幀動畫等。

第 1 步:編寫基礎 HTML

打開/新建 index.html,編寫最簡潔的頁面骨架:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="author" content="Milena Carecho"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Pulsar</title><!-- 關聯CSS文件 --><link rel="stylesheet" type="text/css" href="style.css">
</head>
<body><!-- 用于居中元素 --><div class="center"><!-- 核心 pulsar 動畫元素 --><div class="pulse">Pulse</div></div></body>
</html>

代碼說明

  • <div class="center">:將子元素放在頁面正中央的輔助容器。
  • <div class="pulse">Pulse</div>:一個圓形塊,用來顯示文字“Pulse”并附加脈沖動畫。

第 2 步:基礎CSS,設置背景與居中

新建或編輯 style.css,先設置頁面外觀與 .center 容器布局:

body {margin: 0;padding: 0;background: #262626;  /* 深灰色背景,讓動畫更突出 */
}.center {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);
}
  • 去除 body 默認間距:保證背景全屏。
  • 深灰色背景:凸顯后面青綠色脈沖效果。
  • 絕對定位 + transform: translate:將 .center 及其子元素完美居中在可視區。

第 3 步:打造圓形 + 文字

.pulse 上定義尺寸、顏色、字體等,形成一個圓形按鈕式的視覺:

.pulse {width: 100px;height: 100px;background: #177c80;       /* 青綠色背景 */border-radius: 50%;        /* 圓形 */color: #fff;               /* 白色文字 */font-size: 20px;           /* 字號適當放大 */text-align: center;        /* 文本居中(橫向) */line-height: 100px;        /* 文本居中(縱向) */font-family: verdana;text-transform: uppercase; /* 文字大寫 *//* 調用關鍵幀動畫 */animation: animate 3s linear infinite;
}

關鍵知識點

  1. border-radius: 50%:將 100×100 的方塊變成完美圓形。
  2. 文字居中:使用 line-height 與元素高度相等,再配合 text-align: center;
  3. 動畫觸發animation: animate 3s linear infinite; 告訴瀏覽器用名為 animate 的關鍵幀,3秒一輪,不斷重復 (infinite)。

第 4 步:定義關鍵幀動畫

真正的脈沖效果是通過 box-shadow 在不同時刻的擴散透明度變化來實現。把下面的代碼加到 style.css

@keyframes animate {0% {box-shadow: 0 0 0 0 rgba(55, 209, 201, 0.7), 0 0 0 0 rgba(24, 153, 104, 0.7);}40% {box-shadow: 0 0 0 50px rgba(55, 209, 201, 0), 0 0 0 0 rgba(55, 209, 201, 0.7);}80% {box-shadow: 0 0 0 50px rgba(55, 209, 201, 0), 0 0 0 30px rgba(55, 209, 201, 0);}100% {box-shadow: 0 0 0 0 rgba(55, 209, 201, 0), 0 0 0 30px rgba(55, 209, 201, 0);}
}

多重 box-shadow

  • 每一幀都定義了兩個陰影,用逗號分隔。
  • 0 0 0 50px rgba(...) 中的 第四個值(“50px”)是擴散半徑(spread-radius),用于制造類似擴張的環。
  • rgba(..., 0.7)rgba(..., 0) 表示不同透明度,使外擴后漸漸消失。
動畫階段解讀
  1. 0%:兩個陰影都在半徑0處,且透明度 0.7(略微可見)。
  2. 40%:第一個陰影擴散到 50px,并且透明度變0(消失于外側),第二個陰影還在半徑0但保持 0.7。
  3. 80%:第一個陰影持續在 50px 且不可見,第二個陰影擴散到 30px 同時也逐漸透明。
  4. 100%:兩個陰影都回到0半徑且透明度0,準備進入下個循環。

通過在不同時刻讓兩個環先后擴散、變淡,呈現出脈沖或水波一圈圈向外擴散的效果。


第 5 步:測試與微調

現在,打開瀏覽器查看 index.html,你會看到:

  1. 網頁以深灰色為背景。
  2. 中央有一枚青綠色的小圓,內寫“Pulse”。
  3. 該圓周圍不斷出現擴散且漸隱的陰影環,形成“脈沖”動畫。

如需調整:

  • 動畫周期:在 .pulse 里把 3s 改成你想要的時長,如 2s5s
  • 顏色 & 透明度:改動 rgba(55, 209, 201, 0.7)rgba(24, 153, 104, 0.7),可用更多顏色,或修改透明度營造更微妙的光暈感。
  • 擴散尺寸0 0 0 50px0 0 0 80px 可擴大脈沖半徑;還可改變關鍵幀中各個百分比節點來控制時機。
  • 只要一個環:可將雙重陰影改為一個,脈沖更簡潔。

總結

通過本教程的分步驟拆解,你學習到了:

  1. 如何居中頁面元素position: absolute; transform: translate(-50%, -50%))。
  2. 使用 CSS 生成圓形width=height; border-radius=50%)。
  3. 使用多重 box-shadow 制造外擴“水波”效果。
  4. 關鍵幀配合動畫:在不同階段改動 box-shadow 的擴散半徑與透明度,實現連續的“脈沖”循環。

不需要任何 JavaScript,就能完成一個簡潔又炫酷的“Pulsar”水波脈沖動畫!你可以將其應用在頁面加載指示、按鈕交互或其他創意場景中。祝你學習愉快、創意無限!

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

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

相關文章

2060 裁紙刀

2060 裁紙刀 ??難度&#xff1a;簡單 &#x1f31f;考點&#xff1a;2022、規律、思維 &#x1f4d6; &#x1f4da; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N 100010…

TextView、AppCompatTextView和MaterialTextView該用哪一個?Android UI 組件發展史與演進對照表

在 Android 開發中&#xff0c;UI 組件一直在不斷演進&#xff0c;從最初的原生組件&#xff0c;到 Support Library&#xff08;AppCompat 兼容庫&#xff09;&#xff0c;再到如今的 Material Design 組件。這篇文章將梳理 Android UI 組件的發展歷史&#xff0c;并提供詳細的…

python學習筆記--實現簡單的爬蟲(一)

任務&#xff1a;爬取豆瓣最受歡迎的250個電影的資料 鏈接&#xff1a;豆瓣電影 Top 250 用瀏覽器打開后&#xff0c;使用F12或鼠標右鍵--檢查&#xff0c;查看網頁的源代碼&#xff0c;分析網頁結構&#xff0c;如下圖所示&#xff1a; 分析后得知&#xff1a; 1.電影名位于…

Postgresql 刪除數據庫報錯

1、刪除數據庫時&#xff0c;報錯存在其他會話連接 ## 錯誤現象&#xff0c;存在其他的會話連接正在使用數據庫 ERROR: database "cs" is being accessed by other users DETAIL: There is 1 other session using the database.2、解決方法 ## 終止被刪除數據庫下…

self Attention為何除以根號dk?(全新角度)

全網最獨特解析&#xff1a;self Attention為何除根號dk&#xff1f; 一、假設條件&#xff1a;查詢向量和鍵向量服從正態分布 假設查詢向量 q i q_i qi?和鍵向量 k j k_j kj?的每個分量均為獨立同分布的隨機變量&#xff0c;且服從標準正態分布&#xff0c;即&#xff1a;…

numpy學習筆記10:arr *= 2向量化操作性能優化

numpy學習筆記10&#xff1a;arr * 2向量化操作性能優化 在 NumPy 中&#xff0c;直接對整個數組進行向量化操作&#xff08;如 arr * 2&#xff09;的效率遠高于顯式循環&#xff08;如 for i in range(len(arr)): arr[i] * 2&#xff09;。以下是詳細的解釋&#xff1a; 1. …

Cursor+Claude-3.5生成Android app

一、Android Studio下載 https://developer.android.com/studio?hlzh-tw#get-android-studio 等待安裝完成 二、新建工程 點擊new project 選擇Empty Activity 起一個工程名 當彈出這個框時 可以在settings里面選擇No proxy 新建好后如下 點擊右邊模擬器&#xff0c…

WPF Reactive 數據綁定

文章目錄 Combox 綁定List-通過枚舉綁定方法一:方法二:Button 綁定TextBlock綁定NumericUpDown綁定Expander綁定checkbox綁定NumericUpDownCombox 綁定List-通過枚舉綁定 方法一: ViewControl using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; usin…

算法及數據結構系列 - 滑動窗口

系列文章目錄 算法及數據結構系列 - 二分查找 算法及數據結構系列 - BFS算法 算法及數據結構系列 - 動態規劃 算法及數據結構系列 - 雙指針 算法及數據結構系列 - 回溯算法 算法及數據結構系列 - 樹 文章目錄 滑動窗口框架思路經典題型76. 最小覆蓋子串567. 字符串的排列438. …

Android adb調試應用程序

啟動app 有的時候app不是預先安裝的&#xff0c;也不能從界面start一個app&#xff0c;這時需要后臺拉起app。 $adb shell am start package.name/Activity.name 例如&#xff0c;android原生camera app&#xff0c; 包名為com.android.camera2&#xff0c; mainActivity名為…

Java EE(15)——網絡原理——TCP協議解析一

一.確認應答/(確認)序列號 接收方接收到數據后&#xff0c;向發送方返回一個確認信號(ack)&#xff0c;告訴發送方數據被成功接收。ACK報文段只是作為確認使用的&#xff0c;一般來說不攜帶應用層數據&#xff08;載荷&#xff09;&#xff0c;也就是說只有報頭部分。但有可能…

node-ddk,electron 組件, 打開新窗口

node-ddk 打開新窗口 https://blog.csdn.net/eli960/article/details/146207062 也可以下載demo直接演示 http://linuxmail.cn/go#node-ddk 本文講解如何在渲染進程發起創建新窗口, 包括 window.open 在主進程定義窗口類型 import main, { NODEDDK } from "node-ddk…

git管理時keil項目忽略文件列表

在使用 Git 管理 Keil MDK&#xff08;μVision 5&#xff09;工程時&#xff0c;需要忽略編譯生成的臨時文件、調試文件、用戶配置等非必要內容。以下是忽略文件的詳細列表及說明&#xff0c;可直接保存為 .gitignore 文件&#xff1a; Keil MDK 工程的 .gitignore 文件 giti…

C#單例模式

單例模式 (Singleton),保證一個類僅有一個實例&#xff0c;并提供一個訪問它的全局訪問點。通常我們可以讓一個全局變量使得一個對象被訪問&#xff0c;但它不能防止你實例化對個對象&#xff0c;一個最好的辦法就是&#xff0c;讓類自身負責保護它的唯一實例。這個類可以保證沒…

ZYNQ的cache原理與一致性操作

在Xilinx Zynq SoC中&#xff0c;Cache管理是確保處理器與外部設備&#xff08;如FPGA邏輯、DMA控制器&#xff09;之間數據一致性的關鍵。Zynq的ARM Cortex-A9處理器包含L1 Cache&#xff08;指令/數據&#xff09;和L2 Cache&#xff0c;其刷新&#xff08;Flush/Invalidate&…

Linux NFS、自動掛載與系統啟動管理指南

1. NFS客戶端掛載導出的目錄的方式 NFS&#xff08;網絡文件系統&#xff09; 允許將遠程服務器的目錄掛載到本地&#xff0c;像訪問本地文件一樣操作遠程文件。掛載方式主要有兩種&#xff1a; 手動掛載&#xff1a;使用 mount 命令&#xff08;臨時生效&#xff0c;重啟后丟…

NO.55十六屆藍橋杯備戰|排序|插入|選擇|冒泡|堆|快速|歸并(C++)

插?排序 插?排序(Insertion Sort)類似于玩撲克牌插牌過程&#xff0c;每次將?個待排序的元素按照其關鍵字??插?到前?已排好序的序列中&#xff0c;按照該種?式將所有元素全部插?完成即可 #include <iostream> using namespace std; const int N 1e5 10; …

【Oracle資源損壞類故障】:詳細了解壞塊

目錄 1、物理壞塊與邏輯壞塊 1.1、物理壞塊 1.2、邏輯壞塊 2、兩個壞塊相關的參數 2.1、db_block_checksum 2.2、db_block_checking 3、檢測壞塊 3.1、告警日志 3.2、RMAN 3.3、ANALYZE 3.4、數據字典 3.5、DBVERIFY 4、修復壞塊 4.1、RMAN修復 4.2、DBMS_REPA…

計算機網絡高頻(二)TCP/IP基礎

計算機網絡高頻(二)TCP/IP基礎 1.什么是TCP/IP?? TCP/IP是一種網絡通信協議,它是互聯網中最常用的協議之一。TCP/IP有兩個基本的協議:TCP(傳輸控制協議)和IP(互聯網協議)。 TCP(Transmission Control Protocol,傳輸控制協議)是一種可靠的、面向連接的協議。它負…

【大模型算法工程】大模型應用工具化、忠誠度以及知識庫場景下PDF雙欄解析問題的討論

1. 大模型時代應用工具化以及無忠誠度現象討論 接觸大模型久了&#xff0c;也慢慢探到一些大模型能力表現非常自然和突出的場景&#xff0c;比如AI搜索&#xff08;依賴大模型的理解總結能力&#xff09;、AI對話&#xff08;即chat&#xff0c;依賴大模型的生成能力&#xff0…