前端內容佔位技術分享

所謂內容佔位技術,意思是說在內容比較多,數據量大的狀況下,能夠事先將一些標籤替代它們的位置,等到加載完畢的時候再將其隱藏。注意這和之前的圖片懶加載不是一個意思,兩個不起衝突,圖片懶加載的原理就是事先用一個較小的loading圖片,等用戶到達這個位置的高度時再去獲取相應的數據。內容佔位技術就是模擬它可能會顯示出來的樣子。html

好比下面這個頁面,很差意思打了馬賽克
dom

再尚未加載內容出來時,咱們能夠這樣。
code

由於是gif的圖片,效果並非特別好,直接把上面代碼拷貝到你的文件裏面打開。這裏只作了一部分(量寬高太麻煩了)htm

其中代碼blog

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>dome</title>
  <style>
    body{
      width:640px;
      margin:0 auto;
      background-color:#fff;
    }
    @keyframes placeHolderShimmer{
        0%{
            background-position: -640px 0
        }
        100%{
            background-position: 640px 0
        }
    }
    .box {
        animation-duration: 1s;
        animation-fill-mode: forwards;
        animation-iteration-count: infinite;
        animation-name: placeHolderShimmer;
        animation-timing-function: linear;
        background: #f6f7f8;
        background: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%);
        background-size: 800px 104px;
        position: relative;
        height:100vh;
    }
    [class^="box-"]{
      position:absolute;
      background-color:#fff;
    }
    .box-bar-0{
      left:60px;
      top:0;
      width:10px;
      height:50px;
    }
    .box-bar-1{
      left:60px;
      top:0;
      width:calc(100% - 50px);
      height:20px;
    }
    .box-bar-2{
      left:60px;
      top:calc(60px - 25px);
      width:calc(100% - 50px);
      height:20px;
    }
    .box-bar-3{
      right: 0;
        top: 20px;
        width: 25%;
        height: 16px;
    }
    .box-bar-4{
      left: 0;
        top: 50px;
        width: 100%;
        height: 16px;
    }
    .box-bar-5{
      left: 110px;
        top: 66px;
        width: 20px;
        height: 132px;
    }
    .box-bar-6{
      left: 110px;
        top: 86px;
        width: calc(100% - 110px);
        height: 10px;
    }
    .box-bar-7{
      left: 220px;
        top: 98px;
        width: 300px;
        height: 10px;
    }
    .box-bar-8{
      left: 110px;
        top: 110px;
        width: calc(100% - 110px);
        height: 48px;
    }
    .box-bar-9{
      left: 272px;
        top: 166px;
        width: calc(100% - 110px);
        height: 12px;
    }
    .box-bar-10{
      left: 272px;
        top: 184px;
        width: calc(100% - 110px);
        height: 12px;
    }
  </style>
</head>
<body>
  <div class="box">
    <div class="box-bar-0"></div>
  <div class="box-bar-1"></div>
  <div class="box-bar-2"></div>
  <div class="box-bar-3"></div>
  <div class="box-bar-4"></div>
  <div class="box-bar-5"></div>
  <div class="box-bar-6"></div>
  <div class="box-bar-7"></div>
  <div class="box-bar-8"></div>
  <div class="box-bar-9"></div>
  <div class="box-bar-10"></div>
  </div>
</body>
</html>

代碼的原理其實很簡單,就是用一個大盒子把裏面的子盒子包起來,這個大盒子的做用就是那個閃爍效果以及默認背景顏色,其餘子標籤的做用就是把不是內容的用白色蓋住默認背景。圖片

恭喜你看完了,能看下來也是不錯的。animation

相關文章
相關標籤/搜索