一键搞定!小程序调用日历本该如此简单

作者:蔡炜桀

在开发小程序的过程中,往往会遇到类似签到、打卡、记事、待办、提醒等相关主题的需求。而这类需求往往与时间强相关,且时间粒度往往是在「天」上,这就需要有一个组件来呈现以天为单位的展示需求,于是我们自然而然地想到了「日历」。

日历具有通用性、一次开发免维护、无需运营、无需网络连接、无需用户授权等优点,满足小程序插件「轻巧普适」的要求,很适合开发实现。

「极点日历」小程序插件各部分属性如下图:

插件配置

目前「极点日历」插件信息:

AppID

wx92c68dae5a8bb046

版本号

1.1.0

那么具体如何操作呢?下面为大家简单介绍一下:

1. 搜索插件

在微信小程序管理后台——设置——第三方服务,按 AppID(wx92c68dae5a8bb046)搜索到该插件并申请授权。

2. 引入声明

在要使用该插件的小程序 app.json 文件中引入插件声明。

"plugins": {
    "calendar": {
        "version": "1.1.0",
        "provider": "wx92c68dae5a8bb046"
    }
}

3. 添加配置

在需要使用到该插件的小程序页面的 JSON 配置文件中,做以下配置:

{
  "usingComponents": {
    "calendar": "plugin://calendar/calendar"
  }
}

4. 嵌入插件

在相应的 HTML 页面中添加以下语句即可完成插件的嵌入。

<calendar />

添加插件后效果如图:

默认用法,将具备以下样式特点:

  1. 显示当前月份的日历;
  2. 显示日历标题、显示上下月按钮;
  3. 显示周标题,周标题默认为 en 类型,即英文字母;
  4. 不显示非当前月的日期;
  5. 不显示农历;
  6. 插件占据文档流的整块宽度,即 width:100%。

以上样式均可参考 GitHub 属性文档更改。

自定义插件样式

日历插件本身是无背景色(透明)的,日历标题和周标题字体颜色默认为黑色加粗,当月日期默认字体颜色为 #4a4f74,非当前月日期字体颜色为 #c3c6d1。我们通过一个例子来说明如何自定义插件的样式。

1. 修改日历背景颜色

calendar-style 样式位插组件的根节点。假设要更改日历的背景色,除了插件件的父级容器设置背景色外,也可以通过该样式类进行配置来达到相应的效果。

首先在 WXML 文件里指定 calendar-style 的外部样式类为 calendar:

<calendar calendar-style="calendar" />

在 WXSS 文件新增 background-color 属性更改背景颜等,效果如下图。:

.calendar {
    background-color:white;  /*背景色为白色*/
    padding-top: 10px;       /*上内边距为10px*/
    border-radius: 15px;     /*添加边框圆角*/
}

2. 修改日历标题样式

header-style 样式类位于组件的日历标题。对该组件进行配置,可以改变当前年月,上下月按钮的外观和背景。

在上面例子的基础上,我们在 WXML 文件中新增代码:

<calendar calendar-style="calendar" header-style="header" />

在 WXSS 文件中添加 header 样式:

.header {
    font-size: large;
    color: #59518d;   
}

3. 修改日历主面板

board-style 样式类位于日历组件的主面板,包含了周标题和日期部分。对该组件进行配置,可以改变周标题的样式和日期面板的样式。

紧跟上面的例子,我们对 WXML 文件加多一行代码。

<calendar calendar-style="calendar" header-style="header" board-style="board" />

在 WXSS 文件中新增 board 样式

.board {
    color: #c7cbe2;
    font-weight: bold;
}

效果如下:

4. 禁用上下月按钮,显示更多的日期

在 WXML 文件中,加入以下配置,可以使日历不能翻页,同时将次月的日期也显示出来。

<calendar calendar-style="calendar" header-style="header" board-style="board" next="{{false}}" prev="{{false}}" show-more-days="{{true}}" />

5. 添加日期样式

日期的样式,可以通过对属性 days-color 进行配置,在 JS 文件中,添加以下数组,对日期样式进行定义。

let days_style = new Array;
for (let i = 1; i <= days_count; i++) {
  const date = new Date(this.data.year, this.data.month - 1, i); 
  if (date.getDay() == 0) {
    days_style.push({
      month: 'current', day: i, color: '#f488cd'
    });  
  } else {
    days_style.push({
      month: 'current', day: i, color: '#a18ada'
    });
  }
}
days_style.push(
  {month: 'current', day: 12, color: 'white', background: '#b49eeb'},
  {month: 'current', day: 17, color: 'white', background: '#f5a8f0'},
  {month: 'current', day :20, color: 'white', background: '#aad4f5'},
  {month: 'current', day :25, color: 'white', background: '#84e7d0'},
);

在 WXML 文件中,加入以下配置,即可完成整个 demo 的制作。

<calendar calendar-style="calendar" header-style="header" board-style="board" next="{{false}}" prev="{{false}}" show-more-days="{{true}}" days-color="{{days_style}}" />

效果如下:

当然,除了外部样式修改,每一个插件内点击事件都添加了监听,使用者可自行扩展。

应用实例

「极点插件」适用范围很广,可进行充分的个性化定制。目前「全民单词」小程序已在首页应用,背景使用了渐变色,具体实现代码放在 GitHub 中实时更新。

除此之外,我们还为你准备了几款配色 demo 可供参考。

插件开发者招募

知晓程序推出首个「插件市场」,免费为开发者提供插件的展示与交易服务,让优秀的插件快速对接用户。

目前,首批入驻开发者 100 人计划持续招募中!成为受邀开发者的条件只有一个:了解并熟悉小程序开发!

1. 如果你是对插件有兴趣的开发者,请添加晓小云(ID:minsupport3),加入插件开发讨论群。

2. 如果你已经成功开发插件,请用电脑访问 https://minapp.com/ ,点击顶部「插件市场」按钮,上传并提交你的小程序插件信息。

相关阅读

/ 知晓程序

终于过审!首批小程序插件诞生了

原文发布于微信公众号 - 知晓程序(zxcx0101)

原文发表时间:2018-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏calmound

基于iframe的移动端嵌套

需求描述 上上周接到了新的项目,移动端需要做一个底部有五个导航,点击不同的导航页面主体显示不同的页面,其中两个页面是自己做,而另外三个页面是引用另外三个网址,其...

4886
来自专栏coding

vue.js组件间通信

组件间需要能相互通信才价值,通信包括数据的传递,方法的调用。这样才能将不同组件结合起来搭建页面

841
来自专栏DeveWork

阻止iOS Web APP中点击链接跳转到Safari 浏览器新标签页

最近为了更好地接触移动Web 开发狠心购买了一台ipad mini(之前一直都是借同学的,借多了就不好意思了)。拿来调试DeveMobile 与EaseMobi...

2K10
来自专栏coding for love

CSS入门1-认识html之标签

(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!) (注2:更多内容请查看我的目录。)

942
来自专栏腾讯大讲堂的专栏

移动H5前端性能优化指南

移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点,首屏加载3秒...

5116
来自专栏前端布道

前端开发必备之Chrome开发者工具(上篇)

本文介绍的 Chrome 开发者工具基于 Chrome 65版本,如果你的 Chrome 开发者工具没有下文提到的那些内容,请检查下 Chrome 的版本 简介...

36211
来自专栏前端知识分享

第146天:移动H5前端性能优化

4. 基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB

1404
来自专栏前端人人

React第三方组件1(路由管理之Router的使用②多层级跳转及重定向)

本教程总共6篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React第三方组件1(路由管理之Router的使用①...

3134
来自专栏小白课代表

更新|PC截图工具的最佳选择。

说到截图,最常用的可能就是QQ自带的截图功能了,简单流畅能满足我们的日常需求,依附于QQ,没有特殊的需求甚至不需要其他的截图软件。

930
来自专栏编程坑太多

「小程序JAVA实战」 小程序远程调试(九)

PS:最后想到了什么老铁,可以查看远端的代码是不是就可以获取到借鉴他的代码了。其实微信早就想到了,不是所有的都可以的。远端调试必须知道他的APPID的,不是说直...

781

扫码关注云+社区