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选择器,不管是日期选择器还是地区选择器,或是其他的都只有定死的样式和内容. 但是大多数开发程序的情况下还是需要自己写样式的,或是内容的. 例如: 代码如下: < ...
随机推荐
- 在Maven中出现javax.mail中文乱码问题解决记录
学习Java时,看廖雪峰大神文章使用了javax.mail来发送SMTP邮件.在加入中文时,发现收到的邮件里中文都是乱码. 按照一般经验,多半是编码的问题.然而在代码中,会涉及到编码的地方已经全部设置 ...
- 图解B树及C#实现(1)
目录 前言 索引原理 局部性(Locality) 数据的局部性 内存存储和磁盘存储 磁盘存储适合的索引结构 B树简介 定义 B树中数据的有序性 用C#定义数据结构 插入数据的过程 分裂:新节点诞生的唯 ...
- day37-文件上传和下载
文件上传下载 1.基本介绍 在Web应用中,文件上传和下载是非常常见的功能 如果是传输大文件一般用专门的工具或者插件 文件上传和下载需要用到两个包:commons-fileupload.jar和com ...
- C/S UDP通信实践踩坑记录与对于ICMP的进一步认识
背景 最近有个业务场景需要服务端(简称S)与客户端(简称C)设计一套基于UDP的通信协议--要求尽可能快的前提下可容忍一定丢包率,得以比较深入地学习和了解UDP通信和实践,在开发调试期间先后碰到了C端 ...
- day01-ES6新特性
ES6新特性 1.ES6是什么? DCMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,2015年6月发布 ES6设计目标:达到JavaScript语言可以用来编写复杂 ...
- 51NOD5213A 【提高组/高分-省选预科 第一场【M】】序列
小 Y 酷爱的接龙游戏正是这样.玩腻了成语接龙之后,小 Y 决定尝试无平方因子二元合数接龙,规则如下: 现有 \(n\) 个不超过 \(K\) 的合数,每个合数 \(a\) 均可表示为 \(a=pq( ...
- vue小技巧-vue引入样式、修改难以修改的子组件内部标签样式
- VUE Angular通用动态列表组件-亦可为自动轮播组件-02-根据数据量自动横向滚动,鼠标划入停止滚动
本文为横向轮播,纵向轮播/动态列表组件请戳---- 代码是angular的,稍微改改就可以放入Vue项目里,差别不大哟 以下代码可以根据实际情况自行调整 父组件html <app-scroll- ...
- 特定领域知识图谱融合方案:文本匹配算法(Simnet、Simcse、Diffcse)
特定领域知识图谱融合方案:文本匹配算法(Simnet.Simcse.Diffcse) 本项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5 ...
- Java 进阶P-11+P-12
文本流 在流上建立文本处理 PrintWriter pw = new PrintWriter()( new BufferedWriter( new Out put StreamWriter( new ...