CSS 空間轉換 動畫

目錄

  • 1. 空間轉換
    • 1.1 視距 - perspective
    • 1.2 空間轉換 - 旋轉
    • 1.3 立體呈現 - transform-style
    • 1.4 空間轉換 - 縮放
  • 2. 動畫 - animation
    • 2.1 動畫的基本用法
    • 2.1 animation 復合屬性
    • 2.2 animation 拆分屬性
    • 2.3 多組動畫


正文開始

1. 空間轉換

空間:是從坐標軸角度定義的 X、Y 和 Z 三條坐標軸構成了一個立體空間,Z 軸正方向是垂直頁面向外的方向。空間轉換又叫 3D轉換。

屬性

<style>transform: translate3d(x,y,z);transform: translateX();transform: translateY();transform: translateZ();
</style>

取值

  • 像素單位數值
  • 百分比(以盒子自身尺寸為參照)

例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div {width: 100px;height: 100px;background-color: pink;margin: 100px auto;transition: all 0.5s;}div:hover {transform: translate3d(100px,200px,200px);}</style>
</head>
<body><div></div>
</body>
</html>

需要注意的是,默認情況下,Z 軸上的變化是無法生效的,因為屏幕是二維的,并不能顯示 Z 軸的效果,觀察 Z 軸變化的通過設置視距的方式來實現

1.1 視距 - perspective

作用:指定了觀察者與 Z=0 平面的距離,為元素添加近大遠小的透視效果。

屬性:添加給直接父級,取值范圍800-1200效果最佳

perspective: 視距;

例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.father {perspective: 1000px;}.son {width: 100px;height: 100px;background-color: pink;margin: 100px auto;transition: all 0.5s;}.son:hover {transform: translateZ(200px);}</style>
</head>
<body><div class="father"><div class="son"></div>    </div>
</body>
</html>

1.2 空間轉換 - 旋轉

作用:設置對象以指定坐標軸為軸旋轉,配合視距屬性可使空間轉換更為真實

屬性

<style>/* 繞 Z 軸轉 */transform: rotateZ(轉動角度);/* 繞 X 軸轉 */transform: rotateX(轉動角度);/* 繞 Y 軸轉 */transform: rotateY(轉動角度);/* 自定義旋轉軸位置 */transform: rotate3d(x,y,z,角度度數)
</style>

transform:rotate3d(x,y,z,角度度數):

  • x,y,z 取值為0-1之間的數字
  • 根據 x,y,z 的值會自動生成一個新的旋轉軸,指定盒子會繞著這個軸旋轉指定角度

左手法則:用以根據旋轉方向確定取值正負。
-左手握住旋轉軸,拇指指向正值方向,其他四個手指彎曲方向為旋轉正值方向:
在這里插入圖片描述
例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.father {perspective: 1000px;width: 500px;margin: 100px auto;}img {width: 500px;transition: all 0.5s;}.father img {transform: rotateX(45deg);}</style>
</head>
<body><div class="father"><img src="img.jpg" alt=" ">    </div>
</body>
</html>

頁面效果:
在這里插入圖片描述

1.3 立體呈現 - transform-style

作用:設置元素的子元素是位于 3D 空間中還是平面中。

屬性

<style>/* 子集處于平面中 */transform-style:flat;/* 子集處于 3D 空間 */transform-style:preserve-3d;
</style>

呈現立體圖形步驟:

  1. 父級元素添加 transform-style:preserve-3d;
  2. 子集定位,使所有子集都在盒子內部
  3. 調整子盒子的位置
    請添加圖片描述
    例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box {/* 給父級盒子添加 3D 屬性 */margin: 100px auto;width: 200px;position: relative;transform-style: preserve-3d;transition: all .5s;perspective: 1000px;}.box div {/* 子集定位 */position: absolute;top: 0;left: 0;width: 200px;height: 200px;}.back {transform: translateZ(-100px);background-color: red;}.front {transform: translateZ(100px);background-color: green;}.box:hover {transform: rotateY(60deg);}</style>
</head>
<body><div class="box"><div class="back">后面</div><div class="front">前面</div></div>
</body>
</html>

頁面效果:
請添加圖片描述
靜態的圖片很難展示出動態的效果,所以大家可以試著自己運行一下來看看動畫效果。

需要注意的是,當盒子在空間中轉換的時候,他的坐標軸也會隨之改變。

1.4 空間轉換 - 縮放

作用:在空間中縮放指定對象。

屬性

<style>transform: scale3d(x,y,z);transform: scaleX();transform: scaleY();transform: scaleZ();
</style>

屬性值

  • 屬性值為具體數值,即縮放倍數,小于1縮小,大于1放大。

2. 動畫 - animation

  • 過渡:實現兩個狀態間的變化過程
  • 動畫:實現多個狀態間的變化過程,動畫過程可控(重復播放、最終畫面、是否暫停)

2.1 動畫的基本用法

動畫實現步驟:

  1. 定義動畫:有兩種寫法
<style>/* 只有初始和末尾狀態 */@keyframes 動畫名稱1 {from {狀態1}to {狀態2}}/* 將整個動畫過程分為若干部分 *//* 百分比表示占動畫時長的百分比 */@keyframes 動畫名稱2 {0% {狀態1}10% {狀態2}.....100% {狀態10}}
</style>
  1. 使用動畫
<style>animation: 動畫名稱 動畫花費時長(s);
</style>

例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.div1 {width: 100px;height: 100px;background-color: pink;animation: change1 1s;}.div2 {width: 100px;height: 100px;background-color: green;animation: change2 1s;}@keyframes change1 {from{width: 100px;}to{width: 300px;}}@keyframes change2 {0% {width: 100px;}30% {width: 300px;}50% {width: 500px;}100% {width: 200px;}}</style>
</head>
<body><div class="div1"></div><div class="div2"></div>
</body>
</html>

動畫效果不便展示,請大家自行運行瀏覽

2.1 animation 復合屬性

使用動畫的屬性值不止上面兩種,具體為:

<style>animation: 動畫名稱 動畫時長 速度曲線 延遲時間 重復次數 動畫方向 執行完畢時狀態;
</style>
  • 動畫名稱和動畫時長必須要寫
  • 屬性值不分先后順序
  • 如果有兩個時間值,第一個時間表示動畫時長,第二個時間表示延遲時間

速度曲線取值

  • linear:勻速
  • steps(x):x為數字,表示把動畫分為x步完成。工作中可配合精靈圖實現精靈圖動畫

重復次數取值

  • 數字:表示重復次數
  • infinite:表示無限循環

動畫方向取值

  • alternate:反向動畫

執行完畢時狀態取值

  • forwards:完畢時狀態為動畫最后狀態
  • backwards:默認值,完畢時狀態為初始狀態

例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div {width: 100px;height: 100px;background-color: green;animation: change 1s linear 2s infinite alternate;}@keyframes change {0% {width: 100px;}30% {width: 300px;}50% {width: 500px;}100% {width: 200px;}}</style>
</head>
<body><div></div>
</body>
</html>

動畫效果不便展示,請大家自行運行瀏覽

2.2 animation 拆分屬性

屬性作用取值
animation-name動畫名稱動畫名稱
animation-duration動畫時長時長(s)
animation-delay延遲時間時長(s)
animation-fill-mode動畫執行完畢時狀態forwaeds(最后一幀狀態);backwards(第一幀狀態)
animation-timing-function速度曲線steps():逐幀動畫
animation-iteration-count重復次數infinite(無限循環)
animation-direction動畫執行方向alternate(反向)
animation-play-state暫停動畫paused(暫停),通常配合 :hover 使用

例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div {width: 100px;height: 100px;background-color: green;animation-name: change;animation-duration: 1s;animation-iteration-count: infinite;animation-delay: 1s;animation-timing-function: linear;}div:hover {animation-play-state: paused;}@keyframes change {0% {width: 100px;}30% {width: 300px;}50% {width: 500px;}100% {width: 200px;}}</style>
</head>
<body><div></div>
</body>
</html>

動畫效果不便展示,請大家自行運行瀏覽

2.3 多組動畫

作用:設置一個標簽使用多個動畫

屬性

<style>animation:動畫1,動畫2,...動畫N;
</style>

例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div {width: 100px;height: 100px;background-color: green;/* 使用多個動畫 */animation: change 1s linear infinite,move 3s;}div:hover {animation-play-state: paused;}@keyframes move {from {transform: translate(0,0);}to {transform: translate(100px,0);}}@keyframes change {0% {width: 100px;}100% {width: 200px;}}</style>
</head>
<body><div></div>
</body>
</html>

動畫效果不便展示,請大家自行運行瀏覽

注:若動畫初始狀態與盒子默認樣式相同,那么初始狀態可以省略。


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

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

相關文章

Paddle實現單目標檢測

單目標檢測 單目標檢測&#xff08;Single Object Detection&#xff09;是人工智能領域中的一個重要研究方向&#xff0c;旨在通過計算機視覺技術&#xff0c;識別和定位圖像中的特定目標物體。單目標檢測可以應用于各種場景&#xff0c;如智能監控、自動駕駛、醫療影像分析等…

短視頻矩陣系統搭建開發,ai智能剪輯系統,矩陣發布,一鍵管理多個賬戶

前言&#xff1a; 企業短視頻矩陣是企業通過搭建多個短視頻平臺賬號&#xff0c;形成一個多元化的內容傳播網絡。它旨在通過多平臺內容的同步傳播&#xff0c;實現企業品牌價值的最大化。短視頻矩陣包括抖音、快手、視頻號、小紅書、百家號等熱門短視頻平臺&#xff0c;其核心…

LeetCode 每日一題 數學篇 2520.統計能整除數字的位數

給你一個整數 num &#xff0c;返回 num 中能整除 num 的數位的數目。 如果滿足 nums % val 0 &#xff0c;則認為整數 val 可以整除 nums 。 int countDigits(int num) {int t num, res 0;while (t) {if (num % (t % 10) 0) {res 1;}t / 10;}return res; }解題思路&…

AT_abc348_c [ABC348C] Colorful Beans 題解

題目傳送門 解題思路 對于每種顏色的豆子&#xff0c;我們先找到美味度最小的那個&#xff0c;最后找出這些不同種類的豆子中美味度最大的即可。 那我們怎么找到第 i i i 種豆子中美味度最小的那個呢&#xff1f;這里給出兩種思路&#xff1a; 使用桶的思想標記。對于每一…

向日葵抓住哪三個要點,幫助企業構建專業技術支持服務體系?

售后技術支持是銷售行為的延續&#xff0c;在存量時代企業是否能夠提供優質專業的售后技術支持服務顯得尤為重要&#xff0c;它直接關系到企業產品在市場中的口碑&#xff0c;進而影響企業的發展命運。 因此&#xff0c;企業勢必需要重視技術支持服務體系的搭建&#xff0c;引…

JavaScript 事件循環竟還能這樣玩!

JavaScript 是一種單線程的編程語言&#xff0c;這意味著它一次只能執行一個任務。為了能夠處理異步操作&#xff0c;JavaScript 使用了一種稱為事件循環&#xff08;Event Loop&#xff09;的機制。 本文將深入探討事件循環的工作原理&#xff0c;并展示如何基于這一原理實現一…

git-commit-id-plugin maven插件筆記(git commitId跟蹤工具)

文章目錄 maven依賴git.properties 例子 代碼版本管理比較混亂&#xff0c;如何記錄呢? 一種是手動記錄&#xff0c;也可以實現&#xff0c;顯得有點笨。 也可以通過插件。 maven依賴 <plugin><groupId>pl.project13.maven</groupId><artifactId>git…

面試題系列:Python是什么?使用Python有什么好處?你對 PEP 8 有什么理解?

###面試題系列:Python是什么?使用Python有什么好處?你對 PEP 8 有什么理解? 1、Python是什么? Python是一門動態的(dynamic)且強類型(strong)語言 延伸: 1)靜態類型語言和動態類型語言的判別的標準 如果類型檢查發生在編譯階段(compile time),那么是靜態類型語言(s…

【數據分享】水體分布與五級水系和流域矢量數據+2000-2022年植被指數(NDVI)數據(全國/分省/分市)

1. 數據介紹 數據分為3個層次結構&#xff0c;分別為省、地級市、縣。其中&#xff0c;省級水體31個&#xff08;不包含香港、臺灣等&#xff09;&#xff0c; 地級市水體366個&#xff0c;縣級市水體2847個。每一個文件夾中都包含該省、地級市或者縣的水體矢量數據、行政邊界…

數學建模 —— 灰色系統(4)

目錄 什么是灰色系統&#xff1f; 一、灰色關聯分析 1.1 灰色關聯分析模型 1.2 灰色關聯因素和關聯算子集 1.2.1 灰色關聯因素 1.2.2 關聯算子集 1.3 灰色關聯公理與灰色關聯度 1.3.1 灰色關聯度 1.3.2 灰色關聯度計算步驟 1.4 廣義關聯度 1.4.1 灰色絕對關聯…

一文讀懂GDPR

GDPR將對人們的網絡足跡、使用的APP和服務如何保護或利用這些數據產生重大影響。 下面我們將對有關GDPR人們最關心的問題進行解讀。 GDPR是什么&#xff1f; 一般數據保護條例&#xff08;General Data Protection Regulation&#xff09;是一項全面的法律&#xff0c;賦予了…

風電Weibull+隨機出力!利用ARMA模型隨機生成風速+風速Weibull分布程序代碼!

前言 隨著能源問題日益突出&#xff0c;風力發電等以可再生能源為基礎的發電技術越來越受到關注。建立能夠正確反映實際風速特性的風速模型是研究風力發電系統控制策略以及并網運行特性的重要基礎叫。由于風速的隨機性和波動性&#xff0c;系統中的機械設備和電氣設備以及電網…

計算機網絡⑩ —— Linux系統如何收發網絡包

轉載于小林coding&#xff1a;https://www.xiaolincoding.com/network/1_base/how_os_deal_network_package.html 1. OSI七層模型 應用層&#xff0c;負責給應用程序提供統一的接口&#xff1b;表示層&#xff0c;負責把數據轉換成兼容另一個系統能識別的格式&#xff1b;會話…

深度剖析云邊對接技術:探索開放API接口的價值與意義

在當今數字化時代的浪潮中&#xff0c;云邊對接與開放API接口成為了塑造行業生態的重要驅動力。隨著云計算、物聯網和邊緣計算等技術的快速發展&#xff0c;傳統產業正在邁向數字化轉型的關鍵時刻。而在這個過程中&#xff0c;云邊對接技術以及開放的應用程序接口(API)扮演著舉…

處理STM32 DMA方式下的HAL_UART_ERROR_ORE錯誤

1. 檢查并調整DMA和UART配置 確保初始化順序&#xff1a;需要確保USART的CR寄存器UE位開關留到最后打開&#xff0c;即完成USART和DMA的所有配置初始化后再使能USART。這樣可以避免初始化順序不當導致的通信問題。配置合適的DMA緩沖區&#xff1a;確保DMA緩沖區足夠大&#xf…

Facebook海外三不限 | 如何降低Facebook頻繁被封的風險

本文將討論Facebook賬戶被封的原因及降低封禁風險的方法&#xff0c;以維護用戶的賬戶安全和社交樂趣。 1. 常見原因&#xff1a;賬戶被封通常與發布違反社區標準的內容有關&#xff0c;如仇恨言論、暴力內容、欺詐虛假信息、非法活動、騷擾、版權侵權等。此外&#xff0c;未授…

el-date-picker選擇開始日期的近半年

<el-date-pickerv-model"form[val.key]":type"val.datePickerType || daterange":clearable"val.clearable && true"range-separator"~"start-placeholder"開始日期"end-placeholder"結束日期"style&q…

玩轉Linux進度條

準備工作&#xff1a; 一.關于緩沖區 首先&#xff0c;咱們先來一段有意思的代碼&#xff1a; #include<stdio.h> #include<unistd.h> int main() {printf("you can see me");sleep(5);} 你可以在你的本地運行一下&#xff0c;這里我告訴大家運行結果…

【SAP HANA 33】前端參數多選情況下HANA如何使用in來匹配?

場面描述: 在操作界面經常會出現某個文本框需要多選的情況,然后后臺需要根據多選的值進行匹配搜索。 一般處理的情況是: 1、在Java后端動態生成SQL 2、不改變動態SQL的情況,直接當做一個正常的參數進行傳遞 本次方案是第二個,直接當做一個正常的字符串參數進行傳遞即…

【面試題-014】Mysql數據庫有哪些索引類型?

文章目錄 B 樹和 B 樹區別B 樹B 樹 mysql聚簇索引和非聚簇索引聚簇索引&#xff08;Clustered Index&#xff09;非聚簇索引&#xff08;Non-Clustered Index&#xff09;總結 MyISAM和InnoDB兩種常見的存儲引擎區別MySQL的主從同步原理如何確保主從同步的數據一致性&#xff1…