前言

我们在开发的过程中经常会遇到现有插件无法满足需求的情况,毕竟不是组件库不能满足项目所有需求,这时就需要我们自己去构建组件。

写这篇博文也是记录我平时开发的,以后可能会用得到的东西。希望大家看到本博文也能得到一些启发,我也就功德无量了。

正文

话不多说直接上代码

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的更多相关文章

  1. uniapp自定义picker城市多级联动组件

    uniapp自定义picker城市多级联动组件 支持多端--h5.app.微信小程序.支付宝小程序... 支持自定义配置picker插件级数 支持无限级 注意事项:插件传入数据格式为children树 ...

  2. uni-app自定义Modal弹窗组件|仿ios、微信弹窗效果

    介绍 uniapp自定义弹窗组件uniPop,基于uni-app开发的自定义模态弹窗|msg信息框|alert对话框|confirm确认框|toast弱提示框 支持多种动画效果.多弹窗类型ios/an ...

  3. 基于uniapp自定义Navbar+Tabbar组件「兼容H5+小程序+App端Nvue」

    uni-app跨端自定义navbar+tabbar组件|沉浸式导航条|仿咸鱼凸起标签栏 在跨端项目开发中,uniapp是个不错的框架.采用vue.js和小程序语法结构,使得入门开发更容易.拥有非常丰富 ...

  4. uniapp自定义顶部搜索框兼容微信小程序

    zhuanzai:  uniapp自定义顶部搜索框兼容微信小程序 自定义组件 navbarvue (胶囊底部高度 - 状态栏的高度) + (胶囊顶部高度 - 状态栏内的高度) = 导航栏的高度 < ...

  5. uni-app 自定义扫码界面

    二维码扫描,已经成为当下一款应用不可或缺,同时也是用户习以为常的功能了.uni-app 为我们提供了扫码 API ,直接调用即可. 需求场景 在实际开发中,平台提供的默认扫码界面,并不能满足一些自定义 ...

  6. uni-app自定义导航栏按钮|uniapp仿微信顶部导航条

    最近一直在学习uni-app开发,由于uniapp是基于vue.js技术开发的,只要你熟悉vue,基本上很快就能上手了. 在开发中发现uni-app原生导航栏也能实现一些顶部自定义按钮+搜索框,只需在 ...

  7. uniapp自定义简单省市区联动组件

    又双叒一个uniapp组件 最近有一个选择地址的需求,就写了一个省市区联动选择器. 选择日期使用的picker,就照着它简单的整了一个,使用网络请求城市数据,还用到了vuex组件数据共享. 本来自己整 ...

  8. 03 uniapp自定义导航栏的开发

    在我眼里自定义导航分2类: 原生基础上 || 非原生基础上 总结:项目当中能原生就原生,提高性能 区别 uni-app 自带原生导航栏,在pages.json里配置. 原生导航的体验更好,渲染新页面时 ...

  9. uni-app自定义app端的扫码界面

    记得当时是在西班牙有这样的一个需求,需要自定义扫码页面,还需要加上西班牙文,当时是在一个组件里面找到了这样的一个方法,全文大部分使用的app端的Native里面的方法,记录一下,跑路了项目代码要删库了 ...

  10. 微信小程序 — 自定义picker选择器弹窗内容+textarea穿透bug

    微信小程序中定义好的几种picker选择器,不管是日期选择器还是地区选择器,或是其他的都只有定死的样式和内容. 但是大多数开发程序的情况下还是需要自己写样式的,或是内容的. 例如: 代码如下: < ...

随机推荐

  1. 【Java】【数据库】索引为何使查询变得更快?--B+树

    排序数据的二分查找 二分查找的时间复杂度是\(O(log_2n)\),明显快于暴力搜索. 索引 建立索引的数据,就是通过事先排好顺序,在查找时可以应用二分查找来提高查询效率. 所以索引应该尽可能建立在 ...

  2. PowerUsageSummary.java源码分析

    在在线网站http://androidxref.com/上对Android版本6.0.1_r10源码进行分析 官方手机的应用耗电排行具体实现位置在:/packages/apps/Settings/sr ...

  3. [cocos2d-x]关于Action

    Action的分类 第一种:FiniteTimeAction类:有限时间的动作类 第二种:Follow类:节点跟随另一种节点的类 第三种:Speed类:节点执行速度类 第一种有限时间的动作类又分为瞬时 ...

  4. 图文并茂--微信小程序,获取用户地理位置信息,并调用腾讯地图API来获取用户具体位置

    今天开始搞这个东西,下面是详细的记录 先看一下效果啦 1.小程序代码先获取用户基础位置信息 js data: { myLocation: 'GET LOCATION', }, openMap() { ...

  5. Stream流的特点_只能用一次-Stream流中的常用方法_map

    Stream流的特点_只能用一次 Stream流属于管道流,只能被消费(使用)一次 第一个stream流调用完毕方法,数据就会流转到下一个stream上 而这时第一个stream流已经使用完毕,就会关 ...

  6. Unity之GPS定位(高德解析)

    Unity之GPS定位 Unity之GPS定位(高德解析) 前言 开篇 Unity版本及使用插件 正题 创建场景 写脚本 把脚本挂载到场景中 打包发布场景 安装真机并且测试 代码中的==Key==怎么 ...

  7. vulnhub靶场之DIGITALWORLD.LOCAL: VENGEANCE

    准备: 攻击机:虚拟机kali.本机win10. 靶机:digitalworld.local: VENGEANCE,下载地址:https://download.vulnhub.com/digitalw ...

  8. Django框架之drf:5、反序列化器校验部分源码分析、断言、drf之请求与响应、视图组件介绍及两个视图基类、代码部分实战

    Django框架之drf 目录 Django框架之drf 一.反序列化类校验部分源码解析 二.断言 三.drf之请求 1.Request能够解析的前端传入编码格式 2.Request类中的属性和方法 ...

  9. 【分析笔记】全志方案通过命令行操作 GPIO 口(带源码分析)

    前言说明 在项目开发初期,很经常会需要临时操作某个GPIO来验证某些功能,可以通过编写一个简单的驱动程序来操作,但更方便的是可以通过命令行直接操作 GPIO ,这样不需要经过编写代码.编译驱动.推入文 ...

  10. MRS_MounRiver安装与驱动相关问题汇总

    解决问题如下: MounRiver下载与安装 若MounRiver某些功能不全或插件没安装 MounRiver下载与安装 MRS官网下载:http://www.mounriver.com/downlo ...