CSS 過渡與變形:讓交互更絲滑

在網頁設計中,動效能讓用戶交互更自然、流暢,提升使用體驗。本文將通過 CSS 的?transition(過渡)和?transform(變形)屬性,帶你入門基礎動效設計,結合案例演示如何實現顏色漸變、元素位移 / 旋轉 / 縮放,以及按鈕點擊動效。

一、動效入門:從?transition?開始

1. 什么是 CSS 過渡?

transition?用于定義元素屬性變化時的過渡效果,讓狀態切換(如 hover、focus)不再生硬。常見場景:鼠標懸停時按鈕顏色漸變、卡片展開收縮等。

2. 基礎語法與核心屬性
/* 單屬性過渡:hover 時背景色漸變 */  
.button {  background-color: blue;  /* 語法:transition: 屬性名 過渡時間 函數 延遲時間 */  transition: background-color 0.3s ease;  
}  
.button:hover {  background-color: green;  
}  

效果:鼠標懸停時按鈕背景色平滑漸變

  • transition-property:指定過渡的 CSS 屬性(如?background-colorwidth?等),all?表示所有屬性。
  • transition-duration:過渡持續時間(單位:s 或 ms,如?0.3s)。
  • transition-timing-function:過渡曲線(ease?緩和、linear?勻速、ease-in?加速等)。
  • transition-delay:過渡延遲時間(可選,如?0.1s)。
3. 多屬性過渡與簡寫
/* 簡寫:同時過渡背景色、文字顏色和邊框半徑 */  
.box {  transition: all 0.5s ease-out 0.1s; /* 順序:屬性 時長 函數 延遲 */  
}  
.box:hover {  background-color: #e0f3ff;  color: #333;border-radius: 20px;  
}

效果:鼠標懸停時盒子變色、變圓角、文字變深

二、transform:讓元素 “動起來”

transform?用于改變元素的形狀、位置或大小,支持平移(translate)、旋轉(rotate)、縮放(scale)等操作,且不會影響頁面布局。

1. 平移:translate()
/* 鼠標懸停時向右下方移動 10px */  
.card {  transform: translate(0, 0); /* 初始位置 */  transition: transform 0.3s ease;  
}  
.card:hover {  transform: translate(10px, 10px); /* 水平/垂直位移 */box-shadow: 0 4px 8px rgba(0,0,0,0.2); /* 加深陰影 */
}

效果:鼠標懸停時卡片向右下方移動 10px,模擬 “懸浮感”

2. 旋轉:rotate()
/* 點擊時圖標旋轉 360°(需配合 JS 或偽類) */  
.icon {  display: inline-block;  transition: transform 1s ease;
}  
.icon.clicked {  transform: rotate(360deg);  
}

效果:順時針旋轉360°

  • 單位:deg(度),正數順時針旋轉,負數逆時針。
3. 縮放:scale()
/* 懸停時元素放大 1.2 倍 */  
.image {  transform: scale(1);  transition: transform 0.2s ease-in;  
}  
.image:hover {/* scaleX()/scaleY() 可單獨控制方向 */transform: scale(1.2); /* 放大1.2倍 */
}

效果:鼠標懸停時圖片放大 20%,模擬聚焦效果

4. 組合效果與原點調整

通過?transform-origin?可修改元素變形的原點(默認中心):

.box {  transform-origin: bottom left; /* 以左下角為原點旋轉 */  transform: rotate(45deg) scale(0.9); /* 同時旋轉45°和縮放0.9倍 */  
}

效果:鼠標懸停時卡片以左下角為原點旋轉 45° 并縮小

三、合理使用動效:避免過度設計

  1. 性能優先:復雜動效可能影響性能,優先使用?transform?和?opacity(這兩個屬性觸發 GPU 加速)。
  2. 克制原則:動效應服務于功能,如按鈕反饋、狀態提示,避免無意義的動畫干擾用戶。
  3. 兼容性:檢查瀏覽器支持(現代瀏覽器基本支持,IE 需前綴?-webkit-?等)。
  4. 可訪問性:為 motion-sensitive 用戶提供關閉動效的選項(通過媒體查詢?prefers-reduced-motion)。

總結

CSS 的?transition?和?transform?是實現輕量動效的利器,通過簡單代碼即可讓頁面元素 “活起來”。記住:動效應自然、克制,聚焦用戶體驗,而非單純炫技。從顏色漸變到元素變形,再到交互反饋,合理運用這些特性,就能打造出絲滑的網頁交互效果。

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

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

相關文章

rqlite:一個基于SQLite構建的分布式數據庫

今天給大家介紹一個基于 SQLite 構建的輕量級分布式關系型數據庫:rqlite。 rqlite 基于 Raft 協議,結合了 SQLite 的簡潔性以及高可用分布式系統的穩健性,對開發者友好,操作極其簡便,其核心設計理念是以最低的復雜度實…

mujoco graspnet 仿真項目的復現記錄

開源項目:https://gitee.com/chaomingsanhua/manipulator_grasp 復現使用的配置:linux系統ubuntu20.04 項目配置記錄: git clone 對應的code后: 需要在graspnet-baseline文件夾中繼續拉取文件,指令記錄:…

【js面試題】new操作做了什么?

這些年也面試了一些外包同事,不知道其他面試官的想法,但就我而言,我更喜歡聽到的是口述代碼的方式: 比如下述代碼 function Animal(age) {this.age age; // 設置新對象的屬性 }const cat new Animal("8");最有效的回…

freecad內部python來源 + pip install 裝包

cmake來源: 只能find默認地址,我試過用虛擬的python地址提示缺python3config.cmake python解釋器位置: python控制臺位置: pip install 裝包: module_to_install "your pakage" import os import FreeCAD …

樹和圖論【詳細整理,簡單易懂!】(C++實現 藍橋杯速查)

樹和圖論 樹的遍歷模版 #include <iostream> #include <cstring> #include <vector> #include <queue> // 添加queue頭文件 using namespace std;const int MAXN 100; // 假設一個足夠大的數組大小 int ls[MAXN], rs[MAXN]; // 定義左右子樹數…

展訊android15源碼編譯之apk單編

首先找到你要單編的apk生成的路徑&#xff1a; sys\out_system\target\product\ussi_arm64\system_ext\app\HelloDemo\HelloDemo.apk接著打開下面這個文件&#xff1a; sys\out_system\ussi_arm64_full-userdebug-gms.system.build.log在里面找關鍵字"Running command&q…

如何關閉MacOS中鼠標滾輪滾動加速

一、背景 想要關閉滾輪的 “滾動加速”&#xff0c;即希望滾動了多少就對應滾動頁面固定行數&#xff0c;現在macOS是加速滾動的&#xff0c;即滾動相同的角度會根據你滾動滾輪的速度不同最終頁面滾動的幅度不同。這點很煩&#xff0c;常導致很難定位。 macOS本身的設置是沒有…

河北工程大學e2e平臺,python

題目&#xff0c;選擇題包100分&#xff01; 題目&#xff0c;選擇題包100分&#xff01; 題目&#xff0c;選擇題包100分&#xff01; 聯系&#x1f6f0;&#xff1a;18039589633

【藍橋杯】貪心算法

1. 區間調度 1.1. 題目 給定個區間,每個區間由開始時間start和結束時間end表示。請選擇最多的互不重疊的區間,返回可以選擇的區間的最大數量。 輸入格式: 第一行包含一個整數n,表示區間的數量 接下來n行,每行包含兩個整數,分別表示區間的開始時間和結束時間 輸出格式:…

一維差分數組

2.一維差分 - 藍橋云課 問題描述 給定一個長度為 n 的序列 a。 再給定 m 組操作&#xff0c;每次操作給定 3 個正整數 l, r, d&#xff0c;表示對 a_{l} 到 a_{r} 中的所有數增加 d。 最終輸出操作結束后的序列 a。 ??Update??: 由于評測機過快&#xff0c;n, m 于 20…

二分答案----

二分答案 - 題目詳情 - HydroOJ 問題描述 給定一個由n個數構成的序列a&#xff0c;你可以進行k次操作&#xff0c;每次操作可以選擇一個數字&#xff0c;將其1&#xff0c;問k次操作以后&#xff0c;希望序列里面的最小值最大。問這個值是多少。 輸入格式 第一行輸入兩個正…

旋轉位置編碼

旋轉位置編碼&#xff08;Rotary Position Embedding&#xff0c;RoPE&#xff09;: 一種能夠將相對位置信息依賴集成到 self-attention 中并提升 transformer 架構性能的位置編碼方式。 和相對位置編碼相比&#xff0c;RoPE 具有更好的外推性&#xff0c;目前是大模型相對位…

.NET-EFCore基礎知識

.NET EF Core&#xff08;Entity Framework Core&#xff09;是微軟開發的一款開源的對象關系映射&#xff08;ORM&#xff09;框架&#xff0c;用于在.NET 應用程序中與數據庫進行交互。以下是一些.NET EF Core 的基礎知識&#xff1a; 1. 什么是 EF Core EF Core 是.NET 平…

利用 RNN 預測股票價格:從數據處理到可視化實戰

在金融領域&#xff0c;預測股票價格走勢一直是眾多投資者和研究者關注的焦點。今天&#xff0c;我們將利用深度學習中的循環神經網絡&#xff08;RNN&#xff09;來構建一個簡單的股票價格預測模型&#xff0c;并詳細介紹從數據加載、預處理、模型搭建、訓練到最終結果可視化的…

LangGraph 架構詳解

核心架構組件 LangGraph 的架構建立在一個靈活的基于圖的系統上&#xff0c;使開發者能夠定義和執行復雜的工作流。以下是主要架構組件&#xff1a; 1. 狀態管理系統 LangGraph 的核心是其強大的狀態管理系統&#xff0c;它允許應用程序在整個執行過程中維護一致的狀態&…

Python 深度學習實戰 第1章 什么是深度學習代碼示例

第1章&#xff1a;什么是深度學習 內容概要 第1章介紹了深度學習的背景、發展歷史及其在人工智能&#xff08;AI&#xff09;和機器學習&#xff08;ML&#xff09;中的地位。本章探討了深度學習的定義、其與其他機器學習方法的關系&#xff0c;以及深度學習在近年來取得的成…

swift菜鳥教程1-5(語法,變量,類型,常量,字面量)

一個樸實無華的目錄 今日學習內容&#xff1a;1.基本語法引入空格規范輸入輸出 2.變量聲明變量變量輸出加反斜杠括號 \\( ) 3.可選(Optionals)類型可選類型強制解析可選綁定 4.常量常量聲明常量命名 5.字面量整數 and 浮點數 實例字符串 實例 今日學習內容&#xff1a; 1.基本…

GAT-GRAPH ATTENTION NETWORKS(論文筆記)

CCF等級&#xff1a;A 發布時間&#xff1a;2018年 代碼位置 25年4月21日交 目錄 一、簡介 二、原理 1.注意力系數 2.歸一化 3.特征組合與非線性變換 4.多頭注意力 4.1特征拼接操作 4.2平均池化操作 三、實驗性能 四、結論和未來工作 一、簡介 圖注意力網絡&…

XML、JSON 和 Protocol Buffers (protobuf) 對比

目錄 1. XML (eXtensible Markup Language) 1&#xff09;xml的特點&#xff1a; 2&#xff09;xml的適用場景&#xff1a; 2. JSON (JavaScript Object Notation) 1&#xff09;JSOM的特點&#xff1a; 2&#xff09;JSON的適用場景&#xff1a; 3. Protocol Buffers (…

如何通過簡單步驟保護您的網站安全

在如今的數字化時代&#xff0c;網站安全已經成為每個網站管理者都不能忽視的重點。未授權用戶入侵、數據泄露和惡意軟件等威脅越來越多&#xff0c;網站安全對于保護企業、用戶和客戶的數據非常重要。為了幫助您提升網站的安全性&#xff0c;本文介紹了一些簡單且有效的措施&a…