小程序基于vant calendar 修改成横向切换月份,点击左右两侧改变月份,并在需要的日期上加上标注

这篇具有很好参考价值的文章主要介绍了小程序基于vant calendar 修改成横向切换月份,点击左右两侧改变月份,并在需要的日期上加上标注。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小程序基于vant calendar 修改成横向切换月份,点击左右两侧改变月份,并在需要的日期上加上标注

 

        小程序基于vant calendar 修改成横向切换月份,点击左右两侧改变月份,并在需要的日期上加上标注。效果图如上,只是简单的完成

        主要的思路就是,将vant的日历控件设置成平铺,然后将minDate和maxDate分别设置成当前月的第一天和最后一天。这样日历区域就只会显示一个月的内容,然后再自己加两个按钮,分别在点击事件中去替换minDate和maxDate的值,产生是点击切换月份的效果。日历上特殊日期的标注则通过formatter函数来控制

wxml中写法:

一个view包着两个按钮和一个日历,按钮用定位的方法,定位到左右,把日历的标题和副标题都隐藏掉,日历里面的那个年月标题直接去修改vant的源码样式,让它隐藏掉。然后用title="{{title}}"自己重新定义一个标题

这里是因为点击左右切换月份后,标题不再跟着变换,所以才想了这个办法,以后有更好的解决办法就不这样写

<view class="calendar-div">
  <view class="calendar-div-button">
    <view class="prov" bindtap="arrowLeft">前一月</view>
    <view class="next" bindtap="arrowRight">后一月</view>
  </view>
  <van-calendar
    title="{{title}}"
    poppable="{{ false }}"
    show-confirm="{{ false }}"
    show-mark="{{false}}"
    class="calendar-div-calendar"
    row-height="50"
    min-date="{{minDate}}"
    max-date="{{maxDate}}"
    default-date="{{defaultDate}}"
    show-subtitle="{{false}}"
    type="multiple"
    formatter="{{ formatter }}"
  />
</view>

js中的写法

        formatter如果是要根据接口返回回来的值去做什么操作就可以卸载函数里面,通过setDate去更新data中的值,同样也是要有return

Component({

  data: {
      // 最大值和最小值都要保证是这个月, 默认值是今天,这样布局中才只会显示一个月
      minDate: new Date().getTime(),
      maxDate: new Date().getTime(),
      defaultDate: new Date().getTime(),
      title: new Date().getFullYear() + '年' + (new Date().getMonth() + 1) + '月',
      // formatter一定要有返回值,不然报错
      formatter(day: any) {
        return day
      },
  },

  created() {
    this.setMinMaxDay()
    this.formatterFuc()
  },
  methods: {
    // 初始设置显示月份可选择的天数区间
    setMinMaxDay() {
      let nowYear = new Date(this.data.defaultDate).getFullYear();
      let nowMonth = new Date(this.data.defaultDate).getMonth() + 1;
        
        // new Date中日期1就是本月第1天,0就是上个月的最后一天
      this.setData({
        minDate: new Date( nowYear, (nowMonth - 1), 1).getTime(),
        maxDate: new Date( nowYear, nowMonth, 0).getTime()
      })
    },
    // 当前月上一个月
    arrowLeft() {
      let year = new Date(this.data.minDate).getFullYear();
      let month =  new Date(this.data.minDate).getMonth();

       // 修改min和max来改变月份显示区域,同时更新title
      this.setData({
        minDate: new Date(year, (month - 1), 1).getTime(),
        maxDate: new Date(year, month, 0).getTime(),
        title: year + '年' + (month) + '月'
      })
    },
    // 当前月下一个月
    arrowRight() {
      let year = new Date(this.data.minDate).getFullYear();
      let month =  new Date(this.data.minDate).getMonth();
      
      this.setData({
        minDate: new Date(year, (month + 1), 1).getTime(),
        maxDate: new Date(year, (month + 2), 0).getTime(),
        title: year + '年' + (month + 2) + '月'
      })
    },

    formatterFuc() {
      this.setData({
        formatter: function(day) {
          const month = day.date.getMonth() + 1;
          const date = day.date.getDate();
          if (month === 11) {
            if (date === 7) {
              day.bottomInfo = '立冬';
            } else if (date === 22) {
              day.topInfo = '小雪';
              day.className = 'blue-flag'
            } else if (date === 21) {
              day.text = '今天';
            }
          }
          return day
        }
      })
    },

   }
})

至此算是基本完成,具体细节再根据项目要求接着调整文章来源地址https://www.toymoban.com/news/detail-502534.html

到了这里,关于小程序基于vant calendar 修改成横向切换月份,点击左右两侧改变月份,并在需要的日期上加上标注的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vant 的 Calendar 日历组件 自定义日期区间minDate、maxDate

          1.默认日历时间范围是当前时间到往后的6个月,可通过 min-date 和 max-date 自定义日历的范围。       2.设置 type 为 range 后可以选择日期区间,confirm 事件返回的 date 为数组结构,数组第一项为开始时间,第二项为结束时间。       3.可设置allow-same-day 允许选择同一天。

    2024年02月15日
    浏览(49)
  • 微信小程序修改vant组件样式

    1 背景 在使用vant组件开发微信小程序的时候,想更改vant组件内部样式,达到自己想要的目的(van-grid组件改成宫格背景色为透明,默认为白色),官网没有示例,通过以下几步修改成功。 2 步骤 2.1 查看官方文档 Grid 外部样式类 支持修改Grid组件样式,我们在组件上添加该属

    2024年02月09日
    浏览(67)
  • 微信小程序选项卡切换(滑动切换,点击切换)

    效果如下:可点击切换,滑动切换 代码如下 这个可以在项目用 index.wxml index.wxss index.js

    2024年02月14日
    浏览(59)
  • 小程序之修改引用的vant组件样式(包括自定义组件中的vant样式)

    今天在写小程序的时候,刚好遇到,以前遇到解决了之后忘记记录,今天记录下! 一般组件的基础样式会跟ui设计稿有些出入,就得改动! 使用vant的话,官方就有提供方法,比如复选框 我在项目中用custom-class居多,设置根节点后就能操作; 比如修改复选框禁用时的样式 如

    2024年02月11日
    浏览(59)
  • Vant 在小程序中修改外部样式类不生效

    以vant-cell为例 如果要修改vant-cell中的value样式,正常情况下的写法是这样的,但是呢就是不生效,因为已经有默认的样式了 要如何进行修改呢,必须找到对应的组件要修改的属性名,然后再添加 !important 才会生效,下面这种写法修改vant-cell中的value样式才会生效。 其他的组件

    2024年02月13日
    浏览(47)
  • 微信小程序实现滑动/点击切换Tab

    👏 swiper+scroll-view实现滑动/点击切换Tab,以及scroll-left的使用~ 🥇文末分享源代码。记得点赞+关注+收藏! 2.1 scroll-view实现tab列表 scroll-view: 可滚动视图区域。使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height。组件属性的长度单位默认为px。 scroll-x(bool

    2024年01月19日
    浏览(111)
  • uniapp小程序手写tab导航栏切换(点击切换样式,动态样式绑定)

    最近写uniapp,ui里面有一个导航栏切换的逻辑,因为要跟UI保持一致,对于组件库很难实现高度定制,所以这里就自己手写实现一个点击切换的导航栏。先看下图效果: 主要实现的是通过点击切换导航栏,并且样式有一个切换的效果,大家可以根据自己的需求进行样式的DIY

    2024年02月12日
    浏览(54)
  • vue+vant移动端显示table表格加横向滚动条

    参考文章: https://blog.csdn.net/weixin_46511008/article/details/127210738 https://my.oschina.net/u/4261744/blog/3315859 vant移动端显示table效果,增加复选框,可以进行多选和全选。加横向滚动条,可以看全部内容。 主要是参考上面两篇文章。

    2024年02月17日
    浏览(47)
  • 定义tabbar,以及解决原生微信小程序使用vant的tabbar的bug(点击俩次图标才正确激活)

    详细步骤,可以参考小程序官方给出的文档: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 在 app.json 中的 tabBar 项指定 custom 字段 在代码根目录下添加入口文件: custom-tab-bar用自定义组件的方式编写即可,用自定义组件的方式编写即可,该自定义组件完全接

    2024年04月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包