uniapp 自定义 picker
前言
我们在开发的过程中经常会遇到现有插件无法满足需求的情况,毕竟不是组件库不能满足项目所有需求,这时就需要我们自己去构建组件。
写这篇博文也是记录我平时开发的,以后可能会用得到的东西。希望大家看到本博文也能得到一些启发,我也就功德无量了。
正文
话不多说直接上代码
Dom
<view :style="{position: isShow?'fixed':''}">
<view class="anyiPicker" :animation="animationData">
<view class="anyiPicker_btn">
<text @click.stop="close">取消</text>
<text @click.stop="confirmFun">确定</text>
</view>
<view class="anyiPicker_content">
<block v-for="(al,ald) in addressList" :key="ald">
<text id="confirmText" :data-address="al">{{ al.name }}</text>
</block>
</view>
</view>
<view class="cover" v-if="isShow" @click.stop="close"></view>
</view>
JS
data(){
return{
animationData: {},
systemInfo: uni.getSystemInfoSync(),
isShow: false,
addressList:[
{name: "零阳镇"},
{name: "待发送镇"},
{name: "收到镇"},
{name: "娃儿镇"},
{name: "查询镇"},
{name: "和聚汇镇"},
{name: "热镇"},
{name: "问问镇"},
{name: "不能镇"},
{name: "以oui镇"},
{name: "毒贩夫妇镇"},
{name: "冲冲冲镇"},
{name: "问问多少镇"},
],
}
}
/**
* 方法
* */
onShow() {
let animation = uni.createAnimation({
duration: 500,
timingFunction: 'ease',
})
this.animation = animation;
},
open(){
this.isShow = true
this.animation.translateY(-1090/750 * this.systemInfo.windowWidth).step();
this.animationData = this.animation.export();
},
close(){
this.isShow = false
this.animation.translateY(1090/750 * this.systemInfo.windowWidth).step();
this.animationData = this.animation.export();
},
confirmFun(e){
const query = uni.createSelectorQuery().in(this)
query.select("#confirmText").boundingClientRect(item=>{
console.log("11111111111", item.dataset.address)
}).exec()
this.close()
},
scss
.cover{
height: 100vh;
width: 100vw;
position: absolute;
z-index: 999;
background: rgba(0,0,0,.5);
}
.anyiPicker{
position: fixed;
background-color: $white;
z-index: 9999;
max-height: 1100rpx;
bottom: -1100rpx;
width: 100%;
padding-bottom: env(safe-area-inset-bottom);
&_btn{
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 30rpx;
font-size: 36rpx;
border-bottom: 1rpx solid $lineColor;
text:first-child{
color: $fontGrey;
}
text:last-child{
color: $green;
}
}
&_content{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: 30rpx;
height: 400rpx;
overflow: scroll;
color: $fontGrey;
}
}
结语
代码如上,如果您是新手估计理解有些困难。
可如果是老鸟 ‘(ˉ▽ ̄~) 切~~!就这~’。
欢迎留言交流!!!
uniapp 自定义 picker的更多相关文章
- uniapp自定义picker城市多级联动组件
uniapp自定义picker城市多级联动组件 支持多端--h5.app.微信小程序.支付宝小程序... 支持自定义配置picker插件级数 支持无限级 注意事项:插件传入数据格式为children树 ...
- uni-app自定义Modal弹窗组件|仿ios、微信弹窗效果
介绍 uniapp自定义弹窗组件uniPop,基于uni-app开发的自定义模态弹窗|msg信息框|alert对话框|confirm确认框|toast弱提示框 支持多种动画效果.多弹窗类型ios/an ...
- 基于uniapp自定义Navbar+Tabbar组件「兼容H5+小程序+App端Nvue」
uni-app跨端自定义navbar+tabbar组件|沉浸式导航条|仿咸鱼凸起标签栏 在跨端项目开发中,uniapp是个不错的框架.采用vue.js和小程序语法结构,使得入门开发更容易.拥有非常丰富 ...
- uniapp自定义顶部搜索框兼容微信小程序
zhuanzai: uniapp自定义顶部搜索框兼容微信小程序 自定义组件 navbarvue (胶囊底部高度 - 状态栏的高度) + (胶囊顶部高度 - 状态栏内的高度) = 导航栏的高度 < ...
- uni-app 自定义扫码界面
二维码扫描,已经成为当下一款应用不可或缺,同时也是用户习以为常的功能了.uni-app 为我们提供了扫码 API ,直接调用即可. 需求场景 在实际开发中,平台提供的默认扫码界面,并不能满足一些自定义 ...
- uni-app自定义导航栏按钮|uniapp仿微信顶部导航条
最近一直在学习uni-app开发,由于uniapp是基于vue.js技术开发的,只要你熟悉vue,基本上很快就能上手了. 在开发中发现uni-app原生导航栏也能实现一些顶部自定义按钮+搜索框,只需在 ...
- uniapp自定义简单省市区联动组件
又双叒一个uniapp组件 最近有一个选择地址的需求,就写了一个省市区联动选择器. 选择日期使用的picker,就照着它简单的整了一个,使用网络请求城市数据,还用到了vuex组件数据共享. 本来自己整 ...
- 03 uniapp自定义导航栏的开发
在我眼里自定义导航分2类: 原生基础上 || 非原生基础上 总结:项目当中能原生就原生,提高性能 区别 uni-app 自带原生导航栏,在pages.json里配置. 原生导航的体验更好,渲染新页面时 ...
- uni-app自定义app端的扫码界面
记得当时是在西班牙有这样的一个需求,需要自定义扫码页面,还需要加上西班牙文,当时是在一个组件里面找到了这样的一个方法,全文大部分使用的app端的Native里面的方法,记录一下,跑路了项目代码要删库了 ...
- 微信小程序 — 自定义picker选择器弹窗内容+textarea穿透bug
微信小程序中定义好的几种picker选择器,不管是日期选择器还是地区选择器,或是其他的都只有定死的样式和内容. 但是大多数开发程序的情况下还是需要自己写样式的,或是内容的. 例如: 代码如下: < ...
随机推荐
- .net core 中 WebApiClientCore的使用
WebApiClient 接口注册与选项 1 配置文件中配置HttpApiOptions选项 配置示例 "IUserApi": { "HttpHost": &q ...
- Velero 系列文章(二):使用 Helm 安装 Velero
概述 本文是通过 Helm 3 来安装 Velero, 只做最基本的安装.并计划将 YAML (只备份 YAML, 不备份 Volume) 备份到腾讯云的 COS(兼容 S3, 所以可以通过 AWS ...
- PHP7.2 装mongodb 遇到的坑,完美解决!
公司要做QA安全测试,组长就丢了一个源码包给我,什么资料都无. 系统是个Laravel框架,源码都是从线上git下来.然后看了本地composer.json 没有生成vendor 第一步安装 comp ...
- 粘包、struct模块、进程并行与并发
目录 粘包现象 struct模块 粘包代码实战 udp协议(了解) 并发编程理论 多道技术 进程理论 进程并行与并发 进程的三状态 粘包现象 1.服务端连续执行三次recv 2.客户端连续执行三次se ...
- formly-form 动态表单
动态表单库 https://github.com/ngx-formly/ngx-formly 安装 ng add @ngx-formly/schematics --ui-theme=ng-zorro- ...
- 微服务系列之服务监控 Prometheus与Grafana
1.为什么需要监控服务 监控服务的所属服务器硬件(如cpu,内存,磁盘I/O等)指标.服务本身的(如gc频率.线程池大小.锁争用情况.请求.响应.自定义业务指标),对于以前的小型单体服务来说,确实 ...
- week_9(异常检测)
Andrew Ng 机器学习笔记 ---By Orangestar Week_9 This week, we will be covering anomaly detection which is w ...
- DevSecOps 需要知道的十大 K8s 安全风险及建议
Kubernetes (K8s)是现代云原生世界中的容器管理平台.它实现了灵活.可扩展地开发.部署和管理微服务.K8s 能够与各种云提供商.容器运行时接口.身份验证提供商和可扩展集成点一起工作.然而 ...
- [数据与分析可视化] D3入门教程3-d3中的数据操作
d3.js入门教程3-d3.js中的数据操作 文章目录 d3.js入门教程3-d3.js中的数据操作 数学操作 对象和数组 过滤Filtering 排序Sorting 映射group 循环loop 重 ...
- [R语言] ggplot2入门笔记2—通用教程ggplot2简介
文章目录 通用教程简介(Introduction To ggplot2) 2 ggplot2入门笔记2-通用教程ggplot2简介 1. 了解ggplot语法(Understanding the gg ...