model

model 配置最终会和公共配置合并。

支持的 model

如果设置了custom优先级大于model,枚举MODEL_TYPES

model枚举值备注
GEARGear齿轮旋转
RINGRing环形旋转
ZOOMZoom图形变形
PATTERNPattern多图形
CLOCKClock时钟
BEANBean吃豆人
ROLLRoll翻滚
CIRCULARCircular
IMGImg图片
SKELETONSkeleton骨架屏

GEAR

类型GearOptionsType

属性类型默认值限制备注
lineStartnumber10线端
lineEndnumber16线末
lineStartSkewnumber0线端偏移度
lineEndSkewnumber0线末偏移度
lineWidthnumber4线宽度
lineCapCanvasLineCapround线的样式
lineNumnumber10[4-8]线数量
directionbooleantruex 旋转方向:true:顺,则反

为了更好的控制Gearsize,设置lineStartlineEnd来控制半径或者大小。

RING

类型RingOptionsType

属性类型默认值限制备注
arcGapnumberMath.PI / 4环与环空隙
ringGapnumber10弧线之间间隔
lineWidthnumber2线宽度
ringNumnumber2[1-10]环数量
radiusnumber6环半径
lineCapCanvasLineCapround线的样式
turnnumber10旋转角度
ringsTurnArray<number>[Math.PI, Math.PI / 4]length<=ringNum多个环初始角度
directionbooleantrue方向:true:顺,则反

ZOOM

类型ZoomOptionsType

属性类型默认值限制备注
maxSizenumber16>=lineWidthzoom 变化最大
zoomGapnumber10zomm 距离
zoomHeightnumber2zomm 的高度
zoomNumnumber5zoom 数量
zoomColorsArray<string>[]zoom 的自定义颜色
lineCapCanvasLineCapround线的样式
lineWidthnumber10<=maxSize线宽度
actionZOOM_ACTIONZOOM_ACTION.SCALE动作
directionbooleantrue方向:true:顺,则反

ZOOM.action

枚举ZOOM_ACTION

属性枚举值备注
SCALEscale大小变化
WAVEwave波浪
HEIGHTheight高度变化

PATTERN

类型PatternOptionsType,此模块delay不能被修改。

属性类型默认值限制备注
chartsArray<PATTERN_CHART>[PATTERN_CHART.ARC, PATTERN_CHART.RECT, PATTERN_CHART.TRIANGLE, PATTERN_CHART.HEART, PATTERN_CHART.POLYGON]支持的图形
chartSizenumber12[5-24]图形大小
chartColorsArray<string>['#409EFF', '#67C23A', '#E6A23C', '#F56C6C', '#0960bd']动态颜色
maxHeightnumber60高度

PATTERN.charts

枚举PATTERN_CHART

属性枚举值备注
RECTrect矩形
ARCarc圆形
TRIANGLEtriangle三角形
HEARTheart爱心
POLYGONpolygon多边形

CLOCK

类型ClockOptionsType

属性类型默认值限制备注
textTime'time'或's' 或''''文字显示模式:time:年月日,s:秒
lineColorsArray<string>['#d4d4d4', '#06ab2d', '#8a0303']length<=3指针颜色
lineCapCanvasLineCapround线的样式
lineWidthnumber12线宽度
clockSizenumber15clock 大小
clockGapnumber4clock 空隙
hLinebooleantrue时指针显示
mLinebooleanfalse分指针显示
sLinebooleantrue秒指针显示

BEAN

类型BeanOptionsType

属性类型默认值限制备注
beanSize'number'15>=5bean 的大小
pointLengthnumber16>=5bean 里的 point 数量

ROLL

类型RollOptionsType,此模块delay不能被修改。

属性类型默认值限制备注
rollSizenumber16length<=3roll 大小
showChildbooleantrue显示影子 child
childNumnumber4[4-10]child 影子数量
rollGapnumber12影子空隙
chartROLL_CHARTROLL_CHART.WHEEL显示的图形
windmillsArray<string>['#1ab3ea', '#de6834', '#30925d', '#f48ea5']图形为 Windmills 的叶片颜色。
windmillPointColorstring#f2c31f图形为 Windmills 时中间点颜色。
fixadbooleanfalse是否中心固定

ROLL.chart

枚举ROLL_CHART

属性枚举值备注
RECTrect矩形
WHEELwheel轮子
WINDMILLwindmill风车

Circular

类型CircularOptionsType

属性类型默认值备注
arcSizenumber8圆大小
arcGapnumber2圆空隙
arcColorsArray<string>['#ec7546', '#8364a4', '#ff6c6e', '#5bc6ab']圆的自定义颜色
actionCIRCULAR_ACTIONCIRCULAR_ACTION.COLLISION动作

Circular.action

枚举CIRCULAR_ACTION

属性枚举值备注
COLLISIONcollision移动
ROTATErotate旋转

IMG

类型ImageOptionsType

属性类型默认值备注
srcstringWebLoading 的 logo图片链接
widthnumber52图片宽度
heightnumber52图片高度
turnbooleantrue是否旋转

Img是创建了一个HTMLImageElement,所以使用src兼容与它。

SKELETON

类型SkeletonOptionsType

Skeleton 不会给内嵌文本生成骨架。

属性类型默认值备注
skeletonColorstringrgb(240, 240, 240)skeleton 默认颜色
skeletonAnimationColorstringrgb(226, 226, 226)skeleton 动画颜色
radiusnumber5skeleton 圆角
animationbooleantrue显示动画
deepbooleantrue深度 skeleton
appointstring''指定元素 skeleton

SKELETON 上拉加载例子

业务场景:功能是指定某些元素,显示骨架,比如上拉加载,只需要动态显示最后一个或多个模块元素显示骨架,此时推荐指定元素。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>web-loading</title>
  </head>
  <script src="https://cdn.jsdelivr.net/npm/web-loading"></script>
  <body>
    <div id="app">
      <div class="list">
        <div class="item">
          <div>
            id:
            <span class="value">001</span>
          </div>
          <div>
            user:
            <span class="value">use1</span>
          </div>
        </div>
        <div class="item">
          <div>
            id:
            <span class="value">002</span>
          </div>
          <div>
            user:
            <span class="value">use2</span>
          </div>
        </div>
        <div class="item">
          <div>
            id:
            <span class="value">003</span>
          </div>
          <div>
            user:
            <span class="value">use3</span>
          </div>
        </div>
      </div>
      <div class="skeleton">
        <div>
          <span>id:</span>
          <span class="value"></span>
        </div>
        <div>
          <span>user:</span>
          <span class="value"></span>
        </div>
      </div>
    </div>
    <script>
      let time = null
      let itemIndex = 3
      window.onload = () => {
        let docApp = document.querySelector('#app')
        let docList = document.querySelector('#app .list')
        let itemDoc = document.querySelector('#app .skeleton')
        const webLoading = initLoading({
          model: 'Skeleton',
          bgColor: '',
          deep: true,
          pointerEvents: true
        })
        window.addEventListener('resize', webLoading.resize)
        docApp.addEventListener('scroll', () => {
          if (docApp.scrollTop + docApp.clientHeight >= docApp.scrollHeight - 60) {
            webLoading.loading(itemDoc)
            clearTimeout(time)
            // simulate loading data
            time = setTimeout(() => {
              ++itemIndex
              docList.innerHTML += `<div class="item">
                <span>
                  id:
                  <b class="value">00${itemIndex}</b>
                </span>
                <span>
                  user:
                  <b class="value">user${itemIndex}</b>
                </span>
              </div>`
              webLoading.close()
            }, 1500)
          }
        })
      }
    </script>
  </body>
  <style>
    #app {
      margin: 12px;
      padding: 12px;
      height: 200px;
      border: 1px solid gray;
      overflow: auto;
      border-radius: 5px;
    }
    #app .item,
    #app .skeleton {
      display: flex;
      flex-direction: column;
      border: 1px solid gray;
      border-radius: 5px;
      padding: 10px;
      line-height: 30px;
      margin-bottom: 6px;
      height: 60px;
    }
    #app .item .value,
    #app .skeleton .value {
      display: inline-block;
      min-width: 31px;
      min-height: 16px;
      font-weight: bold;
      color: rgb(64, 158, 255);
    }
  </style>
</html>

这里使用原生 html 方式引入,并显示,其余 web 框架同理。这里用的是元素分隔的方式,当然也可以使用appoint指定元素实现。

涉及到的 HTEMLElment 类型

CanvasLineCap

属性类型备注
buttstring
roundstring
squarestring
上次更新:
贡献者: tommyrunner