Uni-App之Vue组件(三)

Uni-App之Vue组件(三),第1张

uni-app支持的通用css单位包括px,rpx

vue页面支持普通H5单位,但在nvue里不支持;

nvue页面还不支持百分比单位

App端,在pagesjson里的titleNView或页面里写的plus api中涉及的单位,只支持px,此时不支持rpx。

nvue中,uni-app模式可以使用px,rpx表现与vue中一致,weex模式目前遵循weex的单位;

点击切换实现路由跳转

实现方法: 一、在indexvue的页面入口写一个点击方法,利用uninavigateTo({})写上将要跳转的页面路径。

                二、 components文件里面创建headerNavvue组件

                三、在pagesjson文件里写上组件路径进去

这里可以选择修改对应的样式信息

scroll-view属性说明:

横向滚动通过添加scroll-x="true",并且需要在scroll-view的上一级加上row,完成横向滚动

纵向滚动条通过添加scroll-y="true",并且使用scroll-view来配合完成纵向滚动轴

属性说明:

view的属性说明:

属性说明:

由于 icon 组件各端表现存在差异,可以通过使用字体图标的方式来弥补各端差异。

属性说明:

各平台type值的有效说明:

需求就是两点:

1,页面滚动到该导航位置吸顶

2,导航tabs切换带动画,包括下划线

效果如下:

首先是可滑动,用 scroll-view 实现,然后吸顶效果是在Dcloud是在市场找的,下划线滑动动画是插件市场 这个插件 改来的,show code:

至于动画那部分的实现的计算逻辑,可以去插件市场看看上面提到的那个插件,我本来直接也是用那个插件,但是各种不适用,所以拿出来了我自己需要的部分。

解决方法:

采用异步处理settimeout函数获取最新的scrollheight 让他先全部执行完了之后去走这个异步,这样就能确保滚动条每次滚到的都是最底部 。

最后实现了每次聊天都是滚到最底部 要是想要进入页面就滚到最底部呢 我们是在socket链接读取文件的时候调用了这个方法。

最近在做一个uniapp的项目的时候,碰到了一个Tab选项卡的需求,我立马就想到了曾经在视频里看到的利用swiper实现丝滑选项卡的功能。

但是很遗憾,我并没有光看就会的本事,本着遇事不决先百度的原则,就在百度找了一篇真实有用,但是有小小bug的,下面是原po地址:

uni-app使用swiper切换页面每个滑块高度自适应

懒得点的可以接着往下看哈,我也会把详细步骤以及碰到的bug贴出来。下面是我改造后的效果图

首先就是Tab选项卡的点击切换块,这里我是用了小程序自带的scroll-view来实现的,同时给该元素添加scroll-into-view属性来实现点击跟踪(其实这效果不是特别好,我期望的效果是点击这个的时候还留点位置给上一个,但是我太菜了加上为了省事所以就直接用这个了)

scroll-into-view的用法可自行查阅官方文档

接着是swiper标签块,这里因为实现都一样,所以我就直接把原博客那边的贴过来了,大家根据自己的需求更改类名及swiper-item内部的组件即可

这里有个注意点,就是要给swiper-item内部的组件(盒子)一个相同的类名,后面获取高度时需要用到。

初始数据方面,这里我也把我的初始数据贴出来,大家根据需求自行修改即可

后面的方法本来想一个个贴的,但是发现好像有点乱,所以就直接全贴出来了,里面的逻辑大伙应该能理清吧哈哈

到这里js部分也结束了,最后是css部分,我就是在这里踩坑的。原博最后面说要给swiper-item里面的组件设置一个min-height: 100%。这样设置之后就会有个问题,也就是

因此大家在初始化css数据的时候需要注意一下,这里我也把我的初始css贴出来,大家根据需求自行修改即可

到这里这一块的内容就全部结束了,噢对了关于setSwiperHeight里面获取dom元素的方法,也就是

unicreateSelectorQuery() 。这玩意说实话我也搞不太懂,总之就跟selectorQuery选择器差不多,CVM大法:复制粘贴,然后修改数据即可。

第一次正经写文还是很紧张的哈哈,希望能帮到有需要的人。谢谢各位

第一:先在Appvue中全局获取不同手机的顶部高度

在methods:{

getPhoneHeight(){

let that =this

unigetSystemInfo({

success:function(res){

thatglobalDataphoneHeight=resstatusBarHeight

}

})

}

}

第二步

在components中写公共组件

uni-topBarvue

<template>

<view class="nav-box" style="margin-top:{{phoneHeight}}px">

<view class='nav-top-one'>

<image src='/static/images/tbackpng' class="nav-top-left" @click="backpage"></image>

<view class="nav-top-center"></view>

<image src='/static/images/homepng' class="nav-top-right" @click="BackHome"></image>

</view>

<view class="nav-top-text">{{titleNameaddredd}}</view>

</view>

</template>

<script>

// app中的全局需要在每个页面进行引入

import app from '/Appvue'

export default {

//

name: "uniNavBar",

// 接受父组件的传值,可以接受多个中 在父组件中用v-bind 来绑定

props: {

// 接受父组件的传值

titleName: {

type: Object

}

},

data() {

return {

phoneHeight:appglobalDataphoneHeight //这里在进行调用

};

},

// 事件

methods: {

backpage() {

uninavigateBack({

delta: 1

});

},

BackHome(){

// 关闭当前页面

uniswitchTab({

url: '/pages/index/index'

});

}

},

// 生命周期

</script>

<style>

nav-box {

position:relative;

padding-left: 16rpx;

background:#ffffff;

height:76rpx;

</style>

第三步:

在需要的页面进行引入 和vue引入公共组件的方法一样

html:

<uniNavBar :titleName="topData"></uniNavBar>

js:

import uniNavBar from "///components/uni-nav-barvue"

components:{

uniNavBar

},

最后效果显示

悟空—不死谢谢

以上就是关于Uni-App之Vue组件(三)全部的内容,包括:Uni-App之Vue组件(三)、uni-app吸顶+带动画滑动的tabs导航栏、uniapp聊天页面内容滑倒底部闪一下怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9459497.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存