├── .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 | - 如果对您有帮助,请鼓励支持一下,[![GitHub stars](https://img.shields.io/github/stars/JamyKing/uni-load-refresh?style=falt)](https://github.com/JamyKing/uni-load-refresh)。 77 | 78 | #### Demo 代码示例 79 | 80 | ``` 81 | 99 | 100 | 140 | 141 | 147 | ``` 148 | -------------------------------------------------------------------------------- /components/load-refresh/load-refresh.vue: -------------------------------------------------------------------------------- 1 | 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 | 65 | 66 | 90 | 91 | 97 | ``` 98 | -------------------------------------------------------------------------------- /components/sofar-picker/sofar-picker.vue: -------------------------------------------------------------------------------- 1 | 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 | - 如果对您有帮助,请鼓励支持一下,[![GitHub stars](https://img.shields.io/github/stars/JamyKing/uni-load-refresh?style=falt)](https://github.com/JamyKing/uni-load-refresh)。 63 | 64 | #### Demo 代码示例 65 | 66 | ``` 67 | 81 | 82 | 118 | ``` 119 | -------------------------------------------------------------------------------- /components/structure-cascade/structure-cascade.vue: -------------------------------------------------------------------------------- 1 | 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 | 67 | 68 | 92 | 93 | 99 | ``` 100 | -------------------------------------------------------------------------------- /components/term-picker/term-picker.vue: -------------------------------------------------------------------------------- 1 | 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 | 12 | 13 | 62 | 63 | 85 | -------------------------------------------------------------------------------- /pages/loadRefresh/index.vue: -------------------------------------------------------------------------------- 1 | 68 | 69 | 193 | 194 | 459 | -------------------------------------------------------------------------------- /pages/loadRefresh/tabs.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 163 | 164 | 218 | -------------------------------------------------------------------------------- /pages/sofarPicker/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 36 | 37 | 55 | -------------------------------------------------------------------------------- /pages/structureCascade/index.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 114 | 115 | -------------------------------------------------------------------------------- /pages/termPicker/index.vue: -------------------------------------------------------------------------------- 1 | 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; --------------------------------------------------------------------------------