<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Element-Plus官網(wǎng)黑夜模式切換動(dòng)畫效果的實(shí)現(xiàn)

      前言

      在使用Element-Plus時(shí),發(fā)現(xiàn)有兩個(gè)很有趣的效果,一個(gè)是header的背景模糊效果,另一個(gè)是黑夜模式切換動(dòng)畫,在此我們先來研究一下黑夜模式切換動(dòng)畫效果是如何實(shí)現(xiàn)的。

      代碼

      html部分

      <div id="box">
        <input type="checkbox" id="checkBox">
        <label for="checkBox"></label>
      </div>
      <iframe src="https://www.baidu.com"></iframe>
      

      css部分

              html,
              body {
                  background-color: #fff;
                  height: 100vh;
                  display: flex;
                  flex-direction: column;
              }
      
              * {
                  margin: 0;
                  padding: 0;
                  box-sizing: border-box;
              }
      
              iframe {
                  flex: 1;
              }
      
              html.dark {
                  filter: invert(1) hue-rotate(180deg);
      
                  img,
                  video,
                  .avatar,
                  .image,
                  .thumb,
                  #box {
                      filter: invert(1) hue-rotate(180deg);
                  }
              }
      
              ::view-transition-old(root),
              ::view-transition-new(root) {
                  animation: none;
                  mix-blend-mode: normal;
              }
      
              ::view-transition-old(root) {
                  z-index: 1;
              }
      
              ::view-transition-new(root) {
                  z-index: 2147483646;
              }
      
              html.dark::view-transition-old(root) {
                  z-index: 2147483646;
              }
      
              html.dark::view-transition-new(root) {
                  z-index: 1;
              }
      
              #checkBox {
                  opacity: 0;
                  width: 0;
              }
      
              #box>label {
                  display: block;
                  width: 70px;
                  height: 30px;
                  border-radius: 30px;
                  border: 1px solid #dcdfe6;
                  background-color: #f2f2f2;
                  position: relative;
                  transition: all 0.3s;
                  display: flex;
                  align-items: center;
              }
      
              #checkBox:checked+label {
                  background-color: #2c2c2c;
                  border: 1px solid #4c4d4f;
              }
      
              #box>label::before {
                  content: '??';
                  position: absolute;
                  left: 0;
                  line-height: 25px;
                  font-size: 18px;
                  text-align: center;
                  background-color: #fff;
                  border-radius: 18px;
                  border: 1px solid #dcdfe6;
                  transition: all 0.3s;
              }
      
              #checkBox:checked+label::before {
                  display: none;
              }
      
              #checkBox+label::after {
                  content: '??';
                  position: absolute;
                  display: none;
                  left: 0;
                  line-height: 25px;
                  font-size: 18px;
                  text-align: center;
                  background-color: #141414;
                  border-radius: 18px;
                  border: 1px solid #4c4d4f;
                  transition: all 0.3s;
              }
      
              #checkBox:checked+label::after {
                  left: calc(100% - 26px);
                  right: 0;
                  display: block;
                  border: 1px solid #4c4d4f;
                  transition: all 0.3s;
              }
      

      js部分

              document.getElementById('checkBox').addEventListener('click', function (event) {
                      toggleTheme(event);
                  });
      
              // 切換主題
              function toggleTheme(event) {
                  // 檢查瀏覽器是否支持 View Transition API
                  if (!document.startViewTransition) {
                      // 不支持則直接切換主題,不添加動(dòng)畫
                      document.documentElement.classList.toggle('dark')
                      return
                  }
                  const transition = document.startViewTransition(() => {
                      document.documentElement.classList.toggle('dark')
                  })
      
                  transition.ready.then(() => {
                      const { clientX, clientY } = event
      
                      const endRadius = Math.hypot(Math.max(clientX, innerWidth - clientX), Math.max(clientY, innerHeight - clientY))
      
                      const clipPath = [`circle(0px at ${clientX}px ${clientY}px)`, `circle(${endRadius}px at ${clientX}px ${clientY}px)`]
      
                      const isDark = document.documentElement.classList.contains('dark')
      
                      document.documentElement.animate(
                          {
                              clipPath: isDark ? clipPath.reverse() : clipPath
                          },
                          {
                              duration: 450,
                              easing: 'ease-in',
                              pseudoElement: isDark ? '::view-transition-old(root)' : '::view-transition-new(root)'
                          }
                      )
                  })
              }
      

      上面切換動(dòng)畫效果的實(shí)現(xiàn)用到了View Transition API,同時(shí),用到了filter: invert(1) hue-rotate(180deg)來實(shí)現(xiàn)濾鏡反色,以確保不同主題下背景和內(nèi)容之間的對(duì)比度。

      大家快去實(shí)現(xiàn)一下吧!

      人心如良苗,得養(yǎng)乃滋長(zhǎng)。苗以泉水灌,心以理義養(yǎng)。一日不讀書,胸臆無佳想。一月不讀書,耳目失精爽。

      參考文章:來實(shí)現(xiàn)一下 element-plus 中的主題切換動(dòng)畫 --掘金

      posted @ 2025-06-25 19:40  悅動(dòng)代碼  閱讀(269)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 热久在线免费观看视频 | 18禁国产一区二区三区| 伊人久久大香线蕉网av| 国产成人精品久久一区二区| 色天天天综合网色天天| 在线无码中文字幕一区 | 国产三级精品三级在线观看| 亚洲欧洲日产国码AV天堂偷窥| 欧美成人猛片aaaaaaa| 国内少妇偷人精品免费| 亚洲一区在线成人av| аⅴ天堂中文在线网| 美女一区二区三区在线观看视频 | 免费AV片在线观看网址| 男女性杂交内射女bbwxz| 色欲综合久久中文字幕网| 国产午夜精品亚洲精品国产| 免费无码中文字幕A级毛片| 国产精品毛片一区视频播| 伊人成色综合人夜夜久久| 亚洲一区二区偷拍精品| 国产中文三级全黄| 国产日女人视频在线观看| 欧美videosdesexo吹潮| 亚洲国产精品综合久久网络| 国产精品黄色一区二区三区| 91福利国产午夜亚洲精品| 国产毛片三区二区一区| 亚洲精品国产精品乱码不| 欧美日韩免费专区在线观看 | 亚洲国产成人资源在线| 无码中文字幕乱码一区| 精品偷拍一区二区三区| 又粗又硬又黄a级毛片| 曲麻莱县| 亚洲欧美日韩综合久久| 少妇高潮喷潮久久久影院| 亚洲成人av在线综合| 午夜AAAAA级岛国福利在线 | 亚欧洲乱码视频一二三区| 成人毛片一区二区|