微信小程序 实现类似button或navigator的点击效果

通过封装一个带有透明度变化的组件,实现小程序中view元素的点击反馈效果,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面,想看效果图?没有。搞那玩意太费时间(主要还是不会),无图,咱就言*啦,你能咋地?

写小程序的时候,你有没有这种困惑,比如,写两字“跳转”,你既不跳转(navigator),你也不想用button,我就想用view,但还想处理点击事件,哎,我气死你。但是,你是否苦于,没有点击效果,点了就是点了,没点反应,很生硬有没有?你想说是不是傻逼?hover-class不知道?小弟知道啊,小弟也用了,是不是设置起来很麻烦?每一个都要处理?小弟有一个写着项目突然脑子好使了,透明度!对,就是透明度。不废话了:

封装一个组件,就叫它A,方便使用,想用的时候,直接<A></A>。你可别学我起个名叫A。。。。。

组件四个文件如下:

A .js:


Component({
  externalClasses: ['A-class'],  //外部样式类,不懂得去看官方文档
  /**
   * 组件的属性列表
   */
  properties: {
    
  },

  /**
   * 组件的初始数据
   */
  data: {
    _opacity: 1,   //透明度,初始值为1,即全透明
  },

  /**
   * 组件的方法列表
   */
  methods: {

    //手指按下事件,把透明度给它改成0.5,即一半透明,就是模糊一下,达到点击的效果
    _touchStart:  function (e)  {
      this.setData({
        _opacity:0.5
      })
    },

    //手指抬起,透明度给它设置会1,天空又透彻明亮了有木有!
    //这里设置了一个定时器,手指抬起后0.2秒在把透明度设置回去,
    //因为快速点击效果不是很明显,根据自己的需求自己配置时间
    _touchEnd:  function (e)  {
      setTimeout(()=>{
        this.setData({
          _opacity: 1
        })
      },200)
    }, 
  }
})

A .json:

{
  "component": true,
  "usingComponents": {}
}

A .wxml:

<view class="A-class" style="opacity:{{_opacity}};" bindtouchstart="_touchStart" 
bindtouchend="_touchEnd" >
<slot></slot>  
</view>

A .wxss:   没错  这个文件啥都写,嘤嘤嘤。

好了,下面可以使用了。假设在页面B使用。

B .json:

{
  "navigationBarTitleText": "",
  "usingComponents": {
    "A":"../../components/A/A"
  }
}

B .wxml:

<A A-class="你自定义样式" bindtap="点击事件">
      //这里面你想写啥写啥,什么view啦,text啦,image啦。。。。
</A>

去试试效果吧,我没有效果图,我不会弄(其实是懒),嘤嘤嘤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值