微信小程序picker-view自定义日期时间等

picker-view 可以自定义地区时间什么的,其实主要是可以修改样式啦。

<view class=‘login-user border-none‘ bindtap=‘data_click‘>
      <view class=‘user-t‘>生日</view>
      <view class=‘user-i‘>
        <input placeholder="请输入生日" disabled value=‘{{birthday}}‘ />
      </view>
      <view class=‘header-jian‘>
        <image src=‘../../img/jiantou.png‘></image>
      </view>
    </view>

css自己调试

.container {
  display: block;
  background-color: #fafafa;
  padding: 0;
}

.top-menu {
  display: flex;
  position: fixed;
  height: 80rpx;
  z-index: 10;
  background-color: #fff;
  width: 100%;
  top: 0;
  left: 0;
  flex-direction: row;
  align-items: center;
  justify-content: space-around;
  border-top: 2rpx solid #ddd;
  border-bottom: 2rpx solid #ddd;
  font-size: 11pt;
  color: #bdbdbd;
}

.state-menu {
  display: flex;
  position: fixed;
  left: 0;
  height: 200rpx;
  top: 80rpx;
  width: 100%;
  z-index: 9;
  background-color: #fff;
  flex-direction: row;
  border-bottom: 2rpx solid #ddd;
  justify-content: space-around;
  align-items: center;
  flex-wrap: wrap;
}

.hidden.state-menu {
  transform: translateY(-200rpx);
  transition: all 0.4s ease;
  visibility: hidden;
}

.show.state-menu {
  transform: translateY(0);
  transition: all 0.4s ease;
  visibility: visible;
}

.dialog-mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 8;
  background: rgba(0, 0, 0, 0.6);
}

.state-item {
  width: 20%;
  height: 70rpx;
  font-size: 11pt;
  line-height: 70rpx;
  text-align: center;
  border-radius: 10rpx;
  border: 2rpx solid #ddd;
}

.border.state-item {
  border: 2rpx solid #c4245c;
}

.date {
  min-width: 40%;
  display: flex;
  font-size: 11pt;
  color: #bdbdbd;
  align-items: center;
}

.date-btn {
  min-width: 80%;
  font-size: 12pt;
  background-color: #c4245c;
  color: #fff;
  position: fixed;
}

.picker-view {
  width: 100%;
  display: flex;
  z-index: 12;
  background-color: #fff;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  position: fixed;
  bottom: 0rpx;
  left: 0rpx;
}

.picker-item {
  line-height: 70rpx;
  margin-left: 5rpx;
  margin-right: 5rpx;
  text-align: center;
}

.picker-h {
  position: relative;
  text-align: center;
  font-size: 32rpx;
  width: 100%;
  padding: 35rpx 0;
  border-bottom: solid 1rpx #f0f0f0;
}

.riqi-q {
  background-color: #fe5c68;
  font-size: 24rpx;
  padding: 12rpx 30rpx;
  color: #fff;
  position: absolute;
  right: 25rpx;
  border-radius: 5px;
}

.time-text {
  display: flex;
  text-align: center;
  font-size: 28rpx;
  width: 100%;
  padding: 20rpx 0;
}

.time-title {
  flex: 1;
}
.input{
  width:200px;
  height:30px;
  border:1px solid grey;
}
.input:empty::before{
  color:lightgrey;
  content:attr(placeholder);
}

.p_name{
  display: flex;
  align-items: center;
  width:100%;
  text-align:center;
}
.p_n_i{
  flex: 1;
  font-size: 28rpx;
  padding-top: 20rpx;
}
var animation
// 时间
const date = new Date()
const years = []
const months = []
const days = []

for (let i = 1990; i <= date.getFullYear(); i++) {
  years.push(i)
}

for (let i = 1; i <= 12; i++) {
  var k = i;
  if (0 <= i && i <= 9) {
    k = "0" + (i);
  } else {
    k = (i);
  }
  months.push(k)
}

for (let i = 1; i <= 31; i++) {
  var k = i;
  if (0 <= i && i <= 9) {
    k = "0" + (i);
  } else {
    k = (i);
  }
  days.push(k)
}
Page({
  data: {
    imageList: ‘../../img/tou.png‘,
    imageList2: [],
    fun_id: 2,
    animationData: {},
    data_animationAddress: {},
    data_addressShow: false,
    years: years,
    year: date.getFullYear(),
    months: months,
    month: 2,
    days: days,
    day: 2,
    value: [9999, 1, 1]
  },
onLoad: function() {
    // 初始化动画变量
    var animation = wx.createAnimation({
      duration: 500,
      transformOrigin: "50% 50%",
      timingFunction: ‘ease‘,
    })
    this.animation = animation;
  },
  bindChange: function(e) {
    const val = e.detail.value
    this.setData({
      year: this.data.years[val[0]],
      month: this.data.months[val[1]],
      day: this.data.days[val[2]]
    })
  },
  // 执行动画
  startAnimation: function(isShow, offset) {
    var that = this
    var offsetTem
    if (offset == 0) {
      offsetTem = offset
    } else {
      offsetTem = offset + ‘rpx‘
    }
    this.animation.translateY(offset).step()
    this.setData({
      animationData: this.animation.export(),
      isVisible: isShow
    })
    console.log(that.data)
  },

  // 时间
  data_click: function(e) {
    console.log(‘2222‘)
    var that = this
    if (that.data.data_addressShow) {
      return
    }
    that.start_data_AddressAnimation(true)
  },

  // 执行动画
  start_data_AddressAnimation: function(isShow) {
    var that = this
    if (isShow) {
      that.animation.translateY(0 + ‘vh‘).step()
    } else {
      that.animation.translateY(50 + ‘vh‘).step()
    }
    that.setData({
      data_animationAddress: that.animation.export(),
      data_addressShow: isShow,
    })
  },

  // 时间
  confirm: function(e) {
    var that = this
    var value = that.data.value
    that.start_data_AddressAnimation(false)
    let birthday = `${that.data.year}-${that.data.month}-${that.data.day}`
    that.setData({
      birthday: birthday
    })
  },

  data_hide: function(e) {
    console.log(e)
    this.start_data_AddressAnimation(false)
  },

写的特别乱!别介意

原文地址:https://www.cnblogs.com/baifubin/p/9290833.html

时间: 2024-08-01 15:08:32

微信小程序picker-view自定义日期时间等的相关文章

微信小程序,时间戳和日期格式互相转化

微信小程序,时间戳转为日期格式 通常后台传递过来的都是时间戳,但是前台展示不能展示时间戳.就需要转化了. 功能说明: 微信小程序里,时间戳转化为日期格式,支持自定义. 拷贝至项目utils/utils.js中,并注意在js中声明下: module.exports = { formatTime: formatTime, // 日期转时间戳 formatTimeTwo: formatTimeTwo // 时间戳转日期 } utils/utils.js 写法 function formatTime(d

微信小程序picker组件 - 省市二级联动

微信小程序picker组件自带省市区选择器,但是业务需求需要省市选择器,参考官方demo自己写了一个省市选择器 wxml文件 <view class="section"> <view class="section__title">省市二级联动demo</view> <picker mode="multiSelector" bindchange="bindMultiPickerChange&quo

微信小程序picker空白

如果你看完发现跟我遇到一样的问题,那么真的很奇葩 这个得从功能需求讲起 直接上图: 在 个人信息里面显示身高和体重,而且支持修改 我最开始想到的做法 直接使用微信小程序提供的组件picker(从屏幕下方弹出 的选择框) 我就比较懒,想一步选择两个属性,比如这样: 就是不管用户点击身高,还是体重,都是弹出这个进行选择修改,一步到位 那么我就给两个属性都绑定了一个picker,也使用同一组数据,大致代码: <picker mode="multiSelector" rang="

微信小程序如何实现自定义tabBar

小程序开发现在非常火,但是对于后台来说如何做到自定义tabBar呢?下面就来讲解下,如何实现微信小程序登录后根据用户身份权限不同跳转到不同的页面问题.首先需要解决的是:你要把底部导航做成一个公共模板template.wxml中代码:<template name="tabBar"> <view class="tab-bar" style="color: {{tabBar.color}}; background: {{tarBar.backg

微信小程序——picker通过value返回你想获取的值

关于微信小程序中的picker使用方法可以访问:picker-小程序 从它的官方文档中,可以看出它返回的value值是它range的下标: 在项目中,我们大多数时候传的值并不是需要这个下标,而是其他的值.像我项目中,需要获取到的是它对应的teamId,那么我们如何通过它的这个下标值返回你想要的值呢? 项目需求如下图: 步骤如下:  1.编写wxml文件 这是主要讲picker的功能,所以我只截了 picker 部分的wxml 代码了. 2.编写js文件 a). 定义data b). 赋值 c).

微信小程序数据分析之自定义分析

在小程序后台,微信已经提供了强大的数据分析功能,包括实时统计.访问分析.来源分析和用户画像功能,可以说对一般的数据分析已经完全足够了,但有时应用需要做一些更加精准的数据分析,比如具体到某一个页面的分享,页面中某一个button的点击等,这时候就需要用到自定义分析功能. 什么是自定义分析? 引用下官方文档: 自定义分析支持灵活多维和近实时的用户行为分析,可以通过自定义上报,对用户在小程序内的行为做精细化跟踪,满足页面访问等标准统计以外的个性化分析需求. 创建自定义事件 事件英文名称和事件中文名称按

手摸手教你微信小程序开发之自定义组件

前言 相信大家在开发小程序时会遇到某个功能多次使用的情况,比如弹出框.这个时候大家首先想到的是组件化开发,就是把弹出框封装成一个组件,然后哪里使用哪里就调用,对,看来大家都是有思路的人,但是要怎样实现呢.可能你会去看官方文档,但是微信的官方文档也是说的不太清楚,所以写起来也是非常痛苦.今天就带大家手摸手开发微信组件,坐稳了,马路杀手要开车了. 具体实现 我们先实现个简单的弹窗组件,详情图如下: 1.新建component文件夹存放我们的组件,里边存放的就是我们所用的组件,我们今天要做的事弹出框,

微信小程序中的自定义组件 以及 相关的坑

Step1 我们初始化一个小程序(本示例基础版本库为 1.7 ),删掉里面的示例代码,并新建一个 components 文件夹,用于存放我们以后开发中的所用组件,今天我们的目的是实现一个 首页 组件,因此,我们在 components 组件中新建一个 home 文件夹来存放我们的弹窗组件,在 home 下右击新建 Component 并命名为 home 后,会生成对应的 json wxml wxss js 4个文件,也就是一个自定义组件的组成部分,此时你的项目结构应该如下图所示: Step2 组

微信小程序picker下拉绑定数据

页面部分,wxml中写入以下代码 <picker mode = "selector" bindchange="bindPickerChange" value="{{project[idx].id}}" range="{{project}}" range-key="{{'val'}}"> <view class="picker picker1"> {{project

微信小程序中使用vant-weapp中时间控件默认显示每月1号

前提:使用filed框去调用时间选择组件 思路:js中获取当前时间戳,通过转换为时间字符串的方法只转换到年月,日的话选择‘01’为固定值,这样返回的就是每个月的1号的日期字符串了.到时候显示到filed组件即可. 弹出时间选择器默认选择当前月1号:上述已经获取到了当前月1号的日期字符串了,只需要在转换为时间戳,把这个值赋值到时间选择器的value属性上即可. 贴上实现的代码: 1 //获取当前月1号的方法 2 getCurrentMonthOfone(){ 3 var that = this;