6.動畫

来源:https://www.cnblogs.com/lanshanxiao/archive/2020/05/24/12952714.html
-Advertisement-
Play Games

# 6.動畫 - 1. transition 過渡 transition-property:all;//監聽屬性 transition-duration:1s;//過渡時間 transition-timing-function:linear;//運動速率 transition-delay:1s;// ...


# 6.動畫   - 1. transition 過渡     transition-property:all;//監聽屬性     transition-duration:1s;//過渡時間     transition-timing-function:linear;//運動速率     transition-delay:1s;//過渡延遲時間   ```html <style>     div{         width:100px;         height:100px;         background-color:#008c8c;         transition:width 2s linear 1s;     }       div:hover{         width:200px;         height:200px;     } </style> <div></div> ```       transition-timing-function:cubic-bezier(x1, y1, x2, y2);//x值必須(0,1)   - 2. animation     animation-name//名稱     animation-duration//執行時間     animation-timing-function//運動速率     animation-delay//延遲時間     animation-iteration-count:infinite;//執行無限次,預設值為1     animation-direction:reverse;//反向運動,預設值normal     animation-play-state:paused;//不推薦使用     animation-fill-mode:none | forwards | backwards | both;//forwards:在動畫運動結束後,保持動畫最後一幀的狀態;backwards:在動畫運動開始前,保持動畫第一幀的狀態;both:在動畫結束胡,保持動畫最後一幀的狀態, 在動畫開始前,保持動畫第一幀的狀態;   ```html <style> @keyframes run{     0%{         left:0;         top:0;     }     25%{         left:100px;         top:0;     }     50%{         left:0;         top:100px;     }     75%{         left:0;         top:0;     }     100%{         left:0;         top:0;     } }   div{     position:absolute;     width:100px;     height:100px;     background-color:red;     animation:run 4s; } </style> ```   - 3. step     steps(1, end); === step-end;     steps(1, start); === step-start;   ```html <style>     @keyframes change-color{         0% {             background-color:red;         }         25% {             background-color:green;         }         50% {             background-color:blue;         }         75% {             background-color:black;         }         100% {             background-color:#fff;         }     }       div{         width:100px;         height:100px;         background-color:red;         animation:change-color 4s steps(1, end);/*steps(幾步執行,)             start:保留下一幀狀態,直到這段動畫時間結束             end:保留當前幀狀態,直到這段動畫時間結束         */     } </style> ```       - 4. transform     rotate:         transform:rotate(0deg);//旋轉度數         taransform-origin:0 0;//旋轉中心點           transform:rotateX(0deg);//圍繞X軸旋轉         transform:rotateY(0deg);//圍繞Y軸旋轉         transform:rotateZ(0deg);//圍繞Z軸旋轉           transform:rotate3d(x,y,z,angle);//圍繞自定義矢量旋轉     scale: 伸縮的是此元素的變化坐標軸的刻度(若x為2,則原來x軸的100被拉伸為200的長度,但是現在100的刻度代表200的長度。就像皮筋一樣上面標上刻度100,被拉長了2倍,但是皮筋上的刻度未變,但現在100刻度代表了200的長度一樣。所以再對x軸進行長度操作如平移100刻度,實際上平移了200的長度)         scale(x, y);//x.橫坐標伸縮的倍數;y.縱坐標伸縮的倍數;         scalex();         scaley();         scalez();         scale3d();           可以疊加操作             transform:scale(.5, .5) scale(3, 3);//實際操作倍數0.5*3     skew: 傾斜         transform:skew(xdeg, ydeg)             不僅傾斜了,坐標軸刻度也被拉伸了,因為傾斜過後,元素高度保持不變               傾斜的是坐標軸而不是元素本身,若設置了xdeg那麼y軸角度變化,若設置了ydeg那麼x軸角度發生變化。               xdeg:表示x軸扭曲度             x扭曲 = y旋轉+y伸縮             x取值為正,x軸不動,y軸朝著x軸正方向傾斜x度數             x取值為負,x軸不動,y軸朝著x軸負方向傾斜x度數               ydeg:表示x軸扭曲度             y扭曲 = x旋轉+x伸縮             y取值為正,y軸不動,x軸朝著y軸正方向傾斜x度數             y取值為負,y軸不動,x軸朝著y軸負方向傾斜y度數       translate:平移         transform:translate(xpx,ypx);//平移xpx和ypx         transform:translatex(xpx);         transform:translatey(ypx);         transform:translatez(zpx);           元素居中,不知道元素的寬度:             left:50%;             transform:translatex(-50%);          用於父元素的屬性      perspective:景深(按照投影理解,比較好理解)         取值1到正無窮px,預設值為0     perspective-origin: 300px 200px;//從元素左上角開始計算        用於自身元素的屬性     transform:perspective(800px);       用於父元素屬性         transform-style:preserve-3d;//渲染3d效果          用於自身元素的屬性:         backface-visibility:visible | hidden;//背面元素是否可見   ```html <!-- 3D旋轉圖片牆 --> <!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>         *{             margin:0;             padding:0;         }           :root,         body{             height:100%;                      }           body{             perspective:2000px;             transform-style:preserve-3d;         }           @keyframes run{             0%{                 transform:translate(-50%, -50%) rotatey(0deg);             }             100%{                 transform:translate(-50%, -50%) rotatey(360deg);             }         }           .wrapper{             position: absolute;             left:calc(50%);             top:calc(50%);             transform:translate(-50%, -50%);             width:300px;             height:300px;             transform-style:preserve-3d;             animation:run 10s infinite;         }           .image{             position:absolute;             background-color:#fff;             width:300px;             height:300px;         }         .image:nth-of-type(1){             transform:rotatey(45deg) translateZ(800px);             background-image:url(1.jpg);         }         .image:nth-of-type(2){             transform:rotatey(90deg) translateZ(800px);             background-image:url(2.jpg);         }         .image:nth-of-type(3){             transform:rotatey(135deg) translateZ(800px);             background-image:url(3.jpg);         }         .image:nth-of-type(4){             transform:rotatey(180deg) translateZ(800px);             background-image:url(4.jpg);         }         .image:nth-of-type(5){             transform:rotatey(225deg) translateZ(800px);             background-image:url(5.jpg);         }         .image:nth-of-type(6){             transform:rotatey(270deg) translateZ(800px);             background-image:url(6.jpg);         }         .image:nth-of-type(7){             transform:rotatey(315deg) translateZ(800px);             background-image:url(7.jpg);         }         .image:nth-of-type(8){             transform:rotatey(360deg) translateZ(800px);             background-image:url(8.jpg);         }     </style> </head> <body>     <div class="wrapper">         <div class="image"></div>         <div class="image"></div>         <div class="image"></div>         <div class="image"></div>         <div class="image"></div>         <div class="image"></div>         <div class="image"></div>         <div class="image"></div>     </div>     <script>         document.body.onmousemove = function(e){             this.style.perspectiveOrigin = "" + e.pageX + "px " + e.pageY + "px";         }     </script> </body> </html> ```   以上是markdown格式的筆記
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基本數據檢索:單表 複雜數據檢索:多表:連接查詢、子查詢(嵌套查詢)、集合運算 基本select語句: select <檢索欄位> from <表> where <檢索條件> group by<分類> having<檢索條件> order by <排序欄位> 操縱列: 1.輸出所有列:select ...
  • 事務的使用方式 事務的錯誤處理 WATCH命令 生存時間 緩存策略 Redis中的事務(transaction)是一組命令的集合。事務同命令一樣都是Redis的最小執行單位,一個事務中的命令要麼都執行,要麼都不執行。 事務的原理是先將屬於一個事務的命令發送給Redis,然後再讓Redis依次執行這些 ...
  • 摘要 本文旨在瞭解MySQL InnoDB引擎如何支持事務的隔離級別。 文章主要內容分兩個部分。 第一部分闡述資料庫的併發問題以及為之產生的ANSI SQL 標準隔離級別。 第二部分根據 MySQL 官方文檔解釋 InnoDB 是如何支持這些隔離級別的。 資料庫事務的併發問題 ANSI SQL 隔離 ...
  • 從 Gradle 角度看,Android 插件是由 Google 的 Android 團隊開發的一個第三方插件。 從 Android 的角度看,Android 插件是基於 Gradle 構建的,是和 Android studio 完美搭配的新一代構建系統。 ...
  • 目錄:andorid jar/庫源碼解析 Apktool.jar: 作用: 1、用於對APK文件進行解包,成可以讀的smali和xml,png等資源文件。 2、同時,把解碼之後的數據,重新打包成APK文件。 慄子: 使用命令的方式使用 1、apktool d xxx.apk // 解碼 apk文件 ...
  • 一,JavaScript是什麼? 1,JavaScript簡稱:js,是一種瀏覽器解釋型語言,嵌套在HTML文件中交給瀏覽器解釋執行。主要用來實現網頁的動態效果,用戶交互及前後端的數據傳輸等。 2,JavaScript 組成 1,核心語法 - ECMAScript (ES5-ES6) 規範了Java ...
  • 在開發大型Web應用或複雜交互的網站,不免會遇到一些頁面性能瓶頸的問題。本篇介紹一下如何利用Chrome的性能面板分析網站的性能瓶頸,應該對你有所幫助。 註意,為了減少一些Chrome插件對性能評估產生噪音,最好打開隱身模式訪問頁面進行測試。 將Chrome切換到隱身模式,然後打開該頁面進行測試: ...
  • 在組件特定時期,觸發的條件,統稱為生命周期; + 組件生命周期分為三部分: 組件創建階段 :組件創建階段的生命周期函數,有一個顯著的特點:創建階段的生命周期函數,組件一生只執行一次; componentWillMount:組件將要被掛載,此時還沒有開始渲染虛擬dom render:第一次開始渲染真正 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...