diff --git a/example/pages/button/index.wxml b/example/pages/button/index.wxml index ff534549..91b4beb2 100644 --- a/example/pages/button/index.wxml +++ b/example/pages/button/index.wxml @@ -23,7 +23,7 @@ - - + + diff --git a/example/pages/button/index.wxss b/example/pages/button/index.wxss index e69de29b..9e6c7345 100644 --- a/example/pages/button/index.wxss +++ b/example/pages/button/index.wxss @@ -0,0 +1,3 @@ +.loading { + margin: 0 18px; +} diff --git a/example/pages/loading/index.json b/example/pages/loading/index.json index 4d84ebcd..8afd6d98 100644 --- a/example/pages/loading/index.json +++ b/example/pages/loading/index.json @@ -1,6 +1,7 @@ { - "navigationBarTitleText": "loading 加载", + "navigationBarTitleText": "Loading 加载", "usingComponents": { + "demo-block": "../../components/demo-block/index", "van-loading": "../../dist/loading/index" } -} \ No newline at end of file +} diff --git a/example/pages/loading/index.wxml b/example/pages/loading/index.wxml index 12558109..4ebf7b18 100644 --- a/example/pages/loading/index.wxml +++ b/example/pages/loading/index.wxml @@ -1,19 +1,9 @@ - + + + + - circle - - - - - spinner - - - - - dot - - - - - - + + + + diff --git a/example/pages/loading/index.wxss b/example/pages/loading/index.wxss index 269e324a..3fdb6930 100644 --- a/example/pages/loading/index.wxss +++ b/example/pages/loading/index.wxss @@ -1,14 +1,9 @@ -.container { - background: #f0f0f0; +.loading { + margin-right: 20px; } -.loading-example { - display: flex; - flex-direction: row; - background: transparent; + +.shadow { + padding: 10px; + border-radius: 3px; + background-color: rgba(0, 0, 0, .5); } -.loading-example van-loading { - flex: 1; -} -.no-flex { - display: block; -} \ No newline at end of file diff --git a/packages/button/README.md b/packages/button/README.md index eeaf7617..0b66b1a2 100644 --- a/packages/button/README.md +++ b/packages/button/README.md @@ -72,6 +72,13 @@ | send-message-img | sendMessageImg | `String` | 截图 | | show-message-card | 显示会话内消息卡片 | `String` | `false` | +### 外部样式类 + +| 类名 | 说明 | +|-----------|-----------| +| custom-class | 根节点样式类 | +| loading-class | 加载图标样式类 | + ### 事件 | 事件名 | 说明 | 参数 | diff --git a/packages/button/index.js b/packages/button/index.js index 5e0ed6f5..62dca894 100644 --- a/packages/button/index.js +++ b/packages/button/index.js @@ -6,7 +6,10 @@ const observer = function () { }; Component({ - externalClasses: ['custom-class'], + externalClasses: [ + 'custom-class', + 'loading-class' + ], behaviors: [nativeBehaviors], diff --git a/packages/button/index.pcss b/packages/button/index.pcss index 853d3eb1..18c1b30d 100644 --- a/packages/button/index.pcss +++ b/packages/button/index.pcss @@ -4,8 +4,8 @@ position: relative; padding: 0; display: inline-block; - height: 45px; - line-height: 43px; + height: 44px; + line-height: 42px; border-radius: 3px; box-sizing: border-box; font-size: 16px; diff --git a/packages/button/index.wxml b/packages/button/index.wxml index 8c6813c6..f77ea3b5 100644 --- a/packages/button/index.wxml +++ b/packages/button/index.wxml @@ -20,6 +20,11 @@ binderror="binderror" bindopensetting="bindopensetting" > - + diff --git a/packages/loading/README.md b/packages/loading/README.md index 7feada44..69267ea7 100644 --- a/packages/loading/README.md +++ b/packages/loading/README.md @@ -1,25 +1,40 @@ ## Loading 加载 ### 使用指南 + 在 index.json 中引入组件 ```json - { - "usingComponents": { - "van-loading": "path/to/vant-weapp/dist/loading/index" - } - } +"usingComponents": { + "van-loading": "path/to/vant-weapp/dist/loading/index" +} ``` -在页面上直接使用 van-loading 标签即可 +### 代码演示 + +#### Circular + ```html - - - + + ``` -### 具体参数 -| 名称 | 类型 | 是否必须 | 默认 | 描述 | -| ------- | --------------- | -------- | ----- | ----------------- | -| type | String | 否 | circle | loading 类型,可支持 circle,spinner,dot | -| color | String | 否 | 无 | 可选值 black | -| use | String,Number | 否 | 1 | 选择每种 Loading 类型的样式 | +#### Spinner + +```html + + +``` + +### API + +| 参数 | 说明 | 类型 | 默认值 | +|-----------|-----------|-----------|-------------| +| color | 颜色 | `String` | `#c9c9c9` | +| type | 类型,可选值为 `spinner` | `String` | `circular` | +| size | 大小 | `String` | `30px` | + +### 外部样式类 + +| 类名 | 说明 | +|-----------|-----------| +| custom-class | 根节点样式类 | diff --git a/packages/loading/index.js b/packages/loading/index.js index fa40a9f1..5ab0a49a 100644 --- a/packages/loading/index.js +++ b/packages/loading/index.js @@ -1,11 +1,18 @@ Component({ + externalClasses: ['custom-class'], + properties: { + size: { + type: String, + value: '30px' + }, type: { type: String, - value: 'circle' + value: 'circular' }, color: { - type: String + type: String, + value: '#c9c9c9' } } }); diff --git a/packages/loading/index.pcss b/packages/loading/index.pcss index b3ec5f78..ac61a616 100644 --- a/packages/loading/index.pcss +++ b/packages/loading/index.pcss @@ -1,175 +1,66 @@ -$spinners: 12; +@import '../common/var.pcss'; -.loading.inline { +.van-loading { + z-index: 0; + font-size: 0; + line-height: 0; position: relative; - margin: 15px; - text-align: center; - display: flex; - justify-content: center; - - & .circle { - display: inline-block; - height: 24px; - width: 24px; - border-radius: 100%; - border: 3px solid transparent; - box-sizing: border-box; - border-color: rgba(0, 0, 0, .1); - border-top-color: rgba(255, 255, 255, .7); - animation: loading 1s linear infinite; - } - &.black .circle { - border-color: #c9c9c9; - border-top-color: #666; - } + display: inline-block; + vertical-align: middle; - & .circular { - display: inline-block; - height: 24px; - width: 24px; - animation: loading 2s linear infinite; - - &::after { - content: ''; - display: block; - width: 100%; - height: 100%; - border-radius: 100%; - border: 3px solid transparent; - box-sizing: border-box; - animation: circular 2s ease infinite; - } - } - - & .spinner { - width: 30px; - height: 30px; - display: inline-block; + &__spinner { + z-index: -1; + width: 100%; + height: 100%; position: relative; - animation: loading 1s linear infinite; - animation-timing-function: steps(12); - & view { - width: 100%; - height: 100%; - position: absolute; - text-align: center; - top: 0; - left: 0; + display: inline-block; + box-sizing: border-box; + animation: van-rotate 0.8s linear infinite; - &::after { - content: ''; - background: #fff; - height: 25%; - display: block; - width: 2px; - border-radius: 2px; - margin: 0 auto; - } - - @for $i from 1 to $spinners { - &:nth-child($i) { - transform: rotate(calc($i * 30)deg); - opacity: calc(1 / ($spinners + 2) * ($spinners - $i)); - } - } + &--spinner { + animation-timing-function: steps(12); } - } - &.black .spinner view::after { - content: ''; - background: #c9c9c9; - height: 25%; - display: block; - width: 2px; - border-radius: 2px; - margin: 0 auto; - } -} -.loading.block { - & .dot-spinner { - margin: 15px 15px; - overflow: hidden; - - & view { - width: 8px; - height: 8px; - border-radius: 8px; - background: #fff; - display: inline-block; - margin-left: 3px; - position: relative; - left: 0; - - animation: dot-spinner 2s ease infinite; - @for $i from 1 to 6 { - &:nth-child($i) { - animation-delay: calc((6 - $i)/10)s; - } - } - @for $i from 6 to $spinners { - &:nth-child($i) { - display: none; - } - } + &--circular { + border: 1px solid; + border-radius: 100%; + border-color: currentColor; + border-top-color: transparent; } } - &.black .dot-spinner view { - background: #c9c9c9; + &__dot { + top: 0; + left: 0; + width: 100%; + height: 100%; + position: absolute; + + &::before { + width: 2px; + height: 25%; + content: ' '; + display: block; + margin: 0 auto; + border-radius: 40%; + background-color: currentColor; + } } } - -@keyframes dot-spinner { - 40% { - left: calc(50% - 15px); +@keyframes van-rotate { + from { + transform: rotate(0deg); } - 60% { - left: calc(50% - 15px); - } - - 100% { - left: 100%; + to { + transform: rotate(360deg); } } -@keyframes circular { - 0% { - border-color: #fff; - } - 12% { - border-top-color: transparent; - } - 25% { - border-right-color: transparent; - } - 37% { - border-bottom-color: transparent; - } - 50% { - border-left-color: transparent; - } - 64% { - border-top-color: #fff - } - 75% { - border-right-color: #fff; - } - 87.5% { - border-bottom-color: #fff; - } - 100% { - border-color: #fff; - } -} - -@keyframes loading { - 0% { - transform: rotate(0deg) - } - - 100% { - transform: rotate(360deg) +@for $i from 1 to 12 { + .van-loading__dot:nth-of-type($i) { + opacity: calc(1 - (0.75 / 12) * ($i - 1)); + transform: rotate(calc($i * 30deg)); } } diff --git a/packages/loading/index.wxml b/packages/loading/index.wxml index 641501ff..0ee145fc 100644 --- a/packages/loading/index.wxml +++ b/packages/loading/index.wxml @@ -1,18 +1,16 @@ - - - - - - - - - - - - - - - - + + + - \ No newline at end of file +