溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

web前端入門到實戰(zhàn):css實現的骨架屏方案

發(fā)布時間:2020-08-04 01:32:03 來源:網絡 閱讀:433 作者:前端向南 欄目:web開發(fā)

優(yōu)點

  • 簡單,不需要工程,不用puppeteer生成骨架dom,也不需要二次開發(fā)維護
  • 定制程度高,想怎么搞就怎么搞
  • 不臃腫,只給你想要的

缺點

  • 自動化程度低,需要在骨架dom上手動添加類
  • 協同要求高,不像工程化能通過工程去約束

思路

通過偽元素實現骨架樣式,通過操作樣式實現骨架和頁面的動態(tài)切換

實現

css部分(scss寫法)

通過after偽元素生成骨架樣式,并通過absolute覆蓋到實際元素上

專門建立的學習Q-q-u-n: 784-783-012 ,分享學習的方法和需要注意的小細節(jié),不停更新最新的教程和學習技巧
(從零基礎開始到前端項目實戰(zhàn)教程,學習工具,全棧開發(fā)學習路線以及規(guī)劃)
  .skt-loading {
    pointer-events: none; /* 加載中阻止事件 */
    .skeleton {
      position: relative;
      overflow: hidden;
      border: none !important;
      border-radius: 5px;
      background-color: transparent !important;
      background-image: none !important;
      &::after {
        content: '';
        position: absolute;
        left: 0;
        top: 0;
        z-index: 9;
        width: 100%;
        height: 100%;
        background-color: #EBF1F8;
        display: block;
      }

      /* 下面這部分都是自定義的,看需求修改 */
      &:not(.not-round)::after {
        border-radius: 4px;
      }
      &:not(.not-before)::before {
        position: absolute;
        top: 0;
        width: 30%;
        height: 100%;
        content: "";
        background: linear-gradient(to right,rgba(255,255,255,0) 0,
            rgba(255,255,255,.3) 50%,rgba(255,255,255,0) 100%);
        transform: skewX(-45deg);
        z-index: 99;
        animation: skeleton-ani 1s ease infinite;
        display: block;
      }
      &.badge {
        &::after {
          background-color: #F8FAFC;
        }
      }
    }
  }

  @keyframes skeleton-ani { /* 骨架屏動畫 */
    from {
      left: -100%;
    }
    to {
      left: 150%;
    }
  }

html部分

只需要在你認為合理的骨架粒度元素上添加skeleton類即可

js部分

控制好skt-loading類的切換

使用注意

  • after偽元素無法插入到inputimg等非容器元素中,所以如果需要添加skleton,則需要再加一層元素將其包裹
  • 對于像vuereact數據驅動頁面需要先有mock數據以生成dom
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI