小程序默认是不支持table表格的,如果我们想实现小程序表格效果,就得自己拼凑。实现方案有很多,不过个人感觉通过form和input标签来实现是比较好的方式。
下面来看下实现思路
一,首先看index.wxml文件
- 这里用form实现整个表格,然后input实现表格内的单元格。布局其实很简单,主要是布局完成后通过css来实现表格样式
- 这里有几点要说明的 1,input可以通过设置disabled来不让用户输入,这样就可以作为纯文本展示。比如上图的文本 2,表格的间隔先需要自己用wxss来拼凑
<!--index.wxml -->
<view class="root">
<form bindsubmit="formSubmit">
<text>求和表格</text>
<view class='table'>
<view class="section-top">
<input type="text" placeholder="数据" class="input-top " disabled />
<input type="text" placeholder="A" class="input-top " disabled />
<input type="text" placeholder="B" class="input-top " disabled />
<input type="text" placeholder="计算结果" class="input-top end " disabled />
</view>
<view class="section2">
<input type="text" placeholder="加法" class="input2 " disabled />
<input type="digit" class="input2" placeholder="" maxlength='11' name="massA1" />
<input type="digit" class="input2" placeholder="" maxlength='11' name="massB1" />
<input type="text" class="input2 end2" disabled name="massSum1" value='{{massSum1}}' />
</view>
<view class="section3">
<input type="text" placeholder="除法" class="input3 " disabled />
<input type="digit" class="input3" placeholder="" maxlength='11' name="massA2" />
<input type="digit" class="input3" placeholder="" maxlength='11' name="massB2" />
<input type="text" class="input3 end3" disabled name="massSum2" value='{{massSum2}}'/>
</view>
</view>
<view class='buttonAll'>
<button class="submitone" formType="submit" size="mini" hover-class='button-hover-class' type='primary'>计算</button>
<button class="submittwo" formType="reset" size="mini" hover-class='button-hover-class' type='warn'>清零</button>
</view>
</form>
<view class='title'>
小程序不支持table标签,这里我们自己通过form和input来实现表格。有问题加
<text class="wechat">微信2501902996</text>
</view>
</view>
复制代码
二,再来看index.wxss文件
- 这里我不多说了,代码里都有注释
/*index.wxss */
/*实现子控件居中显示 */
.root {
display: flex;
flex-direction: column;
align-items: center;
}
/*顶部标题 */
.title {
font-size: 34rpx;
margin: 40rpx;
}
.wechat {
font-size: 44rpx;
color: red;
}
/*表格布局 */
.table{
border: 1px solid gray;
width: 600rpx;
}
/*第一行样式 */
.section-top {
display: flex;
width: 600rpx;
flex-direction: row;
}
.input-top {
border-right: 1px solid gray;
height: 50rpx;
width: 150rpx;
color: #000;
font-weight: 800;
font-size: 14px;
}
.end{
border-right: 0px;
}
/*第二行样式 */
.section2 {
display: flex;
width: 600rpx;
border-top: 1px solid gray;
flex-direction: row;
}
.input2 {
border-right: 1px solid gray;
height: 50rpx;
width: 150rpx;
color: #000;
font-weight: 800;
font-size: 14px;
}
.end2{
border-right: 0px;
}
/*第三行样式 */
.section3 {
display: flex;
width: 600rpx;
border-top: 1px solid gray;
flex-direction: row;
}
.input3 {
border-right: 1px solid gray;
height: 50rpx;
width: 150rpx;
color: #000;
font-weight: 800;
font-size: 14px;
}
.end3{
border-right: 0px;
}
.section {
display: flex;
width: 700rpx;
flex-direction: row;
}
/*表格最左列名称 */
.input-left1 {
border: 1px solid gray;
height: 50rpx;
width: 170rpx;
color: #000;
font-weight: 800;
font-size: 14px;
}
.input-text {
border: 1px solid gray;
height: 30px;
width: 20px;
color: #000;
font-weight: 800;
font-size: 14px;
}
.inputtwo {
margin-top: 2%;
}
.buttonAll {
width: 100%;
display: flex;
justify-content: space-between;
margin-top: 35rpx;
margin-bottom: 50rpx;
}
.submitone {
vertical-align: middle;
display: table-cell;
}
.submittwo {
vertical-align: middle;
display: table-cell;
}
/* 按钮提交颜色 */
.button-hover-class {
background-color: red;
}
.resTitle {
font-size: 35rpx;
}
复制代码
到这里我们就可以实现小程序表格效果了
- 既然上图提到了简单的加法和除法了,这里就相关的js算法也给大家来讲解下
- 老规矩还是先看效果图
简单说明下
- 这里实现了简单的加法和除法,同时还有表格的清零重置操作。下面直接给大家看下实现代码。代码里也有相关注释。大家应该能直接看懂
// index.js
Page({
data: {
},
// 检测是否为零
check0: function () {
wx.showModal({
title: "被除数不能为零!",
showCancel: "ture",
confirmText: "重新输入",
confirmcolor: "#ccc",
})
},
// 表单计算
formSubmit: function (e) {
var that=this;
//获取输入值
var massA1 = e.detail.value.massA1;
var massB1 = e.detail.value.massB1;
var massA2 = e.detail.value.massA2;
var massB2 = e.detail.value.massB2;
var massSum1 = 0.0;//求和
var massSum2 = 0.0;//除法的结果
if (massB2 == 0) {
this.check0();
return false;
}
massSum1 = parseInt(massA1) + parseInt( massB1);
massSum2 = parseInt(massA2) / parseInt(massB2);
console.log("massSum1:" + massSum1);
console.log("massSum2:" + massSum2);
// 给结果列赋值
this.setData({
massSum1: massSum1+"",
massSum2: massSum2+""
});
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
复制代码
结语
- 其实小程序学起来很容易,你只需要会基本的css样式和js就可以直接上手写小程序。并且小程序封装的一些组件,比如首页轮播图只需要用小程序的swiper 组件就能很好的实现自动轮播,循环轮播,定时轮播。传送门: