当前位置: 首页 > news >正文

门户网站建设方案 模板网站建设汇报方案ppt模板

门户网站建设方案 模板,网站建设汇报方案ppt模板,深圳坪山网站建设,网站制作报价开为什么需要封装自定义导航 首先如果开发的是微信小程序,那么在安卓环境下导航栏标题是默认靠左对齐的(虽然你在微信开发者工具上看到的依旧是居中展示),而在ios环境则是居中展示的。很多时候我们需要对整个项目有一个主题色或者公…

为什么需要封装自定义导航

  1. 首先如果开发的是微信小程序,那么在安卓环境下导航栏标题是默认靠左对齐的(虽然你在微信开发者工具上看到的依旧是居中展示),而在ios环境则是居中展示的。
  2. 很多时候我们需要对整个项目有一个主题色或者公共的样式配置,封装一个公共的自定义导航栏更易于实现与管理。
  3. 系统导航栏高度根据机型会发生变化,大部分是44px,但是有时候也会是40px等高度,如果你需要针对导航栏和状态栏高度对页面做一些定制需求那会显得比较困难。(网上有一些根据胶囊按钮获取导航栏高度的方法实测后发现并不精准。)

当然原生导航也并不是一无是处的。原生导航的体验更好,渲染新页面时,原生导航栏的渲染无需等待新页面dom加载,可以在新页面进入动画开始时就渲染。原生导航还可以避免滚动条通顶,并方便的控制原生下拉刷新。

封装思路

这里我们借助uniapp官方提供的uni-nav-bar进行封装。(vue3 + ts + setup)

  1. 首先,我们希望可以自动获取每个页面的标题,并不是每次使用自定义组件再去设置,我们置顶page.json里面包含了我们所有的页面的标题,所以我们直接导入该文件,使用currentPage获取当前页面的路由,然后匹配page.json文件里面的page或者subPackages路由,需要注意的是subPackages里面的路由需要自己收到拼装。
    const { title, ...$attrs } = useAttrs()
    const defaultTitle = '我是默认标题'
    // 通过page.json文件里面的pages与subPackages数组自动获取标题栏
    const getCurrentPageTitle = () => {// 有传入的标题直接使用传入的标题if (title) {return title}const { route } = currentPage()const page = pagesjson.pages.find((item) => item.path === route)if (page) {return page.style?.navigationBarTitleText || defaultTitle}for (const subPackage of pagesjson.subPackages) {const subPage = subPackage.pages?.find((item) => route === `${subPackage.root}/${item.path}`)if (subPage) {return subPage.style?.navigationBarTitleText || defaultTitle}}
    }
    
  2. 然后我们使用getCurrentInstance和``createSelectorQuery定义一个方法返回自定义导航栏的高度,便于我们需要的时候使用。
    const pageInstace = getCurrentInstance()
    const emits = defineEmits(['getHeight'])
    onMounted(() => {const query = uni.createSelectorQuery().in(pageInstace?.proxy)query.select('.uniNavBar').boundingClientRect((data: any) => {emits('getHeight', data.height + 'px')}).exec()
    })
    
  3. 最后我们还需使用$attrs对组件的属性方法进行穿透,这在我们对组件进行二次封装的时候应该都是必须要做的操作。

完整代码

<template><uni-nav-barclass="uniNavBar"v-bind="$attrs":border="border":statusBar="statusBar":fixed="fixed":leftIcon="leftIcon":title="getCurrentPageTitle()"@clickLeft="clickLeft"></uni-nav-bar>
</template><script lang="ts" setup>
import { onMounted, getCurrentInstance } from 'vue'
import { useAttrs } from 'vue'
import pagesjson from '@/pages.json'
import { currentPage } from '@/utils/tools'interface Props {border?: booleanstatusBar?: booleanfixed?: booleanleftIcon?: string
}const props = withDefaults(defineProps<Props>(), {border: false,statusBar: true,fixed: true,leftIcon: 'left',
})const { title, ...$attrs } = useAttrs()
const pageInstace = getCurrentInstance()
const emits = defineEmits(['getHeight'])
onMounted(() => {const query = uni.createSelectorQuery().in(pageInstace?.proxy)query.select('.uniNavBar').boundingClientRect((data: any) => {emits('getHeight', data.height + 'px')}).exec()
})const defaultTitle = '我是默认标题'
// 通过page.json文件里面的pages与subPackages数组自动获取标题栏
const getCurrentPageTitle = () => {// 有传入的标题直接使用传入的标题if (title) {return title}const { route } = currentPage()const page = pagesjson.pages.find((item) => item.path === route)if (page) {return page.style?.navigationBarTitleText || defaultTitle}for (const subPackage of pagesjson.subPackages) {const subPage = subPackage.pages?.find((item) => route === `${subPackage.root}/${item.path}`)if (subPage) {return subPage.style?.navigationBarTitleText || defaultTitle}}
}// navbar返回按钮事件
const clickLeft = () => {uni.navigateBack()
}
</script>
http://www.yayakq.cn/news/908082/

相关文章:

  • 膜结构网站推广怎么做家装公司哪家比较好
  • 惠安网站建设价格一级a做片性视频网站
  • 怎样做某个网站有更新的提醒做特效很牛的一个外国网站
  • 重庆九龙坡营销型网站建设公司哪家专业百度搜索排名服务
  • 想要网站导航正式推广网站策划软件
  • 本地网站asp iis子域名网址查询
  • 上海装修公司网站建设云浮新兴县做网站
  • 湖南基础建设投资集团网站1688会提供网站建设
  • 昆山建设企业网站wordpress集成关注公众和登陆
  • 焦作住房和城乡建设厅网站分类目录 代码 wordpress
  • 照片书哪家网站做的好茂名模板建站定制网站
  • 建设银行网站背景中国手工加工网免费供料
  • 河东网站建设公司北京做网站的价格
  • 推荐ps制作网站效果图太仓苏州网站建设
  • 巫山那家做网站厉害手机微信小程序开发教程
  • 乐山网站建设公司wordpress赞助
  • 企业专业网站建设哪家好wordpress 文章数据
  • 济南网站建设价格公司装修工程
  • 给公司怎么做官方网站园林景观设计平面图
  • 首页网站怎么做的网页开发背景怎么写
  • 2015做啥网站致富网站建设网站免费
  • 钱网站制作asp.net+h5网站开发
  • 设计本室内设计师网谷歌seo济南
  • 怎么制作一个网站东营做网站公司
  • 东莞网站排名优化公司做的网站没给我备案
  • 广州建站方法赣州开发区网站建设
  • 甘肃网站建设的过程衡阳做网站的公司
  • dw做网站 如何设置转动网站费用计入什么科目
  • 网站建设类合同范本微信公众号 wordpress
  • 做网站攻略主题 外贸网站 模板下载