微信小程序:自定义导航栏

微信小程序:自定义导航栏,第1张

一、在 appjson 的 window 对象中定义导航的样式:

这样你会发现所有页面的导航栏都不见了。如果还有其他页面需要导航栏的,那就模仿小程序的导航栏按照以下步骤。

二、首先要在 appjs 的 onLaunch 方法里面获取手机状态栏高度,全局定义导航高度 navHeight :

注意!!!全局定义导航高度 navHeight !!!

我发现很多人会遇到 navHeight 是 undefined 这个问题。在这里说明一下,这个 navHeight 需要在 appjson 里面定义好:

三、在需要导航的 页面 Page 拿到全局变量导航高度:

四、页面展示:

五、附上样式,可以写在 appwxss :

六、界面效果:

wxml内容:

<view bindtap="a" data-f="{{flag}}">123</view>

<!-- wx:for="{{数组}}" 循环需要绑定key wx:key="index"-->

<!-- 自带定义 item 表示数组的每一项 index 表示数组的索引 -->

<!-- 使用wx:for-item修改每一项值的key -->

<!-- 使用wx:for-index修改每一项值的index -->

<view wx:for="{{list}}" class="t" wx:key="i" 

    wx:for-item="r" wx:for-index="i"

    style="color:{{rstyFlag'red':''}};"

    data-i="{{i}}"

    bindtap="choose"

>

    {{rname}}--{{i}}

</view>

js内容:

data: {

        flag:1,

        list:['冰墩墩','雪融融','小泡菜'],

        list:[{

            name:'冰墩墩',

            styFlag:true

        },{

            name:'雪融融',

            styFlag:false

        },{

            name:'小泡菜',

            styFlag:false

        }]

    },

    choose:function(e){

        let { currentTarget:{ dataset:{i} } } = e;

        / 第一步获取点击的当前的内容的索引 /

        consolelog(i)

        / 排他 把所有的先置空 /

        thisdatalistforEach(r=>{

            rstyFlag = false

        })

        thisdatalist[i]styFlag = true;

        / 数据变了 视图没变 必须要使用setData实现数据和视图的双向数据绑定 /

        thissetData({

            list:thisdatalist

        })

    },

    a:function(e){

        consolelog(e)

    },

效果:

wxml内容:

<button bindtap="go1" style="margin: 3px;">张三</button>

<button bindtap="go2" style="margin: 3px;">李四</button>

<button bindtap="go3" style="margin: 3px;">24号</button>

<button bindtap="go4" style="margin: 3px;">不带参数</button>

<button bindtap="goBack">返回上一级</button>

<!-- wx:if 和 wx:elif 以及wx:else之间不可以被其他的标签打断 -->

<block>

    <view wx:if="{{msg=='zhangsan'}}" class="t">欢迎回来主人</view>

    <view wx:elif="{{msg=='lisi'}}" class="t">家里水龙头没有坏不要过来</view>

    <view wx:elif="{{msg=='24'}}" class="t">您好欢迎为您服务</view>

    <view wx:else class="t">显示家里没人</view>

</block>

js内容:

Page({

    /

      页面的初始数据

     /

    data: {

        msg:""

    },

    goBack:function(){

        wxnavigateBack()

    },

    /

      生命周期函数--监听页面加载

     /

    onLoad: function (options) {

        consolelog(optionsname)

        / 多次使用setData会影响性能 尽量把多次setData 使用一次setData来实现

        尽量少的使用setData来提高小程序的性能 /

        thissetData({

            msg:optionsname

        })

        / 如果名字叫张三 页面显示欢迎回来主人 /

        / 如果名字叫李四 页面显示家里水龙头没有坏不要过来 /

        / 如果名字叫24号 页面显示您好欢迎为您服务 /

        / 都不是 显示家里没人 /

    },

    /

      生命周期函数--监听页面初次渲染完成

     /

    onReady: function () {

    },

    /

      生命周期函数--监听页面显示

     /

    onShow: function () {

    },

    /

      生命周期函数--监听页面隐藏

     /

    onHide: function () {

    },

    /

      生命周期函数--监听页面卸载

     /

    onUnload: function () {

    },

    /

      页面相关事件处理函数--监听用户下拉动作

     /

    onPullDownRefresh: function () {

    },

    /

      页面上拉触底事件的处理函数

     /

    onReachBottom: function () {

    },

    /

      用户点击右上角分享

     /

    onShareAppMessage: function () {

    }

})

{

  "pages": [

    "pages/index/index",

    "pages/forpage/forpage",

    "pages/mypage/mypage",

    "pages/logs/logs",

    "pages/fenglei/fenglei"

  ],

  "window": {

    "backgroundTextStyle": "dark",

    "navigationBarBackgroundColor": "#FF0000",

    "navigationBarTitleText": "kw47page",

    "navigationBarTextStyle": "white"

  },

  "tabBar": {

    "color": "#fff",

    "selectedColor": "#FFCA28",

    "backgroundColor": "#000",

    "list": [{

      "pagePath": "pages/index/index",

      "text": "首页",

      "iconPath": "",

      "selectedIconPath": ""

    }, {

      "pagePath": "pages/logs/logs",

      "text": "日志",

      "iconPath": "",

      "selectedIconPath": ""

    }]

  },

  "style": "v2",

  "sitemapLocation": "sitemapjson"

}

效果图:

需求: 当滚动到某个view的时候将view置顶 当滚动条回到view开始的位置下面时再回到原位置

效果:

实现: 使用 onPageScroll 方法首先检测到滚动的位置 escrollTop 在滚动的同时来获取view与顶部的距离,因为这个view 上面的view 是不固定的可以减少 或者增多所以要时时来检测变化的高度

判断 如果离顶部距离 为0 时 将view置顶 使用动态样式来判断

同时在检测顶部距离为0的时候记录一下高度 然后当滚动高度等于记录的高度的时候再讲view 返回

备注 条条大路通罗马 小弟浅见

下面呈上3个微信小程序官方链接:

>

页面中view设置width:100%之后,页面右边会多出一块白区域,并且可以左右滑动,解决方法是给这个view加一个box-sizing:border-box;

2

直接给最外层的view设置一个overflow-x:hidden; //裁剪 div 元素中内容的左/右边缘 - 如果溢出元素的内容区域的话进行隐藏

3

在json文件里面加 "disableScroll": true

4

给page一个d性盒子 page { width:100%; display: flex; } 然后将page下面的根元素盒子宽度设为100%,overflow:

微信 小程序 转发涉及以下4个方法:

1、PageonShareAppMessage({})

设置右上角“转发”配置,及转发后回调函数返回 shareTicket 票据

2、wxshowSahreMenu()

用户点击右上角后,显示“转发”按钮

3、wxhideShareMenu()

隐藏转发按钮,无视 PageonShareAppMessage({})

4、wxgetShareInfo({})

根据 shareTicket 获取已加密的群信息

把转发流程切分:转发前配置->转发时->转发到群组后打开->二次转发

转发流程图:

这里写描述

U1: 用户

T1,T2,T3:表示转发票据,即 shareTicket

G1,G2,G3:群组

1转发前配置

在页面 onLoad 方法添加

withShareTicket 为 true 时,表示允许转发时是否携带 shareTicket。

shareTicket 是获取转发目标群信息的票据,只有拥有 shareTicket 才能拿到群信息,用户每次转发都会生成对应唯一的shareTicket 。

shareTicket 有两个用途:

用户主动转发后,获取转发到目标群群信息,对应上图UI。

用户在群组中打开小程序,获取群组信息,对应上图 G1 群组中的用户。

2转发时获取群信息

当某个小程序被转发到群组后,开发者想获取到转发目标群组信息,将用户和群组做某种绑定关系(openId + openGid)。

shareTickets 是一个数组,每一项是一个 shareTicket ,对应一个转发对象,转发给用户不会包含shareTicket。

拿到 shareTicket 之后,使用 wxgetShareInfo({}) 方法传入 shareTicket 参数,wxgetShareInfo({}) 里回调函数中包含 已加密的群信息和 向量IV。

3转发到群组后打开

用户将小程序转发到微信群组后,群成员打开小程序,通过 shareTicket,开发者就能将群成员和群组绑定起来(openId + openGid),基于群组关系,小程序有更多的应用场景,例如:王者荣耀群排行,摩拜单车。

在群组中打开小程序,页面onLoad 或 onShow 方法包含 scene 和 shareTicket,需要判断 scene 是否为1044,如果不是则不包含 opt 中 shareTicket 参数。

4二次转发

二次转发重复前3个步骤,没什么可说的,但是有一个方向值得探讨,可否把小程序转发路径比作转发链,进而生成转发树,用数据结构方法(树、马尔科夫链)处理发现群组与群组,群组与成员之间微妙关系。

如开头那张图,我们很容易看出转发链和转发树。

转发链:U1 > G1 > G2

转发树:U1 > G1 > G2 & G3

微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。同时提供一系列工具帮助开发者快速接入并完成小程序开发。关于如何注册配置就不多言了,本文主要还是体验了下 web-view 的功能。

有了这个组件之后,小程序可以很好的嵌入一些页面,可以环境小程序 size 告急的问题,同样也使开发更加便捷,毕竟小程序开发者基本都对前端开发较为了解。

说再多还是需要去看官方文档, web-view文档 ,

首先就需要注意:兼容问题, 版本库和对应版本比例

目前而言,基本 80% 的用户会升级微信,所以其实不必担心版本问题,官方截止 2017-12-01 提供的数据也说明 88% 的用户支持 web-view 。

web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面;

属性: src 是 String 类型,是一个网站的 url ,默认值是 none , webview 指向网页的链接。需登录小程序管理后台配置域名白名单。

可以配合 Page 实例的 onLoad 方法来获取 url 的具体值,也就是一个微信小程序页面中只有一个 web-view ,但是这个 web-view 的内容可以根据上一个页面传递的参数来获取页面 URL ,后面会讲如何实践,

官方提供如下接口:

1 由小程序到 web-view ,其实本质上 WEB-VIEW 也是小程序的一个页面,所以小程序到 web-view 是正常的小程序间的通信,通过 wxnavigateTo 、 wxredirectTo ,带上 url 参数, query 参数就像正常 url 的参数一样跟着后面,然后在 web-view 的页面的 Page 实例里面通过 onLoad 的方法的参数来获取 url 的值,设置给 web-view 的 src 属性为改值即可。

2 由 web-view 到小程序,由于在 web-view 的跳转通常是在 src 对应的网页中的 *** 作来处理的,所以需要结合 jssdk 来处理,不需要 wxconfig 配置,直接通过 script 标签来引入 [>

以上就是关于微信小程序:自定义导航栏全部的内容,包括:微信小程序:自定义导航栏、微信小程序for循环以及页面跳转、微信小程序使用 onPageScroll 将view滚动置顶等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9848635.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存