微信小程序之自定义表单组件(radio)

这篇具有很好参考价值的文章主要介绍了微信小程序之自定义表单组件(radio)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

最近在做项目的时候遇到一个问题,那就是微信的官方表单组件的可扩展性不强,无法达到设计稿所要求的效果,所以想到了用自定义组件的方法自定义一个表单组件。

(自定义组件其实往往用在需要复用的地方,比如每个页面都有一样的头部和底部,那么我们就可以把它们封装到自定义组件中,这样就不用每个页面都复制粘贴一样的一堆代码了)

开始:

下面以自定义radio组件为例:

官方radio的样式只能修改color(当然要修改其他样式也是有办法的,不过较为麻烦,这里先不提),扩展性不强。

微信小程序之自定义表单组件(radio)

而我想要达到类似于button样式的效果↓

微信小程序之自定义表单组件(radio)

那么就需要自定义一个radio出来了。

第一步:

首先在该目录下新建一个components 文件夹(当然文件夹命名也可以取其他,不过命名为components方便辨认)

微信小程序之自定义表单组件(radio)

再在components里新建一个文件夹用于放自己的自定义组件,这里我统一命名为myradio

微信小程序之自定义表单组件(radio)

鼠标移到myradio处右键选择"新建 Component",接着自动生成如下四个文件

微信小程序之自定义表单组件(radio)

第二步:

分别在myradio.wxml、myradio.wxss和myradio.js中写入以下代码↓

myradio.wxml:

//class里是选中与未选中的样式,point是鼠标的点击事件名,data-index是在point这个鼠标点击事件的返回值data中传入名为index的值
<view class="radio">
    <view class="{{currentIndex==1?'item_active':'item'}}" bindtap="point" data-index="1">男</view>
    <view class="{{currentIndex==0?'item_active':'item'}}" bindtap="point" data-index="0">女</view>
</view>

 myradio.wxss:

注意自定义组件中的wxss的选择器最好写类选择器,否则会警告、甚至出现意料之外的副作用。

//盒子使用弹性布局(给父盒子添加display:flex)
.radio{
   width: 580rpx;
   height: 80rpx;
   display: flex;
   justify-content: center;
}
.item{
    width: 200rpx;
    height: 80rpx;
    border-radius: 20rpx;
    margin: 0 30rpx;
    background-color:lightgrey;
    color: white;
    display: flex;
    justify-content: center;
    align-items: center;
}
.item_active{
    width: 200rpx;
    height: 80rpx;
    border-radius: 20rpx;
    margin: 0 30rpx;
    background-color:#503E9D;
    color: white;
    display: flex;
    justify-content: center;
    align-items: center;
}

myradio.js:

Component({
    // 使自定义组件有类似于表单控件的行为
    behaviors: ['wx://form-field'],
    /**
     * 组件的属性列表
     */
    properties: {
        value:{//这里的属性名之所以取名value是因为表单控件有name和value属性
            type:String,
            value:"1"
        }
    },

    /**
     * 组件的初始数据
     */
    data: {
        currentIndex:1
    },

    /**
     * 组件的方法列表
     */
    methods: {
        point(e){
            const {index}=e.currentTarget.dataset;
            if(index==1){
                this.setData({//properties和data里的值都可用setData设置
                    value:"1",//1表示男
                    currentIndex:1
                })
            }
            else{
                this.setData({
                    value:"2",//2表示女
                    currentIndex:0
                })
            }
        }
    }
})

微信小程序之自定义表单组件(radio)

第三步:

在要引入该自定义组件的页面的json文件中写上↓

{
    "usingComponents": {
        "myradio":"/components/myradio/myradio"//这里我把该组件的标签也命名为myradio
    }
}

 然后在要引入的页面的wxml文件中用myradio标签引入即可,比如↓

<view>//这里包裹该自定义组件的大盒子样式未给出,可以根据自身需求写样式
   <text>性别</text>
   <myradio name="gender" value="1"></myradio>//myradio标签
</view>

最终效果举例:(这样就做好啦!)

微信小程序之自定义表单组件(radio)文章来源地址https://www.toymoban.com/news/detail-485816.html

到了这里,关于微信小程序之自定义表单组件(radio)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小白开发微信小程序10--表单组件之checkbox-group/radio-group/label

    微信团队为开发者提供了一系列基础组件,开发者可以通过组合这些基础组件进行快速开发。小程序中的组件也是非常丰富的,开发者可以基于组件快速搭建出漂亮的页面结构。小程序中的组件其实相当于网页中的HTML标签,只不过标签名字不一样。官方把小程序的组件分为了

    2024年02月04日
    浏览(32)
  • 微信小程序修改radio的样式,以及获取radio选择的值(自定义radio样式)

     博主介绍: 本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮

    2024年01月15日
    浏览(32)
  • 微信小程序之自定义模态弹窗(带动画)实例 —— 微信小程序实战系列(8)(2)

    api如下: 示例: 这样的模态弹窗,充其量只能做个alert,提示一下信息。 但是并不能使用它来处理复杂性的弹窗业务,因此写了Michael从新自定义了一个,采用了仿原生的样式写法 wxml: button 弹窗标题 标题 标题 标题 标题 备注 确定 wxss: / button / .btn { width: 80%; padding: 20rpx

    2024年04月11日
    浏览(27)
  • uniapp自定义radio的样式,适用于微信小程序

    uniapp内置组件是有官方定义的样式,下面如图所示。 但是注意一点: radio的默认颜色,在不同平台不一样。微信小程序是绿色的,抖音小程序为红色,其他平台是蓝色的。更改颜色使用color属性。 项目中需求的样式是不同于内置radio的 在这里打算自己写一个单选按钮,实现如

    2024年04月11日
    浏览(32)
  • uniapp做微信小程序,自定义checkbox和radio的样式

    用uniapp做个微信小程序,其中有用到自定义checkbox和radio的样式;代码记录如下: 自定义checkbox 在App.vue中写入样式: 在代码中引用: 自定义radio样式: 如果要全局改变radio的样式,需要将样式代码写在App.vue中,代码如下: 代码中引用: 如果不在全局改变radio样式,只在单个

    2024年02月15日
    浏览(30)
  • uni-app 微信小程序之自定义中间圆形tabbar

    首先在 pages.json 文件中,新建一个 tabbar 页面 此页面主要是写 tabbar的html样式和布局,引用主页面代码,通过 v-if 控制进行展示 index , search , maim , news , me 一级页面 css 样式文件太多了就不贴出来了

    2024年02月03日
    浏览(40)
  • 05-微信小程序常用组件-表单组件

    05-微信小程序常用组件-表单组件 微信小程序包含了六大组件: 视图容器 、 基础内容 、 导航 、 表单 、 互动 和 导航 。这些组件可以通过WXML和WXSS进行布局和样式设置,从而构建出丰富的小程序界面和交互体验。 其中,视图容器组件包括view和scroll-view等,用于实现页面的

    2024年02月12日
    浏览(37)
  • 微信小程序常用表单组件

       button 为按钮组件,是常用的表单组件之一,用于事件的触发以及表单的提交。其属性表如下所示。 代码示例:    checkbox 为复选框组件,常用于在表单中进行多项数据的选择。复选框的 checkbox-group 为父控件,其内部嵌套若干个 checkbox 子控件。    checkbox-group 属性如

    2024年02月09日
    浏览(32)
  • 微信小程序(十)表单组件(入门)

    注释很详细,直接上代码 上一篇 新增内容: 1. type 属性指定表单类型 2. placeholder 属性指定输入框为空时的占位文字 源码: form.wxml form.wxss 效果演示: 1.不同的 type 属性所决定的输入法键盘 密码类型 因为会屏蔽投屏软件所以 屏幕会黑 ,在实际手机里面显示的是常见的 密码

    2024年01月25日
    浏览(35)
  • 微信小程序(十一)表单组件(进阶)

    注释很详细,直接上代码 上一篇 新增内容:(涉及内容较多,建议细看源码) 1. radio-group 的使用与数据处理 2. checkbox-group 的使用与数据处理 3. picker 的使用与数据同步处理(此处示范了地域与日期) 源码: form.wxml form.js form.wxss util.js 效果演示: 下一篇

    2024年01月24日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包