【实战】前端必会 —— 微信小程序右上角胶囊按钮(标题设置透明后的处理)

针对微信小程序中自定义导航栏时,搜索框需要适配不同机型尤其是刘海屏的胶囊按钮问题,通过调用wx.getMenuButtonBoundingClientRect()获取胶囊按钮的布局信息,并结合wx.getSystemInfoSync()获取屏幕宽度,动态计算并设置搜索框的样式,确保其在顶部正确对齐且只占据剩余宽度。这种方法能有效解决不同设备间显示不一致的问题。

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



一、问题

在这里插入图片描述
微信小程序右上角的胶囊按钮在正常情况下(正常设置 navigationBarTitleText)没有影响

但是标题部分设置透明(“navigationStyle”: “custom”,)后,问题就出现了

我这边的需求是在最顶部增加一个搜索框,由于存在胶囊按钮,为了美观,搜索框只占剩余宽度,且高度齐平,但是对于不同机型尤其是有刘海屏的机型,差别会很大

二、解决

使用 wx.getMenuButtonBoundingClientRect() 获取距上高度和宽度,并动态绑定到 wxml 对应 style属性中:

<van-search
  class="search"
  value="{{ keyword }}"
  shape="round"
  background="#00000000"
  placeholder="搜索感兴趣的内容"
  bind:change="onChange"
  bind:search="onSearch"
  clearable
  style="{{searchBarStyle}}"
/>
Page({
  data: {
    searchBarStyle: `top: ${wx.getMenuButtonBoundingClientRect().top - 10}px; width: ${wx.getSystemInfoSync().screenWidth - wx.getMenuButtonBoundingClientRect().width}px;`,
    ...
  }
})

效果:
在这里插入图片描述


借图:
在这里插入图片描述

拓展阅读:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序边界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值