zoukankan      html  css  js  c++  java
  • 浏览器渲染-骨架屏是什么

    1.基本理解

      骨架屏实现原理很简单,就是通过占位线框元素,渐进式加载数据。

      骨架屏是结合了懒加载功能,在页面没有加载完成之前,先呈现页面基本结构。

    2.实现方法:

      1.在页面元素后面增加一个骨架div,当页面加载完成后就隐藏这个div

      2.在页面元素结构中先嵌入骨架div,当页面加载完成后就替换这个div

      3.通过伪元素实现骨架样式,通过操作样式实现骨架和页面的动态切换

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <meta http-equiv="X-UA-Compatible" content="ie=edge">
       <title>骨架屏示例</title>
       <style>
           *{
               margin: 0;
               padding: 0;
           }
           @keyframes loading {
               0% {
                   background-position: -400px 0
               }
    
               100% {
                   background-position: 400px 0
               }
           }
    
           .box1 {
               position: absolute;
               margin: 0 auto;
               left: 50%;
               margin-left: -400px;
               top: 0;
               width: 800px;
               height: 60px;
               background-color: blue;
               background-image: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%);//图像线性渐变写法
               animation-duration: 1s;
               animation-iteration-count: infinite;
               animation-name: loading;
               animation-timing-function: linear;
               transition: 0.3s;
           }
           .bgMasker {
               background-color: #fff;
           }
    
           .line1 {
               background-color: #fff;
               height: 20px;
               position: absolute;
               right: 0;
               top: 0;
               left: 60px;
           }
    
           .line2 {
               background-color: #fff;
               height: 20px;
               position: absolute;
               right: 700px;
               top: 20px;
               left: 60px;
           }
    
           .line3 {
               background-color: #fff;
               height: 20px;
               position: absolute;
               left: 400px;
               right: 0;
               top: 20px;
           }
    
           .line4 {
               background-color: #fff;
               height: 20px;
               top: 40px;
               position: absolute;
               left: 60px;
               right: 500px;
           }
    
           .line5 {
               background-color: #fff;
               height: 20px;
               position: absolute;
               left: 600px;
               right: 0;
               top: 40px;
           }
       </style>
    </head>
    
    <body>
       <!-- 骨架 -->
       <div class="box1">
           <div class="bgMasker line1"></div>
           <div class="bgMasker line2"></div>
           <div class="bgMasker line3"></div>
           <div class="bgMasker line4"></div>
           <div class="bgMasker line5"></div>
       </div>
    </body>
    
    </html>

        优点:

           简单,不需要工程,不用puppeteer生成骨架dom,也不需要二次开发维护

           定制程度高,想怎么搞就怎么搞

           不臃肿,只给你想要的

        缺点:

           自动化程度低,需要在骨架dom上手动添加类

           协同要求高,不像工程化能通过工程去约束

    3.优缺点:

        优点:
          让应用程序感觉更有表现力,吸引更多的注意力。
          内容还在加载中,用户也可以自由地滚动并与应用程序交互。
     
        缺点:
          增加程序运行负担,无法根本解决页面加载性能问题。
          开发工作量大,对特定页面数据额外绘制动画效果。
  • 相关阅读:
    如何退出天擎
    git彻底删除或变更子模块
    湖北校园网PC端拨号算法逆向
    PPPoE中间人拦截以及校园网突破漫谈
    vscode打开django项目pylint提示has not "object" member
    从客户端取到浏览器返回的oauth凭证
    教程视频如何压制体积更小
    windows中的软链接硬链接等
    关于博客园和独立博客的一些打算
    拉勾抓职位简单小爬虫
  • 原文地址:https://www.cnblogs.com/yxkNotes/p/12719533.html
Copyright © 2011-2022 走看看