主頁 > 企業開發 > 常用到用css3實作的轉換,過渡和影片

常用到用css3實作的轉換,過渡和影片

2020-09-24 16:17:20 企業開發

為什么要用css影片替換js影片

導致JavaScript效率低的兩大原因:操作DOM和使用頁面影片,

通常我們會通過頻繁的操作 DOM的CSS來實作視覺上的影片效果,導致js效率低的兩個因素都包括在內了在頻繁的操作DOM和CSS時,瀏覽器會不停的執行重排和重繪,在PC版本的瀏覽器中,因為瀏覽器可用的記憶體比較大,用戶肉眼幾乎看不見頁面影片產生的repaint和reflow,所以工程師幾乎無需過多的考慮影片帶來的性能問題,但在移動設備上可大有不同,移動設備分配給內置瀏覽器的記憶體可沒有PC版本的瀏覽器記憶體可觀,目前對CSS3支持最好的莫過于webkit瀏覽器了,在webkit內核的瀏覽器,一是safari其次是chrome.

用CSS3影片替代JS模擬影片的好處:

  • 不占用JS主執行緒;
  • 可以利用硬體加速;
  • 瀏覽器可對影片做優化(元素不可見時不影片減少對FPS影響)

CSS3影片提供了2D和3D以及常規影片屬性介面,它可以作業在頁面的任何一個元素的任意一個屬性,CSS3的影片是利用C語言撰寫的,它是系統層面的影片,

采用js影片還是css3影片,需要開發者根據不同的需求做出不同的抉擇,但應該遵循一個基本的原則是:如果你需要做2D影片,請勿必使用CSS3的transition或animation

CSS3影片與javascript模擬影片有以下區別:

  1. CSS 3D影片在js中無法實作
    CSS3的3D影片是CSS3中非常強大的功能,因為它的作業原理是在一個三維的空間里,因此js是無法模擬出像CSS3那樣的3D影片

  2. CSS 2D矩陣影片效率高于js利用margin和left,top模擬的矩陣影片
    CSS3的2D影片是指是2D矩陣Transform變化,js當然是不能做變形影片的,就拿坐標影片來說,使用CSS3的transform做translateXY影片比js中的position left,position right快了近700mm!而且視覺上也比js影片流暢很多,

  3. CSS3其它常規影片屬性的效率均低于js模擬的影片
    常規影片屬性在這里是指:height,width,opacity,border-width,color

 

css3的屬性

2D 轉換
CSS3 轉換可以可以對元素進行移動、縮放、轉動、拉長或拉伸,
transform屬性,適用于2D或3D轉換的元素
transform-origin屬性,設定轉化元素位置

1.translate()方法,根據左(X軸)和頂部(Y軸)位置給定的引數,從當前元素位置移動, 

div {
  transform: translate(50px,100px);
  -webkit-transform: translate(50px,100px); /* Safari and Chrome */
}

2.rotate()方法,在一個給定度數順時針旋轉的元素,負值是允許的,這樣是元素逆時針旋轉,

div {
  transform: rotate(30deg);
  -webkit-transform: rotate(30deg); /* Safari and Chrome */
}

3.scale()方法,該元素增加或減少的大小,取決于寬度(X軸)和高度(Y軸)的引數

div {
    -webkit-transform: scale(2,3); /* Safari /
    transform: scale(2,3); / 標準語法 */
}

4.skew( [,])包含兩個引數值,分別表示X軸和Y軸傾斜的角度,如果第二個引數為空,則默認為0,引數為負表示向相反方向傾斜,

div {
    transform: skew(30deg,20deg);
    -ms-transform: skew(30deg,20deg); /* IE 9 /
    -webkit-transform: skew(30deg,20deg); / Safari and Chrome */
}

 

3D 轉換

 

translate3d(x,y,z)    定義 3D 轉化,
translateX(x)    定義 3D 轉化,僅使用用于 X 軸的值,
translateY(y)    定義 3D 轉化,僅使用用于 Y 軸的值,
translateZ(z)    定義 3D 轉化,僅使用用于 Z 軸的值,

scale3d(x,y,z)    定義 3D 縮放轉換,
scaleX(x)    定義 3D 縮放轉換,通過給定一個 X 軸的值,
scaleY(y)    定義 3D 縮放轉換,通過給定一個 Y 軸的值,
scaleZ(z)    定義 3D 縮放轉換,通過給定一個 Z 軸的值,

rotate3d(x,y,z,angle)    定義 3D 旋轉,
rotateX(angle)    定義沿 X 軸的 3D 旋轉,
rotateY(angle)    定義沿 Y 軸的 3D 旋轉,
rotateZ(angle)    定義沿 Z 軸的 3D 旋轉,

perspective(n)    定義 3D 轉換元素的透視視圖,

 

CSS3 過渡

transition    簡寫屬性,用于在一個屬性中設定四個過渡屬性,
transition-property    規定應用過渡的 CSS 屬性的名稱,
transition-duration    定義過渡效果花費的時間,默認是 0,transition-duration: 5s;
transition-timing-function    規定過渡效果的時間曲線,默認是 "ease",
    linear    規定以相同速度開始至結束的過渡效果(等于 cubic-bezier(0,0,1,1)),
    ease    規定慢速開始,然后變快,然后慢速結束的過渡效果(cubic-bezier(0.25,0.1,0.25,1)),
    ease-in    規定以慢速開始的過渡效果(等于 cubic-bezier(0.42,0,1,1)),
    ease-out    規定以慢速結束的過渡效果(等于 cubic-bezier(0,0,0.58,1)),
    ease-in-out    規定以慢速開始和結束的過渡效果(等于 cubic-bezier(0.42,0,0.58,1)),
    cubic-bezier(n,n,n,n)  在 cubic-bezier 函式中定義自己的值,可能的值是 0 至 1 之間的數值,
transition-delay  規定過渡效果何時開始,默認是 0,transition-delay: 2s;

 

CSS3 影片
@keyframes    規定影片,    
animation    所有影片屬性的簡寫屬性,除了 animation-play-state 屬性,    
animation-name    規定 @keyframes 影片的名稱,    
animation-duration    規定影片完成一個周期所花費的秒或毫秒,默認是 0,    
animation-timing-function    規定影片的速度曲線,默認是 "ease",    
animation-fill-mode    規定當影片不播放時(當影片完成時,或當影片有一個延遲未開始播放時),要應用到元素的樣式,    
animation-delay      規定影片何時開始,默認是 0,    
animation-iteration-count    規定影片被播放的次數,默認是 1,
animation-direction    規定影片是否在下一周期逆向地播放,默認是 "normal",
animation-play-state    規定影片是否正在運行或暫停,默認是 "running",

 




轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/120054.html

標籤:Html/Css

上一篇:淺嘗https

下一篇:Vue實體:vue2.0+ElementUI框架開發pc專案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more