前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序项目小点一

微信小程序项目小点一

作者头像
生南星
发布2019-07-25 16:06:00
9470
发布2019-07-25 16:06:00
举报
文章被收录于专栏:生南星生南星

一. 微信小程序自定义导航栏

在微信小程序中,自定义导航栏的颜色 可以在app.json的window里面添加navigationBarBackgroundColor属性。

但是颜色只能为十六进制颜色码,不能使用rgb,或者rgba.。

为了满足更多用户的需求,微信官方给出了一个navigationStyle属性。

官方文档:navigationStyle 导航栏样式,仅支持 default/custom。custom 模式可自定义导航栏,只保留右上角胶囊状的按钮)。

1. 在app.json window 增加 navigationStyle:custom ,所有页面的顶部导航栏就会消失,保留右上角胶囊状的按钮。当然如果只想使一个页面的导航栏消失,只需要在这个页面对应的 .json 文件中进行配置 "navigationStyle": "custom" 即可。

另外,胶囊体颜色能否改变呢? 胶囊体目前只支持黑色和白色两种颜色 在app.josn window 或者对应的某一个页面的 .json 文件配置中加上 "navigationBarTextStyle":"white/black"。

2. 如何适配不同机型?

使用 wx.getSystemInfoSync()['statusBarHeight'] 则能获取到顶部状态栏的高度,单位为px.

代码语言:javascript
复制
在app.js里面
App({
    globalData: {
      statusBarHeight:wx.getSystemInfoSync()['statusBarHeight']
    }
})

3. 在你需要自定义导航栏的 .wxml 页面也出自定义导航栏的结构:

代码语言:javascript
复制
WXML 自定义顶部状态栏div结构
<view class="custom flex_center" style="padding-top:{{statusBarHeight}}px">
  <view class="colse">
    <image src="../../images/colse.png"></image>
  </view>
  <view class="app-file">提交申请</view>
</view>
<view class="empty_custom" style="padding-top:{{statusBarHeight}}px"></view>

4. app.css 全局css中设置样式:

代码语言:javascript
复制
/* 自定义导航 */
.custom{
  position: fixed;
  width: 100%;
  top: 0;
  left: 0;
  height: 45px;
  background: #2B3541;
  z-index: 999;
  display: flex;
  align-items: center;
}
.custom .colse image{
  width: 40rpx;
  height: 40rpx;
}
.custom .colse{
  display: flex;
  align-items: center;
  justify-content: center;
  border-right: 2px solid #fff;
  box-sizing: border-box;
  padding: 5rpx 25rpx;
  margin-right: 25rpx;
}
.custom .app-file{
  color: #fff;
  font-size: 34rpx;
  font-weight: 500;
}
.empty_custom{
  height: 45px;
  width: 100%;
}

5. 在index.js 或 对应页面的 .js 文件中取出statusBarHeight值:

代码语言:javascript
复制
const app = getApp();
Page({
    data:{
        statusBarHeight: app.globalData.statusBarHeight
    }
})

最后的导航栏效果如下图:

参考博客:https://blog.csdn.net/weixin_39872588/article/details/80500164

二. 微信小程序点击切换样式

1. 给选定的标志 {{}} & data-num

代码语言:javascript
复制
<view class='oil_s' catchtap='changeOil'>
    <view class='{{num==1?"active":""}}' data-num='1'>92#汽油</view>
    <view class='{{num==2?"active":""}}' data-num='2'>95#汽油</view>
    <view class='{{num==3?"active":""}}' data-num='3'>0#汽油</view>
</view>

或者给每一个里边的view绑定,如下:

代码语言:javascript
复制
<view class='oil_s' >
   <view class='{{num==1?"active":""}}' data-num='1' catchtap='changeOil'>92#汽油</view>
   <view class='{{num==2?"active":""}}' data-num='2' catchtap='changeOil'>95#汽油</view>
   <view class='{{num==3?"active":""}}' data-num='3' catchtap='changeOil'>0#汽油</view>
</view>

唯一的区别是给事件传入的 e 不同。 绑定在外面的块的事件的e ,只有 target才会有dataset的值。 绑定给每一个小块的事件的e ,不管是 target还是currentTarget都会有dataset的值。

2. 写好初始值

一开始选定哪一个,就给判断的那个变量哪个值

代码语言:javascript
复制
data: {
    num:1
 },

3. 写好事件处理函数

代码语言:javascript
复制

changeOil:function(e){
    console.log(e);
    this.setData({
      num:e.target.dataset.num
    })
  }

总结:

1.通过修改类名 <view class="{{className}}"></view>

2.添加一个类名,覆盖前面的样式 <view class="helplist {{cur}}"></view>

3.修改行内样式,覆盖前面的样式 <view class="helplist" style="{{currentStyle}}"></view>

第二种方式就是今天写的这种方式,第三种方式最好不要使用,毕竟我们要做一个性能佳的小程序。

参考博客:https://blog.csdn.net/weixin_33951761/article/details/86991828

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生南星 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档