AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

餓了么面試官:實(shí)現(xiàn)一下 Element-UI 官網(wǎng)的主題切換動(dòng)畫!

來(lái)源: 責(zé)編: 時(shí)間:2024-07-15 17:15:39 590觀看
導(dǎo)讀前言大家好,我是林三心,用最通俗易懂的話講最難的知識(shí)點(diǎn)是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心。最近看到 ElementPlus 官網(wǎng)上的切換主題方式非常有趣,這是一個(gè)過(guò)渡的動(dòng)畫效果。圖片所以在網(wǎng)上查了一番,找到基本的實(shí)現(xiàn)

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識(shí)點(diǎn)是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心。LOt28資訊網(wǎng)——每日最新資訊28at.com

最近看到 ElementPlus 官網(wǎng)上的切換主題方式非常有趣,這是一個(gè)過(guò)渡的動(dòng)畫效果。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

所以在網(wǎng)上查了一番,找到基本的實(shí)現(xiàn)方法。LOt28資訊網(wǎng)——每日最新資訊28at.com

實(shí)現(xiàn)

基本效果

首先我們起一個(gè) html 文件,寫一個(gè)按鈕,以及簡(jiǎn)單的背景顏色切換,來(lái)模擬主題的切換。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

可以看到實(shí)現(xiàn)了最簡(jiǎn)單的主題切換效果。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

document.startViewTransition

想要實(shí)現(xiàn)過(guò)渡效果,需要先用到一個(gè) JavaScript 的原生方法:document.startViewTransition。LOt28資訊網(wǎng)——每日最新資訊28at.com

這個(gè)方法是用來(lái)做動(dòng)畫過(guò)渡效果的。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

通過(guò)調(diào)用 API,讓瀏覽器為新舊兩種不同視圖分別捕獲并建立了快照 (即 ::view-transition-old(root)舊快照 和 ::view-transition-new(root) 新快照),而后新舊兩快照在 ::view-transition-image-pair(root) 容器中完成轉(zhuǎn)場(chǎng)動(dòng)畫的過(guò)渡。動(dòng)畫結(jié)束后則刪除其相關(guān)偽元素 (快照和容器)。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

過(guò)渡動(dòng)畫效果

我們可以應(yīng)用一下這個(gè) API。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在去切換主題顏色,發(fā)現(xiàn)有過(guò)渡效果了。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

圓形擴(kuò)散過(guò)渡動(dòng)畫

接下來(lái)實(shí)現(xiàn)圓形過(guò)渡的效果,其實(shí)這個(gè)動(dòng)畫最終是展示::view-transition-new(root)這個(gè)偽元素,所以我們只需要讓這個(gè)偽元素有原型擴(kuò)散的過(guò)渡動(dòng)畫即可!LOt28資訊網(wǎng)——每日最新資訊28at.com

那圓形擴(kuò)散動(dòng)畫咋做呢?其實(shí)很簡(jiǎn)單,只需要將偽元素的半徑,從0 -> 100%即可。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

代碼如下:LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

并且我們需要取消掉 document.startViewTransition默認(rèn)的動(dòng)畫效果,不然它會(huì)導(dǎo)致我們自定義的動(dòng)畫效果無(wú)效。LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

最終得到圓形擴(kuò)散的效果:LOt28資訊網(wǎng)——每日最新資訊28at.com

圖片LOt28資訊網(wǎng)——每日最新資訊28at.com

LOt28資訊網(wǎng)——每日最新資訊28at.com

完整代碼

<!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>      :root {        /* 默認(rèn)亮主題 */        --bg-color: #fff;        background-color: var(--bg-color);      }      :root.dark {        /* 暗主題 */        --bg-color: #000;      }      ::view-transition-new(root),      ::view-transition-old(root) {        /* 關(guān)閉默認(rèn)動(dòng)畫 */        animation: none;      }    </style>  </head>  <body>    <button id="themeButton">切換主題</button>    <script>      const themeButton = document.getElementById("themeButton");      themeButton.addEventListener("click", (e) => {        // 執(zhí)行切換主題的操作        const transition = document.startViewTransition(() => {          // 動(dòng)畫過(guò)渡切換主題色          document.documentElement.classList.toggle("dark");        });        // document.startViewTransition 的 ready 返回一個(gè) Promise        transition.ready.then(() => {          // 獲取鼠標(biāo)的坐標(biāo)          const { clientX, clientY } = e;          // 計(jì)算最大半徑          const radius = Math.hypot(            Math.max(clientX, innerWidth - clientX),            Math.max(clientY, innerHeight - clientY)          );          // 圓形動(dòng)畫擴(kuò)散開始          document.documentElement.animate(            {              clipPath: [                `circle(0% at ${clientX}px ${clientY}px)`,                `circle(${radius}px at ${clientX}px ${clientY}px)`,              ],            },            // 設(shè)置時(shí)間,已經(jīng)目標(biāo)偽元素            {              duration: 300,              pseudoElement: "::view-transition-new(root)",            }          );        });      });    </script>  </body></html>

本文鏈接:http://www.tebozhan.com/showinfo-26-100986-0.html餓了么面試官:實(shí)現(xiàn)一下 Element-UI 官網(wǎng)的主題切換動(dòng)畫!

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: VueConf 2024 落幕,7大模塊講解 Vue 未來(lái)生態(tài)變化!

下一篇: 想看源碼但是無(wú)從下口怎么辦?

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 直屏旗艦來(lái)了 iQOO 12和K70 Pro同臺(tái)競(jìng)技

    旗艦機(jī)基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛(ài)好者在苦等一款直屏旗艦,這次,你們等到了。據(jù)博主數(shù)碼閑聊站帶來(lái)的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 天貓精靈Sound Pro體驗(yàn):智能音箱沒(méi)有音質(zhì)?來(lái)聽聽我的

    這幾年除了手機(jī)作為智能生活終端最主要的核心之外,第二個(gè)可以成為中心點(diǎn)的產(chǎn)品是什么?——是智能音箱。 手機(jī)在執(zhí)行命令的時(shí)候有兩種操作方式,手和智能語(yǔ)音助手,而智能音箱只
  • 得物效率前端微應(yīng)用推進(jìn)過(guò)程與思考

    一、背景效率工程隨著業(yè)務(wù)的發(fā)展,組織規(guī)模的擴(kuò)大,越來(lái)越多的企業(yè)開始意識(shí)到協(xié)作效率對(duì)于企業(yè)團(tuán)隊(duì)的重要性,甚至是決定其在某個(gè)行業(yè)競(jìng)爭(zhēng)中突圍的關(guān)鍵,是企業(yè)長(zhǎng)久生存的根本。得物
  • 學(xué)習(xí)JavaScript的10個(gè)理由...

    作者 | Simplilearn編譯 | 王瑞平當(dāng)你決心學(xué)習(xí)一門語(yǔ)言的時(shí)候,很難選擇到底應(yīng)該學(xué)習(xí)哪一門,常用的語(yǔ)言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 雅柏威士忌多款單品價(jià)格大跌,泥煤頂流也不香了?

    來(lái)源 | 烈酒商業(yè)觀察編 | 肖海林今年以來(lái),威士忌市場(chǎng)開始出現(xiàn)了降溫跡象,越來(lái)越多不斷暴漲的網(wǎng)紅威士忌也開始悄然回歸市場(chǎng)理性。近日,LVMH集團(tuán)旗下蘇格蘭威士忌品牌雅柏(Ardbeg
  • 阿里大調(diào)整

    來(lái)源:產(chǎn)品劉有媒體報(bào)道稱,近期淘寶天貓集團(tuán)啟動(dòng)了近年來(lái)最大的人力制度改革,涉及員工績(jī)效、層級(jí)體系等多個(gè)核心事項(xiàng),目前已形成一個(gè)初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 蘋果公司要求三星和LG Display生產(chǎn)「無(wú)邊框」OLED iPhone顯示屏

    據(jù) The Elec 報(bào)道,蘋果已要求其供應(yīng)商為未來(lái)的 iPhone 型號(hào)開發(fā)「無(wú)邊框」OLED 顯示面板。蘋果顯然已要求三星和 LG Display 開發(fā)新的 OLED 顯示面
  • 3699元!iQOO Neo8 Pro頂配版今日首銷:1TB UFS 4.0同價(jià)位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro兩個(gè)版本,其中標(biāo)準(zhǔn)版搭載高通驍龍8+,而Pro版更是首發(fā)搭載了聯(lián)發(fā)科天璣9200+旗艦
  • 北京:科技教育體驗(yàn)基地開始登記

      北京“科技館之城”科技教育體驗(yàn)基地登記和認(rèn)證工作日前啟動(dòng)。首批北京科技教育體驗(yàn)基地?cái)M于2023年全國(guó)科普日期間掛牌,后續(xù)還將開展常態(tài)化登記。  北京科技教育體驗(yàn)基
Top