前言
已经有好久没有更新博客了,大三下了要准备找实习了,才发现自己很多东西都不会,所以赶紧找了个现在流行的MVVM框架学习一下。我学习的是Vue,所以拿Vue写了一个FullPage的模板,可以供自己和其他人使用。
项目的地址是:https://github.com/hzxszsk/vue-fullpage
项目讲解
为了加深理解,我把我制作这个FullPage页面的思路和流程记录下来,也可以给其他和我一样的初学者一个参考。
分解思路
首先,我根据Vue的组件开发思想,把这个FullPage页面分为两个主要的组件模块:页面组件(Page)和页面控制组件(PageController)。除了这两个组件模块之外,还有一个整合的App.vue文件。
其中,Page组件主要负责每个FullPage页面的样式和位置控制,而PageController组件则用来发起页面的切换请求。
因为Vue是单向数据流形式的,因此将所有需要的数据都定义在App.vue文件中,由App组件向下传递数据。
数据需求分析
要制作一个FullPage页面,每个Page页面需要的是页面自身的内容(页面的内容和样式配置),而控制器所需要的数据有当前正在显示的页面以及总的页面数,用这两个属性计算出其他需要的属性。
其中,总页面数即是Page总数,有多少个Page,就有多少个Page的配置,因此可以通过计算Page配置信息对象的数量来获得总页面数。
我在App.vue的组件data中定义了两个属性:
currentPage表示的是当前页面的序号(从1开始计算); options是一个数组,其中的每一个对象表示的是对应序号的页面的配置信息,可以通过修改里面的对象属性从而改变对应Page的样式。Page组件只需要知道当前页面是第几个页面和自身的配置,因此只含有两个属性:
currentPage option 表示自身的配置PageController需要对页面进行切换控制,因此需要两个属性:
currentPage pageNum 表示总的页面数量编写页面样式
App组件的结构为:
<div id="app" class="app"> <!-- page为单独的页面组件,page内可以编写任意的页面内容 --> <page :currentPage="currentPage"></page> <!-- page-controller为控制器组件 --> <page-controller :pageNum="pageNum" :currentPage="currentPage" @changePage="changePage" :arrowsType="arrowsType"></page-controller></div>
App组件主要样式:
/* 页面宽高为100%,overflow为hidden隐藏溢出部分 */html,body { margin: 0; padding: 0; height: 100%; width: 100%; overflow: hidden;}.app { height: 100%; width: 100%;}
Page组件结构为:
<section class="page" v-if="options":style="{background:options.background,color:options.color||'#fff'}" :class="{'page-before': options.index < currentPage,'page-after': options.index > currentPage}"> <div :class="{'page-center': options.isCenter}"> <slot></slot> </div></section><section class="page" v-else>页面正在渲染中。。。</section>
新闻热点
疑难解答
图片精选