uni-app uni-ui组件库中uni-forms-item的label与uni-data-checkbox不对齐问题

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app uni-ui组件库中uni-forms-item的label与uni-data-checkbox不对齐问题

开发环境 版本号 项目创建方式
Windows HBuilderX

产品分类:uniapp/H5


PC开发环境操作系统:Windows


PC开发环境操作系统版本号:windows10


HBuilderX类型:正式


HBuilderX版本号:3.4.7


浏览器平台:Chrome


浏览器版本:102.0


示例代码:

<uni-forms-item name="gender" label="性别" labelAlign="center">  
    <uni-data-checkbox :multiple="false" v-model="formData.gender" selectedColor="red" selectedTextColor="red" :localdata="formData.genderRange" mode="button" ></uni-data-checkbox>  
</uni-forms-item>

操作步骤:

<template>
<view>  
    <view class="avatar flex align-center justify-center">  
        <uni-file-picker v-model="imageValue" limit="1" mode="grid" fileMediatype="image"  
            :imageStyles="imageStyles">  
            <view class="avatar-seat flex align-center justify-center">头像</view>  
        </uni-file-picker>  
    </view>  
    <view >  
        <uni-forms :modelValue="formData" ref="form" :rules="rules">  
            <uni-forms-item name="name">  
                <uni-easyinput :inputBorder="false" type="text" v-model="formData.name" placeholder="请输入注册用户名" class="py-1 input-bg-color"></uni-easyinput>  
            </uni-forms-item>  
            <uni-forms-item name="password">  
                <uni-easyinput type="password" :inputBorder="false" v-model="formData.password" placeholder="请输入注册密码" class="py-1 input-bg-color"></uni-easyinput>  
            </uni-forms-item>  

            <uni-forms-item name="gender" label="性别" labelAlign="center">  
                <uni-data-checkbox :multiple="false" v-model="formData.gender" selectedColor="red" selectedTextColor="red" :localdata="formData.genderRange" mode="button" ></uni-data-checkbox>  
            </uni-forms-item>  

            <button class="submit" @tap="submit">注册</button>  
        </uni-forms>  
    </view>  
</view> 
</template>

<script>
export default {
data() {
return {
imageValue: [],
imageStyles: {
height: 120,
width: 120,
border: {
width: '2rpx',
style: 'solid',
radius: '20rpx',
color: "#a5a5a5"
}
},
formData: {
name: '',
password: '',
gender:0,
genderRange:[
{"value":0,"text":"未知"},
{"value":1,"text":"男"},
{"value":2,"text":"女"},
]
},
rules: {
name: {
rules: [{
required: true,
errorMessage: '请输入注册用户名'
}, {
minLength: 3,
maxLength: 30,
errorMessage: '用户名长度在 {minLength} 到 {maxLength} 个字符',
}]
},
password: {
rules: [{
required: true,
errorMessage: '请输入注册密码'
}, {
minLength: 3,
maxLength: 30,
errorMessage: '密码长度在 {minLength} 到 {maxLength} 个字符',
}]
}
}
}
},
methods: {
async submit(){
try{
const res=await this.$refs.form.validate();
console.log(res);
}catch(e){  
console.log('表单错误:',e);  
}  
}
}
}
</script>

<style scoped>
.avatar {
height: 30vh;
}
.avatar-seat {  
background-color: var(--avatar-default-color);  
width: 100%;  
height: 100%;  
}
.submit{
width: 96vw;  
height: 6vh;  
text-align: center;  
}
</style>

3 回复

这问题解决了么,我看官方的示例上也没对齐,我今天也遇到了


我最后用的checkbox开启flex解决的

uni-app 中使用 uni-ui 组件库时,可能会遇到 uni-forms-itemlabeluni-data-checkbox 不对齐的问题。这通常是由于样式问题导致的。以下是一些可能的解决方案:

1. 检查 uni-forms-itemlabel 宽度

uni-forms-itemlabel 默认宽度可能不足以容纳 uni-data-checkbox 的内容。你可以通过设置 label-width 属性来调整 label 的宽度。

<uni-forms-item label="选择项" label-width="100px">
  <uni-data-checkbox v-model="selected" :localdata="options"></uni-data-checkbox>
</uni-forms-item>

2. 使用 flex 布局

你可以通过自定义样式来使用 flex 布局,使 labeluni-data-checkbox 对齐。

<template>
  <uni-forms-item class="custom-form-item">
    <template #label>
      <span class="custom-label">选择项</span>
    </template>
    <uni-data-checkbox v-model="selected" :localdata="options"></uni-data-checkbox>
  </uni-forms-item>
</template>

<style scoped>
.custom-form-item {
  display: flex;
  align-items: center;
}

.custom-label {
  width: 100px; /* 根据需要调整宽度 */
  margin-right: 10px; /* 根据需要调整间距 */
}
</style>

3. 调整 uni-data-checkbox 的样式

如果 uni-data-checkbox 的样式导致不对齐,你可以通过自定义样式来调整。

<template>
  <uni-forms-item label="选择项">
    <uni-data-checkbox v-model="selected" :localdata="options" class="custom-checkbox"></uni-data-checkbox>
  </uni-forms-item>
</template>

<style scoped>
.custom-checkbox {
  margin-left: 10px; /* 根据需要调整间距 */
}
</style>

4. 使用 uni-formslabel-position 属性

uni-forms 组件提供了 label-position 属性,可以设置 label 的位置,可能有助于对齐。

<uni-forms label-position="top">
  <uni-forms-item label="选择项">
    <uni-data-checkbox v-model="selected" :localdata="options"></uni-data-checkbox>
  </uni-forms-item>
</uni-forms>

5. 检查全局样式

有时全局样式可能会影响组件的对齐。你可以检查是否有全局样式影响了 uni-forms-itemuni-data-checkbox,并适当调整。

6. 使用 uni-group 包裹

uni-group 组件可以帮助更好地管理表单项的布局,可能有助于对齐。

<uni-group title="表单组">
  <uni-forms-item label="选择项">
    <uni-data-checkbox v-model="selected" :localdata="options"></uni-data-checkbox>
  </uni-forms-item>
</uni-group>

7. 使用 uni-rowuni-col

如果你需要更复杂的布局,可以使用 uni-rowuni-col 来创建网格布局。

<uni-row>
  <uni-col span="6">
    <uni-forms-item label="选择项"></uni-forms-item>
  </uni-col>
  <uni-col span="18">
    <uni-data-checkbox v-model="selected" :localdata="options"></uni-data-checkbox>
  </uni-col>
</uni-row>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!