微信小程序里设置一个300*400的表单,在表单的左三分之一是一个图片输入框可以选择图片或者拍照输入。右侧三分之二是3行文本输入框,和两行日期输入选择框
时间: 2024-05-11 10:14:13 浏览: 57
以下是一个可能的微信小程序代码实现:
```html
<view class="container">
<view class="image-input">
<view class="image-preview" wx:if="{{imageUrl}}">
<image src="{{imageUrl}}" mode="aspectFit"></image>
</view>
<button class="image-button" bindtap="chooseImage">选择图片</button>
</view>
<view class="form-input">
<view class="input-row">
<text class="input-label">姓名:</text>
<input class="input-field" bindinput="onNameInput"></input>
</view>
<view class="input-row">
<text class="input-label">电话:</text>
<input class="input-field" bindinput="onPhoneInput"></input>
</view>
<view class="input-row">
<text class="input-label">邮箱:</text>
<input class="input-field" bindinput="onEmailInput"></input>
</view>
<picker mode="date" start="{{startDate}}" end="{{endDate}}" value="{{dateValue}}" bindchange="onDateChange">
<view class="input-row">
<text class="input-label">生日:</text>
<text class="input-value">{{dateString}}</text>
</view>
</picker>
</view>
</view>
```
```css
.container {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
height: 400rpx;
}
.image-input {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
}
.image-preview {
width: 200rpx;
height: 200rpx;
margin-bottom: 20rpx;
}
.image-button {
width: 120rpx;
height: 60rpx;
background-color: #007aff;
color: #fff;
border-radius: 30rpx;
line-height: 60rpx;
text-align: center;
}
.form-input {
flex: 2;
display: flex;
flex-direction: column;
align-items: stretch;
justify-content: center;
height: 100%;
padding: 20rpx;
}
.input-row {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
margin-bottom: 20rpx;
}
.input-label {
width: 80rpx;
font-size: 28rpx;
color: #333;
}
.input-field {
flex: 1;
height: 60rpx;
border: 1rpx solid #ddd;
border-radius: 10rpx;
font-size: 28rpx;
color: #333;
padding: 0 20rpx;
}
.input-value {
flex: 1;
height: 60rpx;
line-height: 60rpx;
font-size: 28rpx;
color: #333;
padding-left: 20rpx;
}
```
```javascript
Page({
data: {
imageUrl: '',
name: '',
phone: '',
email: '',
startDate: '1900-01-01',
endDate: '2100-12-31',
dateValue: '',
dateString: ''
},
chooseImage: function() {
var that = this
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
that.setData({
imageUrl: res.tempFilePaths[0]
})
}
})
},
onNameInput: function(e) {
this.setData({
name: e.detail.value
})
},
onPhoneInput: function(e) {
this.setData({
phone: e.detail.value
})
},
onEmailInput: function(e) {
this.setData({
email: e.detail.value
})
},
onDateChange: function(e) {
var dateValue = e.detail.value
var date = new Date(dateValue)
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var dateString = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day)
this.setData({
dateValue: dateValue,
dateString: dateString
})
}
})
```
解释一下代码的各个部分:
- HTML 部分使用了微信小程序的组件和属性,实现了题目所要求的布局和输入框。其中,图片选择功能使用了 `wx.chooseImage` 接口,文本输入框和日期选择框使用了 `input` 和 `picker` 组件。样式部分使用了 CSS3 的 Flexbox 布局,使得表单在不同尺寸的设备上都能有合适的显示效果。
- JavaScript 部分定义了一个名为 `Page` 的对象,其中的 `data` 属性存储了表单中各个输入框的值。在 `chooseImage` 函数中,调用了 `wx.chooseImage` 接口实现了图片选择的功能,并将选择的图片路径保存到 `data` 中。在文本输入框和日期选择框的 `bindinput` 和 `bindchange` 事件中,分别更新了对应的输入框的值。在日期选择框的 `onDateChange` 函数中,将选择的日期转换成字符串,并更新到 `data` 中的 `dateString` 属性中,以便在页面中显示。
阅读全文