├── .gitignore
├── .hbuilderx
└── launch.json
├── App.vue
├── README.md
├── components
├── load-refresh
│ ├── README.md
│ └── load-refresh.vue
├── sofar-picker
│ ├── README.md
│ └── sofar-picker.vue
├── structure-cascade
│ ├── README.md
│ └── structure-cascade.vue
└── term-picker
│ ├── README.md
│ └── term-picker.vue
├── main.js
├── manifest.json
├── pages.json
├── pages
├── guide
│ └── index.vue
├── loadRefresh
│ ├── index.vue
│ └── tabs.vue
├── sofarPicker
│ └── index.vue
├── structureCascade
│ └── index.vue
└── termPicker
│ └── index.vue
├── static
├── head.jpg
├── icons
│ ├── arrow-right.png
│ ├── selected.png
│ └── structure.png
├── logo.png
├── pic1.jpg
├── pic2.jpg
├── pic3.jpg
├── pic4.jpg
├── pic5.png
├── pic6.jpg
└── shutter.png
└── uni.scss
/.gitignore:
--------------------------------------------------------------------------------
1 | unpackage/
--------------------------------------------------------------------------------
/.hbuilderx/launch.json:
--------------------------------------------------------------------------------
1 | { // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
2 | // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
3 | "version": "0.0",
4 | "configurations": [{
5 | "default": {
6 | "launchtype": "remote"
7 | },
8 | "h5": {
9 | "launchtype": "remote"
10 | },
11 | "mp-weixin": {
12 | "launchtype": "remote"
13 | },
14 | "type": "uniCloud"
15 | }]
16 | }
17 |
--------------------------------------------------------------------------------
/App.vue:
--------------------------------------------------------------------------------
1 |
14 |
15 |
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # uni-app 组件
2 |
3 | 在项目开发过程中,根据实际的功能需求所开发的一些前端组件,总结一下分享出来,希望对大家有所帮助!
4 |
5 | ## 组件目录
6 |
7 | - [loadRefresh](/components/load-refresh) 上滑加载下拉刷新
8 | - [sofarPicker](/components/sofar-picker) 年-月 范围组件
9 | - [termPicker](/components/term-picker) 年-月-日 范围组件
10 | - [structure-cascade](/components/structure-cascade) 多级树形选择
11 |
12 | ## 项目运行
13 |
14 | - clone项目到本地
15 |
16 | ```sh
17 | git clone git@github.com:JamyKing/uni-load-refresh.git
18 | ```
19 |
20 | - 使用HBuilderX导入项目
21 | - 运行到浏览器(H5端)、微信小程序端、App端等
22 |
--------------------------------------------------------------------------------
/components/load-refresh/README.md:
--------------------------------------------------------------------------------
1 | # load-refresh
2 |
3 | - 页面局部下拉刷新、上划加载更多、回弹效果等。
4 | - 可以在App端、微信小程序端、H5端完美运行。
5 | - 刷新动画使用了[Epic Spinners](https://epic-spinners.epicmax.co/),也可以根据情况自定义。
6 | - 组件的状态文字提醒,也可根据自身需求进行修改。
7 | - 最新的项目示例代码可在[GitHub](https://github.com/JamyKing/uni-load-refresh)获取。
8 |
9 | ## 使用方法
10 |
11 | #### 在 `script` 中引用组件
12 |
13 | ```
14 | import loadRefresh from '@/components/load-refresh/load-refresh.vue'
15 | export default {
16 | components: {
17 | loadRefresh
18 | }
19 | }
20 | ```
21 |
22 | #### 在 `template` 中使用组件
23 |
24 | ```
25 |
36 |
37 |
38 |
39 |
40 | ```
41 |
42 | #### Props 参数说明
43 |
44 | | 参数名 | 类型 | 默认值 | 说明 |
45 | | ------ | ------ | ------ | ------ |
46 | | isRefresh | Boolean | true | 是否开启手势下拉刷新功能(true: 开启; false: 关闭) |
47 | | refreshType | String | hollowDots | 刷新动画,可选类型参数(hollowDots, halfCircle, swappingSquares) |
48 | | color | String | #F3F5F5 | 自定义动画颜色 |
49 | | fixedHeight | String | 0 | 固定高度(优先级:fixedHeight > heightReduce;适用于确定组件容器高度的情况下;单位:rpx) |
50 | | heightReduce | String | 0 | 裁剪高度(在整个屏幕高度中除该组件外,其余部分占据的高度;适用于不确定组件容器高度,欲撑满屏幕;单位:rpx) |
51 | | backgroundCover | String | white | 数据列表块背景色 |
52 | | currentPage | Number | 0 | 当前页码 |
53 | | totalPages | Number | 0 | 总页码 |
54 |
55 | #### Events 事件说明
56 |
57 | | 事件名 | 说明 | 返回值 |
58 | | ------ | ------ | ------ |
59 | | @loadMore | 上滑加载更多 | |
60 | | @refresh | 下拉列表刷新 | |
61 |
62 | #### Methods 组件内方法
63 |
64 | | 方法名 | 说明 | 使用 |
65 | | ------ | ------ | ------ |
66 | | completed() | 刷新、加载完成(下拉刷新、加载更多 数据更新成功后必须调用) | this.$refs.loadRefresh.completed() |
67 | | runRefresh() | 代码内触发下拉刷新 | this.$refs.loadRefresh.runRefresh() |
68 |
69 | #### Notes 注意事项
70 |
71 | - 注意将数据集放在插槽`slot="content-list"`中。
72 | - 加载更多`loadMore()`过程中,建议在请求时使用`currentPage + 1`形式,成功后的**回调函数中**去更新`currentPage`的值。
73 | - **`@loadMore`、`@refresh`触发后,在数据请求成功后,必须调用`completed()`去结束动画。**
74 | - 如有需要使用组件实现`tabsSwiper`**全屏选项卡**功能,可参考[tabsSwiper](https://github.com/JamyKing/uni-load-refresh/blob/master/pages/tabs/tabs.vue)。
75 | - 使用出现问题可参考[常见问题汇总](https://github.com/JamyKing/uni-load-refresh/issues/2)
76 | - 如果对您有帮助,请鼓励支持一下,[](https://github.com/JamyKing/uni-load-refresh)。
77 |
78 | #### Demo 代码示例
79 |
80 | ```
81 |
82 |
83 |
90 |
91 |
92 |
93 | {{item}}
94 |
95 |
96 |
97 |
98 |
99 |
100 |
140 |
141 |
147 | ```
148 |
--------------------------------------------------------------------------------
/components/load-refresh/load-refresh.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{moving ? '↑ 松开释放' : '↓ 下拉刷新'}}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 | {{loadText}}
35 |
36 |
37 |
38 |
39 |
40 |
186 |
187 |
363 |
--------------------------------------------------------------------------------
/components/sofar-picker/README.md:
--------------------------------------------------------------------------------
1 | # sofar-picker
2 |
3 | - 日期范围选择,颗粒度为`年-月`,支持`至今`选项。
4 | - 根据实际开发需求完成,分享出来希望有帮助。
5 | - 最新的项目示例代码可在[GitHub](https://github.com/JamyKing/uni-load-refresh)获取。
6 |
7 | ## 使用方法
8 |
9 | #### 在 `script` 中引用组件
10 |
11 | ```
12 | import sofarPicker from '@/components/sofar-picker/sofar-picker.vue'
13 | export default {
14 | components: {
15 | sofarPicker
16 | }
17 | }
18 | ```
19 |
20 | #### 在 `template` 中使用组件
21 |
22 | ```
23 |
32 |
33 | ```
34 |
35 | #### Props 参数说明
36 |
37 | | 参数名 | 类型 | 默认值 | 说明 |
38 | | ------ | ------ | ------ | ------ |
39 | | visable | Boolean | false | 日期选择控件的显示/隐藏,注意使用`.sync`修饰符(true: 显示; false: 隐藏) |
40 | | defaultDate | Array | [] | 默认预设值 |
41 | | minYear | Number | 1990 | 最小年份 |
42 | | separator | String | `.` | 时间格式分隔符(例如:`-`、`/`) |
43 | | themeColor | String | #10BE9D | 选择框操作栏部分字体颜色 |
44 | | startText | String | 开始时间 | 日期范围起始处文本 |
45 | | endText | String | 结束时间 | 日期范围结束处文本 |
46 |
47 | #### Events 事件说明
48 |
49 | | 事件名 | 说明 | 返回值 |
50 | | ------ | ------ | ------ |
51 | | @confirm | 点击确定按钮,返回当前选择的值 | `Array`数组类型 |
52 |
53 | #### Demo 代码示例
54 |
55 | ```
56 |
57 |
58 |
62 |
63 |
64 |
65 |
66 |
90 |
91 |
97 | ```
98 |
--------------------------------------------------------------------------------
/components/sofar-picker/sofar-picker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{startText}}
8 | {{resultDate[0]}}
9 |
10 | 至
11 |
12 | {{endText}}
13 | {{resultDate[1]}}
14 |
15 |
16 | 确定
17 |
18 |
20 |
21 |
22 | {{index>0||touchIndex<1 ? item+'年' : item}}
23 |
24 |
25 |
26 | {{item}}月
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
170 |
171 |
233 |
--------------------------------------------------------------------------------
/components/structure-cascade/README.md:
--------------------------------------------------------------------------------
1 | # structure-cascade
2 |
3 | - 树形结构数据选择组件。
4 | - 适用于一些多级部门、组织架构类的数据选择。
5 | - 根据实际开发需求整理出来的,有需要的可以进行二次开发。
6 | - 最新的项目示例代码可在[GitHub](https://github.com/JamyKing/uni-load-refresh)获取。
7 |
8 | ## 使用方法
9 |
10 | #### 在 `script` 中引用组件
11 |
12 | ```
13 | import structureCascade from '@/components/structure-cascade/structure-cascade.vue'
14 | export default {
15 | components: {
16 | structureCascade
17 | }
18 | }
19 | ```
20 |
21 | #### 在 `template` 中使用组件
22 |
23 | ```
24 |
33 |
34 | ```
35 |
36 | #### Props 参数说明
37 |
38 | | 参数名 | 类型 | 默认值 | 说明 |
39 | | ------ | ------ | ------ | ------ |
40 | | value / v-model | Array | [] | 绑定值 |
41 | | topTitle | String | 组织架构 | 头部顶级索引名称 |
42 | | treeData | Array | [] | 树形结构数据(参考如下Demo) |
43 | | isRadio | Boolean | true | 是否为单选 |
44 | | selectMax | Number | 0 | 多选时最大选择数,仅在`isRadio`为`false`时生效(0: 不限) |
45 | | valueField | String | id | 自定义`value`属性名 |
46 | | labelField | String | name | 自定义`label`属性名 |
47 | | checkIcon | String | '' | 数据勾选时的icon展示 |
48 | | moreIcon | String | '' | 当前节点存在字节点时的icon展示 |
49 |
50 | #### Methods 组件内方法
51 |
52 | | 方法名 | 说明 | 参数 | 使用 |
53 | | ------ | ------ | ------ | ------ |
54 | | getFilterData(keyword, treeData) | 根据关键词模糊查询,返回一维数组格式的节点集 | `keyword`:关键词,对应各节点的`labelField`字段。 `treeData`:树形结构数据(不传则默认为`treeData`) | this.$refs.strCascade.getFilterData('一级') |
55 |
56 | #### Notes 注意事项
57 |
58 | - 该组件尚不支持父子节点联动选中。
59 | - 图片路径请使用`require`,例如:`:checkIcon="require('@/static/icons/icon_gou.png')"`。
60 | - 设置默认值选中时,需要`valueField`和`labelField`两个属性参数。
61 | - 树形结构数据中子节点需要有`parentId`属性参数,有默认值选中时回显需要使用到。
62 | - 如果对您有帮助,请鼓励支持一下,[](https://github.com/JamyKing/uni-load-refresh)。
63 |
64 | #### Demo 代码示例
65 |
66 | ```
67 |
68 |
69 |
78 |
79 |
80 |
81 |
82 |
118 | ```
119 |
--------------------------------------------------------------------------------
/components/structure-cascade/structure-cascade.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
14 |
15 |
17 |
18 |
19 |
20 |
21 |
23 | {{ item[labelField] }}
24 |
25 | >
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
291 |
292 |
--------------------------------------------------------------------------------
/components/term-picker/README.md:
--------------------------------------------------------------------------------
1 | # term-picker
2 |
3 | - 日期范围选择,颗粒度为`年-月-日`。
4 | - 根据实际开发需求完成,分享出来希望有帮助。
5 | - 最新的项目示例代码可在[GitHub](https://github.com/JamyKing/uni-load-refresh)获取。
6 |
7 | ## 使用方法
8 |
9 | #### 在 `script` 中引用组件
10 |
11 | ```
12 | import termPicker from '@/components/term-picker/term-picker.vue'
13 | export default {
14 | components: {
15 | termPicker
16 | }
17 | }
18 | ```
19 |
20 | #### 在 `template` 中使用组件
21 |
22 | ```
23 |
33 |
34 | ```
35 |
36 | #### Props 参数说明
37 |
38 | | 参数名 | 类型 | 默认值 | 说明 |
39 | | ------ | ------ | ------ | ------ |
40 | | visable | Boolean | false | 日期选择控件的显示/隐藏,注意使用`.sync`修饰符(true: 显示; false: 隐藏) |
41 | | defaultDate | Array | [] | 默认预设值(比如:`['2021-06-01', '2021-07-01']`) |
42 | | minYear | Number | 1990 | 最小年份 |
43 | | timeLimit | Boolean | false | 日期区间限制(true: 限制结束日期`<=`当前日期; false: 不限制) |
44 | | deferYear | Number | 0 | 年份选项顺延数,仅当`timeLimit`为`false`时生效(举个栗子: `deferYear = 1`, 则年份选项的最大值为: `当前年份 + deferYear`) |
45 | | themeColor | String | #10BE9D | 选择框操作栏部分字体颜色 |
46 | | startText | String | 开始时间 | 日期范围起始处文本 |
47 | | endText | String | 结束时间 | 日期范围结束处文本 |
48 |
49 | #### Events 事件说明
50 |
51 | | 事件名 | 说明 | 返回值 |
52 | | ------ | ------ | ------ |
53 | | @confirm | 点击确定按钮,返回当前选择的值 | `Array`数组类型 |
54 |
55 | #### Demo 代码示例
56 |
57 | ```
58 |
59 |
60 |
64 |
65 |
66 |
67 |
68 |
92 |
93 |
99 | ```
100 |
--------------------------------------------------------------------------------
/components/term-picker/term-picker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{startText}}
8 | {{resultDate[0]}}
9 |
10 | 至
11 |
12 | {{endText}}
13 | {{resultDate[1]}}
14 |
15 |
16 | 确定
17 |
18 |
20 |
21 | {{item}}年
22 |
23 |
24 | {{ item }}月
25 |
26 |
27 | {{ item }}日
28 |
29 |
30 |
31 |
32 |
33 |
200 |
201 |
263 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App'
3 |
4 | const request = (params = {}) => {
5 | return new Promise((resolve, reject) => {
6 | uni.showLoading({
7 | title: params.loadText || 'Loading',
8 | mask: true
9 | })
10 | uni.request({
11 | url: params.url,
12 | method: params.method,
13 | data: {
14 | ...params.data
15 | },
16 | header: {
17 | 'Content-Type': 'application/json; charset=UTF-8'
18 | },
19 | timeout: 5000,
20 | success: (res) => {
21 | resolve(res.data)
22 | },
23 | fail: (err) => {
24 | reject(err)
25 | },
26 | complete: () => {
27 | uni.hideLoading()
28 | }
29 | })
30 | })
31 | }
32 |
33 | Vue.config.productionTip = false
34 | Vue.prototype.$api = {
35 | request
36 | };
37 |
38 | App.mpType = 'app'
39 |
40 | const app = new Vue({
41 | ...App
42 | })
43 | app.$mount()
44 |
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name" : "uni-load-refresh",
3 | "appid" : "__UNI__B809977",
4 | "description" : "",
5 | "versionName" : "2.1.1",
6 | "versionCode" : "211",
7 | "transformPx" : false,
8 | /* 5+App特有相关 */
9 | "app-plus" : {
10 | "usingComponents" : true,
11 | "nvueCompiler" : "uni-app",
12 | "compilerVersion" : 3,
13 | "splashscreen" : {
14 | "alwaysShowBeforeRender" : true,
15 | "waiting" : true,
16 | "autoclose" : true,
17 | "delay" : 0
18 | },
19 | /* 模块配置 */
20 | "modules" : {},
21 | /* 应用发布信息 */
22 | "distribute" : {
23 | /* android打包配置 */
24 | "android" : {
25 | "permissions" : [
26 | "",
27 | "",
28 | "",
29 | "",
30 | "",
31 | "",
32 | "",
33 | "",
34 | "",
35 | "",
36 | "",
37 | "",
38 | "",
39 | "",
40 | "",
41 | "",
42 | "",
43 | "",
44 | "",
45 | "",
46 | "",
47 | ""
48 | ]
49 | },
50 | /* ios打包配置 */
51 | "ios" : {},
52 | /* SDK配置 */
53 | "sdkConfigs" : {}
54 | }
55 | },
56 | /* 快应用特有相关 */
57 | "quickapp" : {},
58 | /* 小程序特有相关 */
59 | "mp-weixin" : {
60 | "appid" : "",
61 | "setting" : {
62 | "urlCheck" : false
63 | },
64 | "usingComponents" : true
65 | },
66 | "mp-alipay" : {
67 | "usingComponents" : true
68 | },
69 | "mp-baidu" : {
70 | "usingComponents" : true
71 | },
72 | "mp-toutiao" : {
73 | "usingComponents" : true
74 | },
75 | "uniStatistics" : {
76 | "enable" : false
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/pages.json:
--------------------------------------------------------------------------------
1 | {
2 | "pages": [{
3 | "path": "pages/guide/index",
4 | "style": {
5 | "navigationBarTitleText": "导航"
6 | }
7 | },
8 | {
9 | "path": "pages/loadRefresh/index",
10 | "style": {
11 | "navigationBarTitleText": "load-refresh 组件"
12 | }
13 | },
14 | {
15 | "path": "pages/loadRefresh/tabs",
16 | "style": {
17 | "navigationBarTitleText": "tabs+swiper 全屏选项卡"
18 | }
19 | },
20 | {
21 | "path": "pages/sofarPicker/index",
22 | "style": {
23 | "navigationBarTitleText": "sofar-picker 组件"
24 | }
25 | },
26 | {
27 | "path": "pages/termPicker/index",
28 | "style": {
29 | "navigationBarTitleText": "term-picker 组件"
30 | }
31 | },
32 | {
33 | "path": "pages/structureCascade/index",
34 | "style": {
35 | "navigationBarTitleText": "多级树形选择 组件"
36 | }
37 | }
38 | ],
39 | "globalStyle": {
40 | "navigationBarTextStyle": "black",
41 | "navigationBarTitleText": "load-refresh",
42 | "navigationBarBackgroundColor": "#FFFFFF",
43 | "backgroundColor": "#F8F8F8"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/pages/guide/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
62 |
63 |
85 |
--------------------------------------------------------------------------------
/pages/loadRefresh/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | {{item.blogDesc}}
17 |
18 |
19 | {{item.createTime}}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | {{item.blogDesc}}
30 |
31 |
32 |
33 | {{item.createTime}}
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | {{item.createTime}}
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | {{item.blogDesc}}
57 |
58 |
59 | {{item.createTime}}
60 |
61 |
62 |
63 |
64 |
65 | 刷新
66 |
67 |
68 |
69 |
193 |
194 |
459 |
--------------------------------------------------------------------------------
/pages/loadRefresh/tabs.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{tab.name}}
8 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 |
20 | {{item.text}}
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
163 |
164 |
218 |
--------------------------------------------------------------------------------
/pages/sofarPicker/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
36 |
37 |
55 |
--------------------------------------------------------------------------------
/pages/structureCascade/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
114 |
115 |
--------------------------------------------------------------------------------
/pages/termPicker/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
37 |
38 |
56 |
--------------------------------------------------------------------------------
/static/head.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/head.jpg
--------------------------------------------------------------------------------
/static/icons/arrow-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/icons/arrow-right.png
--------------------------------------------------------------------------------
/static/icons/selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/icons/selected.png
--------------------------------------------------------------------------------
/static/icons/structure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/icons/structure.png
--------------------------------------------------------------------------------
/static/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/logo.png
--------------------------------------------------------------------------------
/static/pic1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/pic1.jpg
--------------------------------------------------------------------------------
/static/pic2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/pic2.jpg
--------------------------------------------------------------------------------
/static/pic3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/pic3.jpg
--------------------------------------------------------------------------------
/static/pic4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/pic4.jpg
--------------------------------------------------------------------------------
/static/pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/pic5.png
--------------------------------------------------------------------------------
/static/pic6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/pic6.jpg
--------------------------------------------------------------------------------
/static/shutter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JamyKing/uni-load-refresh/7e6dc4fcfd5c2ce3321b7af8bc05c8a38bbc0b48/static/shutter.png
--------------------------------------------------------------------------------
/uni.scss:
--------------------------------------------------------------------------------
1 | /* 颜色变量 */
2 |
3 | /* 行为相关颜色 */
4 | $uni-color-primary: #007aff;
5 | $uni-color-success: #4cd964;
6 | $uni-color-warning: #f0ad4e;
7 | $uni-color-error: #dd524d;
8 |
9 | /* 文字基本颜色 */
10 | $uni-text-color:#333;//基本色
11 | $uni-text-color-inverse:#fff;//反色
12 | $uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
13 | $uni-text-color-placeholder: #808080;
14 | $uni-text-color-disable:#c0c0c0;
15 |
16 | /* 背景颜色 */
17 | $uni-bg-color:#ffffff;
18 | $uni-bg-color-grey:#f8f8f8;
19 | $uni-bg-color-hover:#f1f1f1;//点击状态颜色
20 | $uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
21 |
22 | /* 边框颜色 */
23 | $uni-border-color:#c8c7cc;
24 |
25 | /* 尺寸变量 */
26 |
27 | /* 文字尺寸 */
28 | $uni-font-size-sm:24rpx;
29 | $uni-font-size-base:28rpx;
30 | $uni-font-size-lg:32rpx;
31 |
32 | /* 图片尺寸 */
33 | $uni-img-size-sm:40rpx;
34 | $uni-img-size-base:52rpx;
35 | $uni-img-size-lg:80rpx;
36 |
37 | /* Border Radius */
38 | $uni-border-radius-sm: 4rpx;
39 | $uni-border-radius-base: 6rpx;
40 | $uni-border-radius-lg: 12rpx;
41 | $uni-border-radius-circle: 50%;
42 |
43 | /* 水平间距 */
44 | $uni-spacing-row-sm: 10px;
45 | $uni-spacing-row-base: 20rpx;
46 | $uni-spacing-row-lg: 30rpx;
47 |
48 | /* 垂直间距 */
49 | $uni-spacing-col-sm: 8rpx;
50 | $uni-spacing-col-base: 16rpx;
51 | $uni-spacing-col-lg: 24rpx;
52 |
53 | /* 透明度 */
54 | $uni-opacity-disabled: 0.3; // 组件禁用态的透明度
55 |
56 | /* 文章场景相关 */
57 | $uni-color-title: #2C405A; // 文章标题颜色
58 | $uni-font-size-title:40rpx;
59 | $uni-color-subtitle: #555555; // 二级标题颜色
60 | $uni-font-size-subtitle:36rpx;
61 | $uni-color-paragraph: #3F536E; // 文章段落颜色
62 | $uni-font-size-paragraph:30rpx;
--------------------------------------------------------------------------------