pc=mobile+pad自适应布局

在这篇文章,咱们重点聊聊自适应布局的页面结构,以及打开页面的几种方式。关于pc=mobile+pad自适应布局的起源、概念、效果,参见文章:自适应布局:pc = mobile + pad

基础构件:view/page

不论是mobile布局还是pc布局都由view/page构成。换句话说,view/page是实现pc=mobile+pad自适应布局的基石

1. Framework7的策略

view/page是由Framework7组件库引入的概念。一个view就代表了一个视图容器,一个view可以包含多个page,这些pageview容器当中采用堆叠的机制,从而可以轻松实现手机端页面前进与后退的操作

关键问题:实现手机端页面前进与后退,核心要考虑的是历史页面组件如何保持状态,又何时销毁

Framework7内置了一个router路由库,通过page的堆叠机制轻松实现page页面的状态保持和销毁

有网友可能会说,使用vue router+keep-alive也可以实现这种机制。不是不可以,而是非常繁琐,不直观

2. CabloyJS的改造优化

由此可见,Framework7是为开发原生mobile端应用量身定做的UI组件库。CabloyJS为了将Framework7在mobile端的交互体验和开发模式移入pc端,对view/page组件分别进行了改造和优化。比如,在Framework7中,view/page对应的vue组件分别是f7-view/f7-page,而在CabloyJS中对应的vue组件分别是eb-view/eb-page

eb前缀代表egg-born,egg-born是CabloyJS框架的第一阶段,提供最基础的架构设计

页面结构

1. mobile布局

  • 主页面:由多个tab页签构成,每一个页签是一个view容器

  • 弹出页面:当在tab页签中点击链接时,将弹出页面。弹出页面可以是一个或者多个view容器进行堆叠显示

2. pc布局

  • 侧边栏:一个边栏面板就是一个view容器

  • 内容区域

    • tab页签:内容区域由多个tab页签构成

    • group:一个tab页签对应一个group。一个group包含多个view容器

      • 展开模式(tile):在展开模式中,多个view容器依次向右平铺展开

      • 弹出模式(popup):在弹出模式中,第一个view容器铺满页面空间,剩余view容器参照mobile布局弹出页面堆叠显示

页面尺寸

页面尺寸有三种类型:smallmediumlarge,默认是small

- 指定页面尺寸

可通过页面组件的meta元数据指定页面尺寸

<template>
</template>
<script>
export default {
meta: {
size: 'small',
},
data() {
return {};
},
methods: {
},
};
</script>
<style scoped>
</style>

页面标题

模块a-layoutpc会自动提取页面组件中eb-navbar元素的title属性,然后显示在头部导航栏中

当然也可通过页面组件的meta元数据指定页面标题

<template>
</template>
<script>
export default {
meta: {
title: 'Sign in',
},
data() {
return {};
},
methods: {
},
};
</script>
<style scoped>
</style>

页面打开方式

可以通过方法$view.navigate传递target属性,指定页面打开方式

this.$view.navigate('/test/party/kitchen-sink/about', { target: '_self' });
  • target
名称 说明
自动判断:弹出式:在弹出窗口中打开,展开式:依次在右侧使用新view展开
_self 在当前view中打开
_view 在新view中打开
_group 在新group中打开
_popup 在弹出窗口中打开

侧边栏页面显示

还可以通过方法$view.navigate在侧边栏面板当中打开页面。比如,在右边栏面板打开dashboard的配置页面,代码如下:

    onPerformSettings() {
this.$view.navigate(`/a/dashboard/dashboard/settings?dashboardUserId=${this.dashboardUserId}`, {
scene: 'sidebar',
sceneOptions: { side: 'right', name: 'profile', title: 'Profile2' },
context: {
params: {
dashboard: this,
},
},
});
},
名称 说明
scene 指定为sidebar
sceneOptions 边栏参数
context 传入新页面的环境参数
  • sceneOptions
名称 说明
side 指定哪个边栏,可选项:left/right/bottom
name 边栏面板的名称
title 边栏面板的标题,支持国际化
  • context:通过context既可以向新页面传入参数,也可以从新页面返回结果数据

开发进阶

前面我们对pc=mobile+pad自适应布局的理念和实现机制进行了阐述。接下来,就可以进一步了解如何配置mobile布局pc布局,以及如何开发布局的构件:

相关链接

pc=mobile+pad自适应布局:页面结构与打开方式的更多相关文章

  1. 在MyEclipse中改动jsp页面的默认打开方式

    在JavaWeb项目中.当然有非常多jsp页面,可是我发现,双击打开jsp页面总是卡机.相对于打开其它java文件而言非常慢,感觉非常不舒服.MyEclipse中默认打开jsp页面是以可视化的形式展现 ...

  2. Android启动页面的正确打开方式 (转载)

    最近由于领导要求写一个手机APP,于是自学开始,不经意间想到使用过的手机APP在打开的时候都是会有一个启动页面,这是如何实现的呢?比较好奇,于是在网上搜到了以下这篇文章,经过个人实验的确可行,不过原文 ...

  3. ASP.NET MVC 4中如何为不同的浏览器自适应布局和视图

    在ASP.NET MVC 4中,可以很简单地实现针对不同的浏览器自适应布局和视图.这个得归功于MVC中的"约定甚于配置"的设计理念. 默认的自适应 MVC 4自动地为移动设备浏览器 ...

  4. 这可能是史上最全的CSS自适应布局总结教程

    标题严格遵守了新广告法,你再不爽,我也没犯法呀!话不多说,直入正题. 所谓布局,其实包含两个含义:尺寸与定位.也就是说,所有与尺寸和定位相关的属性,都可以用来布局. 大体上,布局中会用到的有:尺寸相关 ...

  5. react抽离配置文件、配置@符号、调整src文件夹---配置scss、编写项目的页面结构、创建各个页面 src/views、开始路由、入口文件处修改代码、修改App.js布局文件、添加底部的导航布局、构建个人中心。。。声明式跳转路由、使用React UI库请求渲染首页数据、

    1.回顾 2.react项目的配置 react默认创建的项目配置文件在 node_modules/react-scripts 文件夹内部 2.1 抽离配置文件 cnpm run eject cnpm ...

  6. 用absolute进行页面的自适应布局

    用position:absolute和top,left,bottom,right进行设置可以进行页面的头部,底部,左边框,内容的自适应布局,可以代替position:fixed; <!DOCTY ...

  7. PC端自适应布局

    截止目前,国内绝大多数内容为主的网站(知乎,果壳,V2EX,网易新闻等)均使用内容区定宽布局,大多数电商网站(网易考拉,京东,聚美优品)也使用了内容区定宽的布局,也有些网站使用了自适应布局: 天猫 内 ...

  8. 关于使用rem单位,calc()进行自适应布局

    关于css中的单位 大家都知道在css中的单位,一般都包括有px,%,em等单位,另外css3新增加一个单位rem. 其中px,%等单位平时在传统布局当中使用的比较频繁,大家也比较熟悉,不过px单位在 ...

  9. PC端、移动端页面适配方案

    前言 页面自适应PC端.移动端大体上可以分为两种: 1.在同一个页面进行自适应布局,通常使用CSS3 @media 媒体查询器实现 2.两套页面,在后端进行统一适配,根据不同的浏览器UA返回对应的页面 ...

  10. html5页面结构

    我是html5初学者,最近闲来无事,和各位一起学些下html5. 开发环境 jdk1.6,tomcat6,开发工具eclipse. 新建一个web工程,创建一个index.jsp页面.页面代码如下. ...

随机推荐

  1. Java 多线程------解决 实现Runnabel接口方式线程的线程安全问题 方式二:同步方法 +总结

    方式二:同步方法* 如果操作共享数据的代码完整的声明在一个方法中,我们不妨将此方法声明同步的 1 package bytezero.threadsynchronization; 2 3 4 5 /** ...

  2. C++ map //map/multimap容器 //map容器 构造和赋值 //map大小 和 交换 //map插入和删除 //map查找和统计 //map容器排序

    1 //map/multimap容器 //map容器 构造和赋值 //map大小 和 交换 2 //map插入和删除 //map查找和统计 //map容器排序 3 4 #include<iost ...

  3. .NET Conf China 2023济南站社区活动

     2024年3月3日,在这个春暖花开的日子里,由微软MVP项目.山东财经大学管理科学与工程学院.胶东开发者社区.济南.NET俱乐部联合举办了[.NET Conf China 2023 JiNan Wa ...

  4. tag 转 分支 branch

    获得最新 git fetch origin 获取tag git tag tag 转 branch git branch newbranch vtest.1.0.FINAL --- git branch ...

  5. C++统计代码运行时间

    本来想自己写的,一看github上面都有就不再重复造轮子了.github上的项目如下: StopWatch 纯标准库实现:使用std::chrono::high_resolution_clock,其实 ...

  6. Centos挂在U盘的时候无法挂载

    网上的教学视频大部分全是以centos为教材底子--没办法更换系统了,这样方便麻! 我参考的文章: https://blog.csdn.net/shengjie87/article/details/1 ...

  7. 【LLM应用】基于GPT3.5的代码编辑器Cursor试用-智能代码编辑助手

    一.安装和使用 官网下载安装Cursor,然后创建一个代码文件.Ctrl +  K生成, Ctrl + L提问. 默认每小时30词. 1. Try generating with command K ...

  8. 三维模型3DTile格式轻量化的纹理压缩和质量关系分析

    三维模型3DTile格式轻量化的纹理压缩和质量关系分析 在三维模型的3DTile格式轻量化处理中,纹理压缩是一个重要环节.但是,纹理压缩和模型质量之间存在明显的关系需要权衡.以下是纹理压缩和模型质量关 ...

  9. 记录--用了那么久的Vue,你了解Vue的报错机制吗?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助   Vue的5种处理Vue异常的方法 相信大家对Vue都不陌生.在使用Vue的时候也会遇到报错,也会使用浏览器的F12 来查看报错信息.但 ...

  10. vue3.0后多环境配置

    根目录下创建 .env 每个配置文件中都将包含此文件中的数据,类似于配置文件的全局 .env.development 默认开发环境 对应serve .env.production 默认生产环境 对应b ...