【Uni-app‘解决搜索框与导航栏胶囊自适应对齐‘】

<template>
  <view>
    <!-- 创建一个空元素 -->
    <view :style="{height:top+'px'}">
    </view>
    <!-- 添加搜索框元素 -->
    <view class="searchAll">
      <uni-icons type="left" style="font-size: 20px;"></uni-icons>
      <view class="search" :style="{height:pillheight+'px'}">
        <uni-search-bar :radius="100" @confirm="search"></uni-search-bar>
      </view>
    </view>
</template>

简单看一下页面布局,最上方是一个空盒子,下面的盒子用来盛放搜索框以及图标

先从data里面设置一下默认的高度和宽度,然后使用uni.getSystemInfoSync的API获取顶部状态栏的高度

// 状态栏高度
       capsuleHeight: 20,
       navBarHeight: 45,
       // 可视区域高度
       windowWidth: 375,
       // 胶囊高度
       pillheight:0,
       top: 0,
       val: ''

uni.getMenuButtonBoundingClientRect获取胶囊的高度和顶部的距离,然后将搜索框的宽高和顶部的距离绑定到胶囊的对应属性上

具体代码如下

<template>
  <view>
    <!-- 创建一个空元素 -->
    <view :style="{height:top+'px'}">
    </view>
    <!-- 添加搜索框元素 -->
    <view class="searchAll">
      <uni-icons type="left" style="font-size: 20px;"></uni-icons>
      <view class="search" :style="{height:pillheight+'px'}">
        <uni-search-bar :radius="100" @confirm="search"></uni-search-bar>
      </view>
    </view>

</template>

<script>

  export default {

data(){

return {

// 状态栏高度
       capsuleHeight: 20,
       navBarHeight: 45,
       // 可视区域高度
       windowWidth: 375,
       // 胶囊高度
       pillheight:0,
       top: 0,
       val: ''

}

}

onLoad() {
      const info = uni.getSystemInfoSync()
      const a = uni.getMenuButtonBoundingClientRect()
      this.top = a.top 
      // console.log(info);
      console.log(a);
      this.pillheight = a.height
      this.capsuleHeight = info.statusBarHeight
      console.log(this.capsuleHeight);
      this.windowWidth = info.windowWidth
      // #ifndef H5 || APP-PLUS || MP-ALIPAY
      const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
      this.windowWidth = menuButtonInfo.left
      // #endif
    }

}

</script>

<style>

  .searchAll {
    margin-left: 16px;
    display: flex;
    justify-content: start;
    .search {
      margin-left: 16px;
      text-align: center;
      line-height: 100%;
      width: 50%;
      border: 1px solid #CCCCCC;
      border-radius: 50px;
    }
  }

</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aic山鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值