【愚公系列】2022年04月 微信小程序-项目篇(祝福语)-01 首页页面设计

简介: 【愚公系列】2022年04月 微信小程序-项目篇(祝福语)-01 首页页面设计

一、首页页面设计

1.首先上图

image.png


2.全局样式设置

app.wxss


/**app.wxss**/
page{
  font-family: "PingFang SC", "PingFang-SC-Light", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;
  font-size: 28rpx;
  color: #676767;
  height: 100%;
  -webkit-font-smoothing:antialiased;
}
input{
  font-family: "PingFang SC", "PingFang-SC-Light", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;
}
.container {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.flex-container{
  display:flex;
  flex-direction:column;
}

3.搜索框设计

3.1 页面效果

image.png


3.2 WXML

<view class="container">
  <view class="inner">
    <form bindsubmit="generate" >
      <!-- 称呼 -->
      <view class="named {{isMore ? 'more' : ''}}">
        <input bindinput="changeToName" name="toname" placeholder="怎么称呼TA?(不超过10个字)" input-placeholder="i-named"/>
      </view>
    </form>
  </view>
</view>

3.2 WXSS

/**index.wxss**/
.container{
  background-color: #f7f4ee;
  color: #424242;
}
.inner{
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0 60rpx;
}
form{
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.named input{
  text-align: center;
  height: 78rpx;
  border-radius: 10rpx;
  border: 2rpx solid #d9ba6a;
  background-color: #fff;
  line-height: 78rpx;
  font-size:32rpx;
}
.more input{
  border: 2rpx solid #e7404d;
  box-shadow: 0 0 5px #e7404d;
}

3.3 JS

changeToName(e) {
  let name = e.detail.value
  if (name.length > 10) {
    this.setData({
      isMore: true
    })
  } else {
    this.setData({
      isMore: false
    })
  }
}

4.类别设计

4.1 页面效果

image.png


4.2 WXML

<template name="realtionAvatar">
  <view class="item">
    <!-- tap_relation 的数据绑定之后可以考虑通过 radio[checked] 的 css 方式来实现-->
    <radio value="{{item.id}}" hidden checked="{{item.id == 1}}"id="{{'r'+item.id}}"/>
    <label class="labeled" for="{{'r'+item.id}}">
      <view class="head {{item.id == query.relationID ? 'select' : ''}}" data-id="{{item.id}}" bindtap="tap_relation">
         <image class="avatar" src="../../images/{{item.img}}.png"></image>
      </view>
      <text class="call">{{item.name}}</text>
    </label>
  </view>
</template>
<view class="container">
  <view class="inner">
    <form bindsubmit="generate" >
      <!-- 称呼 -->
      <view class="named {{isMore ? 'more' : ''}}">
        <input bindinput="changeToName" name="toname" placeholder="怎么称呼TA?(不超过10个字)" input-placeholder="i-named"/>
      </view>
       <!-- 类别 -->
      <view class="cate" >
        <div class="hd">
          <text>TA是你的</text>
        </div>
        <div class="bd">
          <radio-group name="relationID">
            <view class="row r1">
              <block wx:for="{{relation1}}">
                <template is="realtionAvatar" data="{{query,item}}"/>
              </block>
            </view>
            <view class="row r2" >
              <block wx:for="{{relation2}}">
                <template is="realtionAvatar" data="{{query,item}}"/>
              </block>
            </view>
          </radio-group>
        </div>
      </view>
    </form>
  </view>
</view>

4.3 WXSS

.hd{
  display: flex;
  justify-content: center;
  font-size: 36rpx;
  padding-top: 60rpx;
}
.row{
  display: flex;
  justify-content: space-between;
  padding-top: 20rpx;
}
.item{
  width: 120rpx;
}
.item .labeled{
  display: flex;
  flex-direction: column;
  align-items: center;
}
.head{
  display: block;
  width: 120rpx;
  height: 120rpx;
  border-radius: 50%;
  background-color: #fff;
  overflow: hidden;
  opacity: 0.6;
}
.select{
  background-color: #d9ba6a;
  opacity: 1;
}
.avatar{
  width: 120rpx;
  height: 120rpx;
}
.call{
  margin-top: 12rpx;
}
.cate .hd{
  padding: 60rpx 0 10rpx;
  font-size: 34rpx;
  color: #777;
}

4.3 JS

"tap_relation": function (e) {
  this.setData({
    "query.relationID": e.currentTarget.dataset.id
  });
},

5.性别设计

5.1 页面效果

image.png


5.2 WXML

<template name="genderAvatar">
  <view class="item">
    <radio value="{{item.id}}" hidden checked="{{item.id == 1}}" id="{{'g'+item.id}}"/>
    <label class="labeled" for="{{'g'+item.id}}">
      <view class="head {{item.id == query.genderID ? 'select' : ''}}" data-id="{{item.id}}" bindtap="tap_gender">
         <image class="avatar" src="../../images/{{item.img}}.png"></image>
      </view>
      <text class="call">{{item.name}}</text>
    </label>
  </view>
</template>
<!-- 性别 -->
<view class="sex">
  <div class="hd">
    <text>TA的性别</text>
  </div>
  <div class="bd">
    <radio-group name="genderID">
      <view class="row">
        <block wx:for="{{gender}}">
          <template is="genderAvatar" data="{{query,item,index}}"/>
        </block>
      </view>
    </radio-group>
  </div>
</view>

5.3 WXSS

.sex .hd{
  padding-top: 30rpx;
  font-size: 34rpx;
  color: #777;
}
.sex .row{
  padding: 20rpx 170rpx 0;
}

5.4 JS

"tap_gender": function (e) {
  this.setData({
    "query.genderID": e.currentTarget.dataset.id
  });
},

6.按钮设计

6.1 页面效果

image.png


6.2 WXML

<!-- 生成 -->
<view>
  <button form-type="submit" hover-class="navigator-hover" class="submit-btn" >捎句祝福话</button>
</view>

6.3WXSS

.submit-btn{
  width: 100%;
  height: 94rpx;
  line-height: 94rpx;
  background-color: #d9ba6a;
  border-radius: 10rpx;
  font-size: 36rpx;
  color: #fff;
  font-weight: bold;
  margin-top: 100rpx;
  text-align: center;
}
.submit-btn::after{
  display: none;
}

6.4 JS

//事件处理函数
generate: function (e) {
  app.clearWishes();
  let data = e.detail.value;
  if (data.toname) {
    app.setToName(data.toname);
  }
  wx.navigateTo({
    url: `/pages/preview/preview?state=0&relation=${data.relationID}&sex=${data.genderID}`
  })
},
相关文章
|
2月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
4月前
|
人工智能 小程序 前端开发
小程序、网站 vs. APP:成本差异究竟在哪里?技术栈如何决定项目上限?优雅草卓伊凡
小程序、网站 vs. APP:成本差异究竟在哪里?技术栈如何决定项目上限?优雅草卓伊凡
308 0
小程序、网站 vs. APP:成本差异究竟在哪里?技术栈如何决定项目上限?优雅草卓伊凡
|
7月前
|
人工智能 小程序 NoSQL
【一步步开发AI运动小程序】二十一、如何将AI运动项目配置持久化到后端?
本文介绍基于云智「Ai运动识别引擎」的运动配置持久化方案,旨在优化小程序或Uni APP中AI运动识别能力。通过将运动检测参数(如`Key`、`Name`、`TickMode`、`rules`或`samples`)持久化到后端,可避免因频繁调整运动参数而重新发布应用,提升用户体验。持久化数据结构支持规则和姿态样本存储,适用于关系数据库、文件或文档数据库(如MongoDB)。此外,云智还提供运动自动适配工具及「AI乐运动」产品,助力快速实现AI体育、全民健身等场景。
|
9月前
|
缓存 小程序 API
微信小程序页面导航与路由:实现多页面跳转与数据传递
本文深入探讨微信小程序的页面导航与路由机制,介绍多种页面跳转方式如`wx.navigateTo`、`wx.redirectTo`、`wx.switchTab`等,并讲解通过URL、全局变量和事件传递数据的方法。结合案例实现多页面跳转与数据传递,帮助开发者掌握这一重要技能。
|
小程序 前端开发 开发者
小程序的页面如何布局?
【10月更文挑战第16天】小程序的页面如何布局?
777 1
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
2222 3
|
XML 小程序 JavaScript
小程序入门之项目配置说明和数据绑定
小程序入门之项目配置说明和数据绑定
141 1
|
缓存 开发框架 移动开发
uni-app:下载使用uni&创建项目&和小程序链接&数据缓存&小程序打包 (一)
uni-app 是一个跨平台的开发框架,它允许开发者使用 Vue.js 来构建应用程序,并能够同时发布到多个平台,如微信小程序、支付宝小程序、H5、App(通过DCloud的打包服务)等。uni-app 的目标是通过统一的代码库,简化多平台开发过程,提高开发效率。 在这一部分中,我们将逐步介绍如何下载和使用uni-app、创建一个新的项目、如何将项目链接到小程序,以及实现数据缓存的基本方法。
367 0
|
JavaScript
vue尚品汇商城项目-day06【43.微信支付业务】
vue尚品汇商城项目-day06【43.微信支付业务】
128 0
|
7月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
659 12