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

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

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

      不定高元素動畫實現方案(中)

      前情

      最近小程序接了一個需求,需要實現一個列表,列表可展開收起,展開收起需要有一個動畫效果,而列表個數不定且每項內容高度也不固定,所以是一個不定高的收起展開效果,于是特意抽時間嘗試了一些動畫實現方案,特此記錄

      通過scale來實現

      通過css3的transform:scaleY()來實現,就是設置內容的縮放從0到1,這里有一個小技巧,默認縮放是相對于元素的正中心,這里要設置相對于頂邊來實現動畫,通過transform-origin來修改變換中心點

      關鍵代碼如下:

      <!DOCTYPE html>
      <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>JS Bin</title>
      </head>
      <body>
        <div class="container">
          <div class="inner">
            <div class="header">header</div>
            <ul class="list">
              <li>scale111111111</li>
              <li>scale2222222222</li>
              <li>scale333333333</li>
              <li>scale444444444</li>
            </ul>
          </div>
        </div>
      </body>
      </html>
      
      *{
        margin: 0;
        padding: 0;
      }
      .container{
        width: 100%;
        overflow: hidden;
      }
      .container:hover .list{
        transform:scaleY(1)
      }
      .header{
        width: 100%;
        height: 48px;
        background-color: #ccc;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .list{
        background-color: green;
        transition: transform .4s;
        transform:scaleY(0);
        transform-origin:top center;
      }
      

      演示地址:https://jsbin.com/haxatotohi/edit?html,css,output

      20250920_183601

      注意:

      此縮放屬性兼容性已經非常好了,可以大但使用,但是它的動畫方式相比修改亮度過渡不是特別好看,能看到內容明顯的壓扁縮放過程,但是它是性能最好的,因為修改transform不會引起回流,如果這種效果產品能接受,優先使用此種方式

      image

      通過interpolate-size來實現

      interpolate-size屬性允許在 CSS 中對尺寸相關的屬性進行插值計算,從而實現過渡動畫效果

      可設置的屬性有兩個值:numeric-only(數字) 和 allow-keywords(關鍵字)

      默認過渡動畫只能針對數字,如果想對如auto/fill-content/max-content等關鍵字做動畫就得把interpolate-size設置為allow-keywords

      代碼如下:

      <!DOCTYPE html>
      <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>JS Bin</title>
      </head>
      <body>
        <div class="container">
          <div class="inner">
            <div class="header">header</div>
            <ul class="list">
              <li>interpolate-size111111111</li>
              <li>interpolate-size2222222222</li>
              <li>interpolate-size333333333</li>
              <li>interpolate-size444444444</li>
            </ul>
          </div>
        </div>
      </body>
      </html>
      
      *{
        margin: 0;
        padding: 0;
      }
      .container{
        width: 100%;
        height: 48px;
        overflow: hidden;
        transition:all .4s;
        interpolate-size: allow-keywords
      }
      .container:hover{
        height: auto;
      }
      .header{
        width: 100%;
        height: 48px;
        background-color: #ccc;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .list{
        background-color: green;
      }
      

      演示地址:https://jsbin.com/nucinaleva/edit?html,css,output

      20250920_175002

      注意:

      interpolate-size是新出的css就是為了解決關鍵詞過渡動畫的,但目前兼容性非常差,如果你是做后臺管理項目或者electron桌面端項目可以用用,當然用在項目中也是無防的對于支持的就有過渡,不支持的就無過渡,這叫做優雅降級

      image 1

      通過calc-size來實現

      calc-size() CSS function 允許您對固有值執行計算,例如 auto 、 fit-content 和 max-content ;常規 calc() 函數不支持此功能

      calc-size() 返回值也可以是插值的 ,從而允許在 animations 和 transitions 中使用 size 關鍵字值。實際上,在屬性值中包含 calc-size() 會自動將 interpolate-size: allow-keywords 應用于選擇

      關鍵代碼如下:

      <!DOCTYPE html>
      <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>JS Bin</title>
      </head>
      <body>
        <div class="container">
          <div class="inner">
            <div class="header">header</div>
            <ul class="list">
              <li>calc-size111111111</li>
              <li>calc-size2222222222</li>
              <li>calc-size333333333</li>
              <li>calc-size444444444</li>
            </ul>
          </div>
        </div>
      </body>
      </html>
      
      *{
        margin: 0;
        padding: 0;
      }
      .container{
        width: 100%;
        height: 48px;
        overflow: hidden;
        transition:all .4s;
      }
      .container:hover{
        height: calc-size(auto, size);
      }
      .header{
        width: 100%;
        height: 48px;
        background-color: #ccc;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .list{
        background-color: green;
      }
      

      演示地址:https://jsbin.com/gedezajoni/edit?html,css,output

      20250920_180740

      注意:

      兼容性有些差,如果你是做后臺管理項目或者electron桌面端項目可以用用,當然用在項目中也是無防的對于支持的就有過渡,不支持的就無過渡,這叫做優雅降級

      image 2

      小結

      對于做技術的我們,每天都是提出問題解決問題的一個過程,過程中會嘗試各種方案,因為解決問題的方案千千萬,此篇文章記錄了實現不定高內容過渡效果的另外三種實現方式,怕篇幅太長,此文暫時寫這么多,下篇繼續……

      posted @ 2025-09-21 11:03  !win !  閱讀(158)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 激情六月丁香婷婷四房播| 日本高清视频色欧WWW| 日韩中文字幕v亚洲中文字幕| 邻水| 免费十八禁一区二区三区| 九九热视频在线精品18| 亚洲成a人片在线视频| 欧美乱码伦视频免费| 曰韩精品无码一区二区三区视频| 国内精品综合九九久久精品 | 亚洲精品中文字幕码专区| 国产a在亚洲线播放| 富阳市| 农村欧美丰满熟妇xxxx| 日韩中文字幕人妻精品| 久久久久久99av无码免费网站| 久久夜色精品久久噜噜亚| 内射极品少妇xxxxxhd| 亚洲精品国产av成拍色拍个| 亚洲国产av剧一区二区三区 | 办公室强奷漂亮少妇视频| 国产av亚洲精品ai换脸电影| 久久综合久中文字幕青草| 肉色丝袜足j视频国产| 中文字幕国产精品一二区| 好爽毛片一区二区三区四| 精品 日韩 国产 欧美 视频| 图片区 小说区 区 亚洲五月 | 成人3d动漫一区二区三区| 亚亚洲视频一区二区三区| 国产高清在线精品一区二区三区| 精品激情视频一区二区三区| 少妇高潮太爽了在线视频| 日日摸夜夜添夜夜添国产三级 | 在线天堂新版资源www在线下载| 中文字幕日韩有码一区| 亚洲人成网站在线观看播放不卡| 桃花岛亚洲成在人线AV| 亚洲精品一区二区三区大| 无码成人午夜在线观看| 印江|