1 前言:

本系列依据微信给出的实例,进行比较细致的解读和逐步分析、实践。

遇到很小的知识点,也做了一点的分析和解释,希望是能够帮助0起步的同学。

大虾们请选择跳过,

开始讨论一个微信小程序的页面设计,结合微信给出的实例。

2 页面构建的基本框架:

微信小程序的文件组织是一个迭代的层次,如我前面一片博文里面提到的:

https://blog.csdn.net/yellow_hill/article/details/80823292

微信小程序的基本组织文件类型是4种,分别定义,逻辑、配置、样式、页面结构。

项目的结构如上图,如果收紧所有的项目文件,我们发现在项目的根目录有四类配置配置文件,这四类文件是整个项目的配置文件。对于构造一个页面来说,如果不进行配置,那么根目录的配置就是你的配置。当然,由于是根目录,所以,没有针对某一个页面的结构设计,但是,有针对页面的样式设计。

2.1 设计一个页面,

"page/component/index",

现在我们实践看一下,给出的 Demo里面的页面是如何设计的,首先,看一个index的页面,index的页面在app.json的配置文件里面被配置在首页,也就是第一个出现的页面。

这个页面的定义在哪里呢?

前面说道1区的定义是定义整个项目页面的规范,那么2区的定义则可以覆盖1区的定义,对页面index进行设置:

2.1.1 index.js 里面是数据配置和操控函数定义

2.1.2 index.json里面设置的是页面相关的配置。

页面相关的配置如下:

属性 类型 必填 描述
pages String Array 设置页面路径
window Object 设置默认页面的窗口表现
tabBar Object 设置底部 tab 的表现
networkTimeout Object 设置网络超时时间
debug Boolean 设置是否开启 debug 模式

json文件一般都是设置window页面

2.1.3 index.wxml里面设置的是页面的结构定义:

下面的例子,我们看到在index的页面的结构只是包括了视图容器view:

https://www.cnblogs.com/JinQing/p/6694052.html

上面的博客很好的介绍了微信里面页面设置的“微信小程序--动态添加class样式”

在WEUI中,通过调试器工具,Wxml我们可以找到对应的页面结构的效果:

所有,被定义如下:

2.1.4 index.wxss里面设置的是页面的样式定义:

@import "../common/index.wxss";

WEUI里面定义的样式是来源于公共的样式文件,

实践:

至此,我们页面的基础元素以及介绍了一下,下面我们实践的研究一下,一个index页面的制作过程,

1 首先构造上述四个文件:

2 定义好页面数据:

index页面的样子如下:

其实是由几组list的页面项目构成的。每一个中文的标题下面,有分开的标题,例如,

在视图容器下面,有view、scroll-view、swiper等,在设计的时候用list的数据结构来规范,数据的组织在index.js里面,

我们可以看到对应的关系,视图容器项目,默认是关闭的false,然后他的id是view,视图容器包括三个分页面:view、scroll-view、swiper。

在index.js里面同时定义了,数据的一些操作函数,比如:

上面这段函数显然对显示项目的次级菜单展看进行了控制,数据最后通过:setData把数据更新到页面。

3 页面结构设计

页面的具体结构设计在文件index.wxml里面,

我没看到index view容器包括了head和body两个部分,

index-hd head部分的设计比较简单,其中,定义的几个class的样式,在index.wxss指向的/common/index.wxss里面都有定义。

但是,index-bd比较复杂一点,我们分析一下:

首先,

页面结构的设计当然还是在index.wxml里面,样式在/common/index.wxss里面,

讲到这提一下,padding的设计:

给出的是三个参数,什么意思呢,第一个参数表述上下都是0rpx,然后,右边是30rpx,左边是40rpx,

参考,下面这个说明,更详细一点

https://blog.csdn.net/u012329294/article/details/79687330

其次,从kind-list 到kind-list-item到kind-list-item-hd kind-list-item-hd-show是页面逐渐分解、分层设计的过程

kind-list

kind-list 的使用如下图效果,

kind-list在block块里面,通过微信程序的选取来执行一下操作,list是js定义好的数据组织,其中有一个属性是id,

这里选取key在后面,是维护页面这个属性值的显示固定(不因为增加一个项目,或者项目的其他属性的自己变更而受到影响)。

参考:

微信小程序的wx:for,wx:for-items,wx:for-item,wx:key等的关系及正确使用

微信KEY


下面我们把上面的block展开来研究一下,

标签block 和 标签view的区别,view为视图层容器,在微信的说明里面有定义,而block为不在视图层显示的一个标识定义区块。在组件的定义表里面,也没有block的说明。

参考:

微信小程序中 <view> 标签与 <block> 标签的区别

block里面一个view的视图容器,

<view class="kind-list-item">

view这个容器怎么用呢?可以参考微信对

参考:组件

的说明:

class的属性主要用来对付样式相关的事情,而样式本身的定义在样式文件里面。

上面的表述是,view容器后面跟了一个class的,kind-list-item,她负责如下渲染

展开view的视图容器,kind-list-item-bd


我们继续展开,kind-list-item-bd的展开

这里,

下图展示了他渲染的部分,

<view id="{{item.id}}" class="kind-list-item-hd {{item.open ? 'kind-list-item-hd-show' : ''}}" bindtap="kindToggle">

这段的意思是: 在js的定义的item.id里面,选取一个当前的item.id进行显示(view 视图容器),基础样式用的是kind-list-item-bd,

但是,当item.open = ture的时候,根据3元判断增加样式kind-list-item-hd-show,

{item.open ? 'kind-list-item-hd-show' : ''

这是包含一个3元的判断语句,类似于C语言里面的三元判断,

item.open = falus 的时候,增加 的样式为" "(空),也就是没有任何变化,

那么,这个增加的样式,kind-list-item-hd-show,是什么呢?

.kind-list-item-hd-show {

opacity: .2;

}

我们看定义,这里opacity是表示透明度,值从(0 ~ 1),那么个0.2的透明度显然是半透明的,效果如下:


<view id="{{item.id}}" class="kind-list-item-hd {{item.open ? 'kind-list-item-hd-show' : ''}}" bindtap="kindToggle">

现在我们回到刚才的那个语句,因为后面还有一个部分没有讲解,bindtap="kindToggle

bindtap 是小程序的一个事件绑定,其中,bind表示绑定,tap表示

手指触摸后马上离开  

kindToggle 是事件处理函数,

这里我们可以看到,在页面手指触发了页面view视图容器的区域后,将触发容器的事件绑定,而这个事件处理的目标就是把list的打开关闭属性进行了设置,也就是触摸后打开了下一级的视图。


OK,我们小结一下,现在已经解释完了,下面这块区域的实现,


下面,继续看,

这块区域,先看页面设计,

<view class="kind-list-item-bd {{item.open ? 'kind-list-item-bd-show' : ''}}">

<view class="navigator-box {{item.open ? 'navigator-box-show' : ''}}">

<block wx:for-items="{{item.pages}}" wx:for-item="page" wx:key="*item">

<navigator url="pages/{{page}}/{{page}}" class="navigator">

<view class="navigator-text">{{page}}</view>

<view class="navigator-arrow"></view>

</navigator>

</block>

</view>

</view>

<view class="kind-list-item-bd {{item.open ? 'kind-list-item-bd-show' : ''}}">

这段其实和前面的结构很相近,我们快速过一下,

这里定义了一个view视觉容器,采用的样式为,kind-list-item-bd,然后,根据,item.open,打开的状态,附加样式为

'kind-list-item-bd-show' : '' 二选一,查阅基础样式文件,index.wxss,

可以看到,这个样式其实规范比较简单,只有定义一个hidden,和一个高度的自动,的盒子

overflow: hidden;其实就是溢出隐藏,

其实就是高度区域盒子自动适应。

结果就是,

一个这个灰色的盒子,view


<view class="navigator-box {{item.open ? 'navigator-box-show' : ''}}">

我们看继续展开的下一级,如上,

简单讲,这里就是定义了一个名为navigator-box的样式,在上面这个容器里面,


再分析下一层,

block容器用来做一个循环渲染,

<block wx:for-items="{{item.pages}}" wx:for-item="page" wx:key="*item">

先对list,用wx:for-items,

<block wx:for-items="{{list}}" wx:key="{{item.id}}">

做最外层循环,这里list里面的数组元素,就变为item了,item有4个属性,其中一个是pages,

<block wx:for-items="{{item.pages}}" wx:for-item="page" wx:key="*item">

然后,用wx:for-items,对list里面的pages属性内嵌数组做了遍历循环,注意,后面又立即跟了wx:for-item="page",注意,这里没有s,就是对item的元素pages数组的元素重新命名为page了,后面的page操作,就是对这个内嵌数组操作。

这里出现了一个新的 tag,

navigator

<navigator url="pages/{{page}}/{{page}}" class="navigator">

这里,

url是 navigator的一个属性,

是小程序页面内的一个跳转, 注意后面的class,是样式的定义,class后面的navigator需要重新定义,

不是保留关键字,


小结:至此,对小程序官方组件展示的主页面的index的页面制作分析结束了,欢迎讨论,有不对的地方,欢迎指正。


参考:

本身例子参考源码:

https://developers.weixin.qq.com/miniprogram/dev/demo.html?t=1477656485442

navigator

https://developers.weixin.qq.com/miniprogram/dev/component/navigator.html

小程序的事件处理

https://mp.csdn.net/postedit/81267935


微信小程序 - 基础 - 002 - WEUI - 一个基本页面的设计 - index页面的制作相关推荐

  1. 微信小程序 - 基础 - 003 - WEUI - 基本表单组件 - form - 页面数据提交和获取 - 01

    前言:form作为数据提交的重要控件,历来在前端设计中非常重要.微信给出了完整的form的例子.参考了一些微信设计的书籍,大多数都是copy 粘贴了例子的东西.... 其实微信的例子给的比较充分了: ...

  2. 更改微信小程序的基础版本库;更改uni-app小程序基础库;更改用户的微信小程序基础库最低版本;设置用户的微信小程序版本库;

    需求场景:微信小程序不少API都有最低版本支持,为了避免不必要的麻烦,我们可以根据需要给小程序设置基础库最低版本,这样若用户使用的基础库版本低于设置的最低版本要求,则无法正常使用小程序,并提示更新微信 ...

  3. 《微信小程序-基础篇》初识微信小程序

    大家好,好久不见了,前段时间各种原因分享不稳定,后面一段时间内参与了主站的原力计划,请麻烦各位支持一下,万分感谢- 本系列将从零开始介绍微信小程序的开发,介绍完基础以后会实际同步开发一个微信小程序的项 ...

  4. 微信小程序基础(全家福01)

    微信小程序基础 目标 能够知道如何创建小程序项目 能够清除小程序项目的基本组成结构 能够知道小程序页面有几个部分组成 能够知道小程序中常见的组件如何使用 能够知道小程序如何进行协同开发和发布 讲解目录 ...

  5. 微信小程序基础之开源项目库汇总

    awesome-github-wechat-weapp 是由OpenDigg整理并维护的微信小程序开源项目库集合.我们会定期同步OpenDigg上的项目到这里,也欢迎各位提交项目给我们. (链接:ht ...

  6. 微信小程序--基础内容(详解)(一)

    一.常用标签 1.view 标签 view 标签是一个块级元素,类似于 div(小程序里面没有div标签),里面可以放任何内容或者插值表达式,如下所示: <view>这是view标签< ...

  7. 微信小程序 基础语法

    微信小程序 基础语法 官网:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/ .wxml文件中 列表渲染 <view ...

  8. 微信小程序基础学习笔记Day02

    学习目标:微信小程序基础Day02 今日目标: 能够使用 WXML 模板语法渲染页面结构 能够使用 WXSS 样式美化页面结构 能够使用 app.json 对小程序进行全局性配置 能够使用 page. ...

  9. 视频教程-2020最新微信小程序基础+实战精讲视频-微信开发

    2020最新微信小程序基础+实战精讲视频 负责过多个软件项目的研发.设计和管理工作,拥有项目管理师认证.项目监理师中级认证.出版过的图书有<微信小程序开发图解案例教程><Axure ...

最新文章

  1. c# for提升效率的写法
  2. Kafka学习之路 (三)Kafka的高可用
  3. 2019-03-11-算法-进化(搜索二维矩阵II)
  4. 不可压库艾特流的数值解计算机语言,不可压库埃特流的数值解学生洪安仕专业.ppt...
  5. template.js的用法
  6. sql查询分析器 只读_DRDS 只读实例来解决复杂 SQL 查询
  7. java字符串练习题_java练习题——字符串
  8. 以WGR614v9与WG602v4为例,说明WDS功能的配置过程
  9. python爬取中央气象台台风网当前台风实况和预报数据
  10. matlab相反数计数,怎么把origin表格中的数改成相反数
  11. chrome浏览器视频加速插件安装教程
  12. Windows 镂空图标,“百变硬汉”
  13. Linux应用程序开发 基础知识
  14. 液晶显示屏的C语言编码,AMPIRE12864液晶C语言代码
  15. node命令与切换node版本
  16. 云服务器对比网站,云主机与普通服务器对比
  17. burpsuite 爆破的骚操作
  18. 电子招投标给企业带来的实用价值
  19. 软件产品登记申报需要的材料
  20. PHP创建PDF文件(通过FPDF类库)

热门文章

  1. ubuntu vscode 换字体
  2. js 实现微信打飞机小游戏 小练习
  3. word自带公式编辑_Word公式编辑器下载_Word公式编辑器官方下载-太平洋下载中心...
  4. 基于DPLL的SAT求解器
  5. JavaScript也可以制作颜色拾取工具了
  6. SI,SIS,SIR,SEIRD模型
  7. 使用dom4j生成KML文件
  8. db2 迁移 aix linux,DB2从windowsXP迁移至AIX完整过程
  9. Android各种版本概述
  10. java唯一并且有序集合_成都汇智动力-Java集合类详解