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

云南网站定制vs2105制作个人网站

云南网站定制,vs2105制作个人网站,百度运营培训班,网站主机注册为什么需要封装自定义导航 首先如果开发的是微信小程序#xff0c;那么在安卓环境下导航栏标题是默认靠左对齐的#xff08;虽然你在微信开发者工具上看到的依旧是居中展示#xff09;#xff0c;而在ios环境则是居中展示的。很多时候我们需要对整个项目有一个主题色或者公…为什么需要封装自定义导航 首先如果开发的是微信小程序那么在安卓环境下导航栏标题是默认靠左对齐的虽然你在微信开发者工具上看到的依旧是居中展示而在ios环境则是居中展示的。很多时候我们需要对整个项目有一个主题色或者公共的样式配置封装一个公共的自定义导航栏更易于实现与管理。系统导航栏高度根据机型会发生变化大部分是44px但是有时候也会是40px等高度如果你需要针对导航栏和状态栏高度对页面做一些定制需求那会显得比较困难。网上有一些根据胶囊按钮获取导航栏高度的方法实测后发现并不精准。 当然原生导航也并不是一无是处的。原生导航的体验更好渲染新页面时原生导航栏的渲染无需等待新页面dom加载可以在新页面进入动画开始时就渲染。原生导航还可以避免滚动条通顶并方便的控制原生下拉刷新。 封装思路 这里我们借助uniapp官方提供的uni-nav-bar进行封装。vue3 ts setup 首先我们希望可以自动获取每个页面的标题并不是每次使用自定义组件再去设置我们置顶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}} }然后我们使用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() })最后我们还需使用$attrs对组件的属性方法进行穿透这在我们对组件进行二次封装的时候应该都是必须要做的操作。 完整代码 templateuni-nav-barclassuniNavBarv-bind$attrs:borderborder:statusBarstatusBar:fixedfixed:leftIconleftIcon:titlegetCurrentPageTitle()clickLeftclickLeft/uni-nav-bar /templatescript langts setup import { onMounted, getCurrentInstance } from vue import { useAttrs } from vue import pagesjson from /pages.json import { currentPage } from /utils/toolsinterface Props {border?: booleanstatusBar?: booleanfixed?: booleanleftIcon?: string }const props withDefaults(definePropsProps(), {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.w-s-a.com/news/685021/

相关文章:

  • 如何在腾讯云做网站开源站群cms
  • 公司网站建设的意义网易做网站
  • 网络营销案例分析与实践搜外seo
  • 手机建网站挣钱吗wordpress面包屑
  • 淘客做网站怎么备案网站开发工具的是什么
  • 提供大良网站建设郑州网站建设网站开发
  • 邢台做wap网站价格wordpress评论滑动
  • 绝味鸭脖网站建设规划书江苏建设人才网 官网
  • 网站源码授权破解centos wordpress 整站
  • 建设一个私人视频网站wordpress js
  • 手机企业网站制作流程3d建模自学
  • 网站优化方案和实施wordpress的归档
  • 建设事业单位网站多少钱集艾设计公司官网
  • 网站建设与管理方案书图片的制作方法
  • 中文建网站美发网站模板带手机版
  • 免费聊天不充值软件windows优化大师下载安装
  • 网站优化的关键词自己怎么做外贸网站空间
  • 现在建设的网站有什么劣势温州互联网公司
  • 重庆自助企业建站模板淘宝关键词top排行榜
  • 平邑网站制作买高端品牌网站
  • 深圳建网站三千网站安全代维
  • 西宁市精神文明建设网站装饰设计甲级资质
  • 做教育行业营销类型的网站徐州做网站多少钱
  • 临沂品牌网站制作企业网站建设搜集资料
  • wordpress注册验证码手机网站优化
  • 往建设厅网站上传东西做衣服的教程网站有哪些
  • 网上商城网站设计免费咨询口腔科医生回答在线
  • 南京网站c建设云世家 s浏览器
  • 如何做镜像别人网站wordpress菜单对齐修改
  • 长春网站建设net企业公示信息查询官网