微信小程序——婚礼邀请函

news2024/10/9 14:11:48

一、界面设计

  1. 首页:

    • 精美的婚礼主题背景图,可能是新人的婚纱照或浪漫的插画。
    • 温馨的欢迎语,如 “欢迎参加我们的婚礼”。
    • 一个 “打开邀请函” 的按钮,引导用户进入邀请函详情页面。
  2. 邀请函详情页面:

    • 顶部展示新人的照片和名字,以及婚礼日期和地点。
    • 一段浪漫的爱情故事或致辞,讲述新人的相遇相知和对未来的期待。
    • 婚礼流程介绍,包括仪式时间、婚宴时间、节目安排等。
    • 地图导航,提供婚礼地点的位置信息和导航链接。
    • RSVP(请回复)按钮,让宾客可以方便地回复是否参加婚礼。

二、功能实现

  1. 数据存储与获取:

    • 可以将婚礼信息存储在小程序的本地缓存或使用云开发数据库,以便在不同页面之间共享数据。
    • 如果需要动态更新婚礼信息,可以通过网络请求从服务器获取最新数据。
  2. 页面导航:

    • 在首页设置按钮点击事件,跳转到邀请函详情页面。
    • 在邀请函详情页面可以设置返回首页的按钮或链接。
  3. 地图导航:

    • 使用小程序的地图组件,展示婚礼地点的位置,并提供导航链接,方便宾客前往婚礼现场。
    • 可以调用第三方地图导航 API,如腾讯地图、百度地图等,实现更精准的导航功能。
  4. RSVP 功能:

    • 点击 RSVP 按钮,弹出一个表单,让宾客填写姓名、联系方式、参加人数等信息。
    • 将宾客的回复信息存储在本地或发送到服务器,以便新人统计参加人数。

目的

1.掌握微信小程序的开发技术,包括页面布局、交互设计、数据存储等。

2.学会运用微信小程序的各种组件和 API,实现个性化的婚礼邀请函功能。

3.通过制作婚礼邀请函小程序,提升创意设计和用户体验优化的能力。

4.了解如何在小程序中整合多媒体资源,如图片、音乐、视频等,以增强邀 请函的吸引力。

5.能够将小程序发布上线,与亲朋好友分享幸福时刻,同时熟悉小程序的发 布流程和审核要求。

流程

确定婚礼邀请函小程序的功能需求,如展示新人照片、婚礼时间地点、RSVP 功能、地图导航等。规划小程序的页面结构和交互流程,确保用户能够方便地浏览和操作。

界面设计:制作精美的页面布局,包括首页、婚礼详情页、RSVP 页面等。可以使用微信小程序提供的组件,如视图容器(view)、图片(image)、文本(text)等,进行页面搭建。

测试与优化:在开发过程中进行多次测试,确保小程序的功能正常、界面美观、交互流畅。检查兼容性问题,确保小程序在不同设备和操作系统上都能正常运行。根据测试结果进行优化,修复漏洞和改进用户体验。

代码架构

对应代码

index.wxml

<view class="player player-{{isPlayingMusic ? 'play' : 'pause'}}" bindtap="play">
  <image src="/images/music_icon.png" />
  <image src="/images/music_play.png" />
</view>
<!-- 背景图片 -->
<image class="bg" src="/images/bg_1.png" />
<!-- 内容区域 -->
<view class="content">
  <!-- 顶部GIF图片 -->
  <image class="content-gif" src="/images/save_the_date.gif" />
  <!-- 标题 -->
  <view class="content-title">邀请函</view>
  <!-- 新郎和新娘的合照 -->
  <view class="content-avatar">
    <image src="/images/avatar.png" />
  </view>
  <!-- 新娘和新郎的名字 -->
  <view class="content-info">
    <view class="content-name" bindtap="callGroom">
      <image src="/images/tel.png" />
      <view>张三石</view>
      <view>新郎</view>
    </view>
    <view class="content-wedding">
      <image src="/images/wedding.png"></image>
    </view>
    <view class="content-name" bindtap="callBride">
      <image src="/images/tel.png" />
      <view>张三石的爱人</view>
      <view>新娘</view>
    </view>
  </view>
  <!-- 婚礼信息 -->
  <view class="content-address">
    <view>我们诚邀您来参加我们的婚礼</view>
    <view>时间:未来的某一天</view>
    <view>地点:花海圆满酒店</view>
  </view>
</view>

index.wxss

/* 音乐播放图标 */

.player {
  position: fixed;
  top: 20rpx;
  right: 20rpx;
  /* 提高堆叠顺序 */
  z-index: 1;
}

.player > image:first-child {
  width: 80rpx;
  height: 80rpx;
  /* 为唱片图标设置旋转动画 */
  animation: musicRotate 3s linear infinite;
}

@keyframes musicRotate {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

.player > image:last-child {
  width: 28rpx;
  height: 80rpx;
  margin-left: -5px;
}

/* 播放状态 class为.player-play */

.player-play > image:first-child {
  animation-play-state: running;
}

.player-play > image:last-child {
  animation: musicStart 0.2s linear forwards;
}

/* 暂停状态 class为.player-pause */

.player-pause > image:first-child {
  animation-play-state: paused;
}

.player-pause > image:last-child {
  animation: musicStop 0.2s linear forwards;
}

@keyframes musicStart {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(20deg);
  }
}

@keyframes musicStop {
  from {
    transform: rotate(20deg);
  }

  to {
    transform: rotate(0deg);
  }
}

/* 背景图 */

.bg {
  width: 100vw;
  height: 100vh;
}

/* 内容区域 */

.content {
  width: 100vw;
  height: 100vh;
  position: fixed;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* 顶部gif图 */

.content-gif {
  width: 19vh;
  height: 18.6vh;
  margin-bottom: 1.5vh;
}

/* 标题 */

.content-title {
  font-size: 5vh;
  color: #ff4c91;
  text-align: center;
  margin-bottom: 2.5vh;
}

/* 头像 */

.content-avatar image {
  width: 24vh;
  height: 24vh;
  border: 3px solid #ff4c91;
  border-radius: 50%;
}

/* 新郎新娘信息 */

.content-info {
  width: 55vw;
  text-align: center;
  margin-top: 4vh;
  display: flex;
  align-items: center;
}

.content-name {
  color: #ff4c91;
  font-size: 2.7vh;
  line-height: 4.5vh;
  font-weight: bold;
  position: relative;
}

.content-name > image {
  width: 2.6vh;
  height: 2.6vh;
  border: 1px solid #ff4c91;
  border-radius: 50%;
  position: absolute;
  top: -1vh;
  right: -3.6vh;
}

.content-wedding {
  flex: 1;
}

.content-wedding > image {
  width: 5.5vh;
  height: 5.5vh;
  margin-left: 20rpx;
}

/* 婚礼信息 */

.content-address {
  margin-top: 5vh;
  color: #ec5f89;
  font-size: 2.5vh;
  font-weight: bold;
  text-align: center;
  line-height: 4.5vh;
}

.content-address view:first-child {
  font-size: 3vh;
  padding-bottom: 2vh;
}

map.wxml

<map latitude="{{latitude}}" longitude="{{longitude}}" markers="{{markers}}" bindmarkertap="markertap" />

map.wxss

map {
  width: 100vw;
  height: 100vh;
}

picture.wxml

<swiper indicator-color="white" indicator-active-color="#ff4c91" indicator-dots autoplay interval="3500" duration="1000" vertical circular>
  <swiper-item wx:for="{{imgUrls}}" wx:key="*this">
    <image src="{{item}}" mode="aspectFill" />
  </swiper-item>
</swiper>

picture.wxss

swiper {
  height: 100vh;
}

image {
  width: 100vw;
  height: 100vh;
}

腾讯视频插件,需要注册企业微信公众号(需要花钱),才可以使用,仅学习使用可忽略

video.wxml

<view class="video-list" wx:for="{{movieList}}" wx:key="user">
  <view class="video-title">标题:{{item.title}}</view>
  <view class="video-time">时间:{{formatData(item.create_time)}}</view>
  <video src="{{item.src}}" objectFit="fill"></video> 
</view>
<view class="video-list">
  <view class="video-title">标题:腾讯视频插件演示</view>
  <view class="video-time">时间:2019-1-1 10:11:12</view>
  <txv-video vid="y0371c5p9cc" playerid="txv1"></txv-video>
</view>
<wxs module="formatData">
  module.exports = function(timestamp) {
    var date = getDate(timestamp)
    var y = date.getFullYear()
    var m = date.getMonth() + 1
    var d = date.getDate()
    var h = date.getHours()
    var i = date.getMinutes()
    var s = date.getSeconds()
    return y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s
  }
</wxs>

vide.wxss

.video-list {
  box-shadow: 0 8rpx 17rpx 0 rgba(7, 17, 27, 0.1);
  margin: 10rpx 25rpx;
  padding: 20rpx;
  border-radius: 10rpx;
  margin-bottom: 30rpx;
  background: #fff;
}

.video-title {
  font-size: 35rpx;
  color: #333;
}

.video-time {
  font-size: 13px;
  color: #979797;
}

.video-list video {
  width: 100%;
  margin-top: 20rpx;
}

配置文件

project.config.json

{
  "description": "项目配置文件",
  "packOptions": {
    "ignore": [],
    "include": []
  },
  "setting": {
    "urlCheck": false,
    "es6": true,
    "enhance": false,
    "postcss": true,
    "preloadBackgroundData": false,
    "minified": true,
    "newFeature": true,
    "coverView": true,
    "nodeModules": false,
    "autoAudits": false,
    "showShadowRootInWxmlPanel": true,
    "scopeDataCheck": false,
    "uglifyFileName": false,
    "checkInvalidKey": true,
    "checkSiteMap": true,
    "uploadWithSourceMap": true,
    "compileHotReLoad": false,
    "useMultiFrameRuntime": true,
    "useApiHook": true,
    "useApiHostProcess": true,
    "babelSetting": {
      "ignore": [],
      "disablePlugins": [],
      "outputPath": ""
    },
    "enableEngineNative": false,
    "bundle": false,
    "useIsolateContext": true,
    "useCompilerModule": true,
    "userConfirmedUseCompilerModuleSwitch": false,
    "userConfirmedBundleSwitch": false,
    "packNpmManually": false,
    "packNpmRelationList": [],
    "minifyWXSS": true
  },
  "compileType": "miniprogram",
  "libVersion": "2.14.1",
  "appid": "wx0298165ccea56bb4",
  "projectname": "invitation",
  "condition": {},
  "editorSetting": {
    "tabIndent": "insertSpaces",
    "tabSize": 2
  }
}

效果截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2199217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

瑞华技术募资额巨降过半:业绩大幅下滑,信用期外应收账款占比高

《港湾商业观察》黄懿 上市的节奏有快有慢&#xff0c;常州瑞华化工工程技术股份有限公司&#xff08;下称“瑞华技术”&#xff0c;920099.BJ&#xff09;自2023年3月被北交所受理后&#xff0c;于2024年8月29日获得注册批文&#xff0c;9月25日正式挂牌上市。 据了解&#…

如何使用pymysql和psycopg2连接MySQL和PostgreSQL数据库

在现代软件开发中&#xff0c;数据库是存储和管理数据的核心组件。Python作为一种流行的编程语言&#xff0c;提供了多种方式来连接和操作数据库。在这篇文章中&#xff0c;我们将探讨如何使用pymysql和psycopg2这两个库来连接MySQL和PostgreSQL数据库。我们将从基础概念开始&a…

【总结分享】10种常用前后端鉴权方法,让你不再迷惘

本文转载自&#xff1a;https://juejin.cn/post/7129298214959710244 作者&#xff1a;易师傅 关于前端鉴权这块&#xff0c;token、cookie、session、jwt、单点登录、扫码登录、一键登录是什么意思&#xff1f;分别有什么作用&#xff1f;你一般是怎么做的&#xff1f;以及你…

No.13 笔记 | 网络安全防护指南:从法律法规到技术防御

一、法律法规 《中华人民共和国网络安全法》要点 遵守法律&#xff1a;所有个人和组织在使用网络时&#xff0c;必须遵守宪法和法律&#xff0c;不得利用网络从事危害国家安全等活动。 个人信息保护&#xff1a;禁止非法获取、出售或提供个人信息。若违反但未构成犯罪&#x…

Mysql 锁机制详情

一&#xff1a;事务四要素 原子性&#xff08;Atomicity&#xff09;&#xff1a;要么全部完成&#xff0c;要么全部不完成&#xff08;通过redo log 日志实现&#xff09;&#xff1b;一致性&#xff08;Consistency&#xff09;&#xff1a;一个事务单元需要提交之后才会被…

CSS调整元素大小

为了增强用户体验&#xff0c;CSS3 中新增了一个非常实用的 resize 属性&#xff0c;该属性允许用户通过拖动的方式来自由缩放元素的尺寸&#xff0c;在此之前要实现类似的效果还需要借助大量的 JavaScript 代码。resize 属性的语法格式如下&#xff1a; resize: none|both|ho…

【含开题报告+文档+PPT+源码】基于SpringBoot乡村助农益农平台的设计与实现

开题报告 近年来&#xff0c;随着社会经济的快速发展和人民生活水平的提高&#xff0c;人们对优质农产品的需求越来越高。然而&#xff0c;传统的农产品销售管理模式存在一些问题。首先&#xff0c;农产品供应链信息不透明&#xff0c;导致生产者难以了解市场需求和价格变动趋…

【笔记】6.2 玻璃的成型

玻璃熔体的成型方法,有压制法(例如,制作水杯、烟灰缸等)、压延法(例如,制作压花玻璃等)、浇铸法(例如,制作光学玻璃、熔铸耐火材料、铸石等) 、吹制法(例如,制作瓶罐等空心玻璃)、拉制法(例如,制作窗用玻璃、玻璃管、玻璃纤维等)、离心法(例如,制作玻璃棉等)、喷吹法(例如,制作…

Authentication Lab | IP Based Auth Bypass

关注这个靶场的其它相关笔记&#xff1a;Authentication Lab —— 靶场笔记合集-CSDN博客 0x01&#xff1a;IP Based Auth Bypass 前情提要 有些开发人员为了图方便&#xff0c;会给站点设置一个 IP 白名单&#xff0c;如果访问站点的用户的 IP 在白名单内&#xff0c;则允许访…

低代码平台那么多,如何知道哪个比较好用

在当今数字化时代&#xff0c;低代码平台如雨后春笋般涌现&#xff0c;为企业的软件开发带来了新的机遇和挑战。面对众多的低代码平台&#xff0c;如何判断哪个比较好用呢? 首先&#xff0c;功能全面性是关键考量因素。一个好用的低代码平台应具备丰富的功能模块&#xff0c;包…

【ACM独立出版】第四届计算机、物联网与控制工程国际学术会议(CITCE 2024)

第四届计算机、物联网与控制工程国际学术会议&#xff08;CITCE 2024) The 4th International Conference on Computer, Internet of Things and Control Engineering&#xff08;CITCE 2024) 重要信息 大会官网&#xff1a;www.citce.org 大会时间&#xff1a;2024年11月1-…

C++面试之继承和多态

(倒反天罡) 概念选择题答案&#xff08;0411-0422&#xff09; 1 C 2 A 3 B 4 B 5 D 6 D 7 D 8 C 9 D 10 D 11 C 12 E 13 C 继承有什么作用&#xff1f; 继承可以重写或重定义父类中的一些方…

Redis 实现 查找附近的人 功能

文章目录 概述Redis 中 Geospatial&#xff08;地理位置&#xff09;Demo例子总结 概述 使用 Redis 实现“查找附近的人”功能&#xff0c;通常会依赖 Redis 的 Geo&#xff08;地理位置&#xff09; 数据类型来存储用户的经纬度&#xff0c;并基于此进行地理范围查询。Redis …

最新价值5000元的V2M2引擎传奇源码2024BLUE升级版 团购

最新团购的V2M2引擎源码2024年BLUE升级版 特点优势是最新XE12编辑器&#xff0c;微端&#xff0c;各种自定义UI 无限仿GOM引擎功能 参考地址&#xff1a;最新价值5000元的V2M2引擎传奇源码2024BLUE升级版[原始团购版]_1234FCOM专注游戏工具及源码例子分享下载地址:BlueCodePXL…

.gitignore文件不起作用,GitHub和GitHubDeskTOP

问题&#xff1a;使用github或者github桌面版的时候配置的.gitignore文件不起作用&#xff0c;.gitignore文件是最新的&#xff0c;没有问题&#xff0c;只是提交的的时候Library、UserSettings这些文件还都一直在&#xff0c;尝试了大家说的清缓存等等方法&#xff0c;仍然没有…

代码随想录训练营Day28 | 39. 组合总和 | 40.组合总和II | 131.分割回文串

学习文档&#xff1a;代码随想录 (programmercarl.com) 学习视频&#xff1a;代码随想录算法公开课 | 最强算法公开课 | 代码随想录 (programmercarl.com) Leetcode 39. 组合总和 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找…

springboot医院预约挂号系统

基于springbootvue实现的医院预约挂号系统 &#xff08;源码L文ppt&#xff09;4-085 4.1系统功能模块设计 医院预约挂号系统与数据分析系统在设计与实施时&#xff0c;采取了模块性的设计理念&#xff0c;把相似的系统的功能整合到一个模组中&#xff0c;以增强内部的功能…

谷粒商城踩坑

1.mysql表名大小写问题&#xff08;P16&#xff09; 问题描述&#xff1a;代码要求的是表名大写&#xff0c;但实际上数据库是小写的&#xff0c;就报错&#xff1a; 问题解决&#xff1a;未解决 mysql版本为5.7.44。网上有两种解决方式&#xff0c;但是都解决不了 1.1 解决方…

国药准字:您购药的可靠指南

益安宁丸为同溢堂药业有限公司所独家生产的一款中成药&#xff0c;在内地市场和港澳地区均有上市。 益安宁丸真品的唯一标准&#xff1a;无论港版还是内地版&#xff0c;包装盒必然有国药准字Z20063087标识&#xff0c;但凡没有国药准字标识的必为假药。

【C++】:bind绑定器和function函数对象机制

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 引言function函数对象function引入细讲function体验function在工程实践中的优势 模拟实现function函数对象机制bind绑定器基本语法示例1. 绑定普通函数2. 使用占位符3. 绑定成员函数4. 绑定 lambda 表…