CSS3動畫效果transform

来源:https://www.cnblogs.com/html55/archive/2018/12/30/10198780.html
-Advertisement-
Play Games

1.transform瀏覽器支持情況 也就是說目前不考慮老瀏覽器的話是不用加首碼的,感謝菜鳥教程:https://www.runoob.com/cssref/css3-pr-transform.html transform預設值none;就是不轉換,不繼承,js中對其更改示例:object.styl ...


1.transform瀏覽器支持情況

也就是說目前不考慮老瀏覽器的話是不用加首碼的,感謝菜鳥教程:https://www.runoob.com/cssref/css3-pr-transform.html

transform預設值none;就是不轉換,不繼承,js中對其更改示例:object.style.transform="rotate(7deg)"

2.transform能幹啥?

transform屬性讓元素進行2D或3D轉換。可以將元素:旋轉,縮放,移動,傾斜等。

3.transform怎麼用? 

transform: none|transform-functions;

 

none是預設的,就是不進行轉換,好理解。transform-functions有哪些?如下表:

transform-functions的值描述示例
matrix(n,n,n,n,n,n) 定義 2D 轉換,使用六個值的矩陣。  
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定義 3D 轉換,使用 16 個值的 4x4 矩陣。  
translate(x,y) 位移,將元素沿著x軸,y軸移動指定的距離。 transform:translate(100px,20px);
translate3d(x,y,z) 定義 3D 轉換。  
translateX(x) 定義轉換,只是用 X 軸的值。  
translateY(y) 定義轉換,只是用 Y 軸的值。  
translateZ(z) 定義 3D 轉換,只是用 Z 軸的值。  
scale(x,y) 縮放,將元素沿著x軸,y軸縮放一定的倍數  
scale3d(x,y,z) 定義 3D 縮放轉換。  
scaleX(x) 通過設置 X 軸的值來定義縮放轉換。  
scaleY(y) 通過設置 Y 軸的值來定義縮放轉換。  
scaleZ(z) 通過設置 Z 軸的值來定義 3D 縮放轉換。  
rotate(angle) 2D 旋轉,在參數中規定角度(如:30deg)。 transform: rotate(360deg);
rotate3d(x,y,z,angle) 定義 3D 旋轉。  
rotateX(angle) 定義沿著 X 軸的 3D 旋轉。  
rotateY(angle) 定義沿著 Y 軸的 3D 旋轉。  
rotateZ(angle) 定義沿著 Z 軸的 3D 旋轉。  
skew(x-angle,y-angle) 定義沿著 X 和 Y 軸的 2D 傾斜。

transform: rotate(30deg,60deg);


skewX(angle) 定義沿著 X 軸的 2D 傾斜。  
skewY(angle) 定義沿著 Y 軸的 2D 傾斜。  
perspective(n) 為 3D 轉換元素定義透視視圖。 測試


 4.詳細介紹下transform屬性怎麼用

頁面有個幾個div,寬200px,高100px,有的為其加上transform:rotate(30deg),效果如下(1\2\3\6是沒有定義transform的):

註意,這是打開頁面就會變形旋轉好的,不會有動畫!!!

使用transition過渡,才會產生動畫。如下:

1             .box5 {
2                 /* 勻速 時間2s */
3                 transition: linear 2s;
4             }
5             .box5:hover{
6                 transform: rotate(360deg);
7             }

 

效果如下:

 

 下麵主要介紹transform屬性值的效果,所以都配合transition來使用吧,方便看看前後變化的不同。

skewX(x) ,x是傾斜的度數,

 1         <style type="text/css">
 2             .box1 {
 3                 width: 200px; height: 100px; background-color: #FF9900;
 4                 transition: 0.5s;
 5             }
 6             .box1:hover {
 7                 transform: skewX(-45deg);
 8             }
 9         </style>
10 ...
11         <div style="border: #000000 1px solid">
12             <div class="box1">看看我的變化</div>
13         </div>
14         我是下一行內容

 效果如下:

 

 skewY(y),上面代碼skewX改為skewY,效果如下

skew就是skewX和skeY的合集,上面第7行transform: skewX(-45deg);改為transform: skew(-45deg,45deg);效果如下

 

在這裡,我不得不承認,還是在大腦總難以圖像化:skew怎麼去變形的過程。只有x軸上變動可以在腦中有個印象,只有Y軸變動,也可以有個動態的過程,都變動的話,嗯,腦子中形成不了那個印象。下麵圖對讓變動和原圖對比,看看怎麼變的,也不深究了。。。

 

再來看看縮放函數transform:scale(2); 放大兩倍(看到沒,放大了是視覺上的,並不擠占兄弟和父級的空間)

1             .box1 {
2                 width: 200px; height: 100px; background-color: #FF9900;
3                 transition: 0.5s;
4             }
5             .box1:hover {
6                 /* scale括弧里只能是正數或0 */
7                 transform:scale(2);
8             }
1     <body>
2         <div style="border: #000000 1px solid; margin-left: 200px; margin-top: 200px;">
3             <div class="box1">看看我的變化</div>
4         </div>        
5     </body>

 

 

還有一個函數translate,它的意思就是位移!translateX只是它的分支。比如,向左移動50px之類的。

1             .box1 {
2                 width: 200px; height: 100px; background-color: #FF9900;
3                 transition: 0.5s;
4             }
5             .box1:hover {
6                 /* 沿x軸移動100px */
7                 transform:translateX(100px);
8             }

 

 

 5.變形基點transform-origin

上面說到的旋轉、平移,縮放,其實都有個基點(可以理解為變形中未動的點,先用釘子將該點釘起來,然後完成變形,釘的點不同,變形後新位置當然也不一樣!),預設的是正中心位置(重心),上圖表明下基點是什麼,如下:

基點在左上角和中心進行旋轉的話,區別如下圖

 transform-origin要和transform一起用,畢竟如果沒有transform變形,談基點有什麼意義呢?

/*
xyz代表了x軸,y軸,z軸,它們的取值如下
x軸取值可以為:left、center、right、length(某像素)、%(某百分比)
y軸取值可以為:top、center、bottom、length(某像素)、%(某百分比)
z軸取值可以為:length(某像素)
*/
transform-origin: x y z;
/*
預設:transform-origin:50% 50% 0
JS中:object.style.transformOrigin="20% 40%"
*/

 

 

 

 

a

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CSS超全筆記(適合新手入門)持續更新,歡迎閱讀,小白自學,一起共勉!!!加油!! ...
  • 1、jQuery常用選擇器 篩選: $('div').has('p'); // 選擇包含p元素的div元素 $('div').not('.myClass'); //選擇class不等於myClass的div元素 $('div').eq(5); //選擇第6個div元素 選擇器的轉移: $('#box... ...
  • JavaScript 系列博客(八) 前言 本篇博客介紹頁面節點概念、文檔結構以及如何使用 js 操作文檔節點還有事件 target 以及 BOM 操作。 節點 dom與dom屬性 節點分類 節點常規操作 文檔結構(element元素範圍) 文檔元素節點操作 事件對象target屬性 BOM操作 ...
  • JavaScript 系列博客(六) 前言 本篇博客介紹 js 操作高級,通過 js 獲取標簽的全局屬性、設置標簽的全局屬性,以及事件的綁定與取消、js 盒模型與 js 動畫。 對象使用的高級 對象的key為字元串類型, value為任意類型 對象的屬性可以任意添加與刪除 頁面標簽全局屬性操作 事件 ...
  • 元素寬高 + ,`min width max width`等元素寬度設置百分比,以 包含塊的寬度 為標準進行計算; + ,`min height max height`等元素寬度設置百分比,以 包含塊的高度 為標準進行計算; 內外邊距 ,`padding`設置百分比時,在預設(水平)書寫模式下,以 ...
  • 最近測試老是提bug說是有50%的概率列印出空白頁,之前我也一直發現偶爾會出現這個問題,只是一直沒有發現原因。 今天終於下定決心找到問題所在。開始吧! 查看源碼一行行debug,發現問題只可能出現在這一段。 這裡應該是等待為了等待渲染完成,所以延遲了1秒載入列印。但是很多情況下會發現渲染時間超過1秒 ...
  • 1、對象構造函數 設置節點與人名 2、生成隨機對象 3、開始事件 4、結束事件 代碼下載地址:https://pan.baidu.com/s/1DgOWML9OoOoA2fiddeYCTQ ...
  • Web前端開發規範手冊(適合新手入門)持續更新,歡迎閱讀,小白自學,一起共勉!!!加油!! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...