热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信小程序开发笔记(三)flex布局和自适应单位rpx

什么是flex布局在上一篇博客里,笔者在hello.wxss里使用了display:flex;。什么是flex呢?flex布局是W3c组织在2009年

什么是flex布局

在上一篇博客里,笔者在hello.wxss 里使用了display: flex; 。什么是flex呢?
在这里插入图片描述
flex布局是W3c组织在2009年提出的一个新的布局方案,其宗旨是让页面的布局样式更加简单,并且可以很好地支持响应式布局。这并不是小程序所独有的技术,它本身是CSS语法的一部分。只不过早期时候,主流的浏览器对flex布局的支持并不完善,造成了开发者并不知道与这种布局方式的存在或者使用非常少,我们还是习惯使用传统的position和float属性来布局。但传统的布局方式有它的缺陷 ,比如垂直居中就不是那么容易实现,flex布局可以很好的解决这些问题。现在,小程序能够非常好的支持flex布局,并且这也是官方推荐的布局方式。

响应式布局

上面提到了响应式布局 这一个概念,这个概念是为解决移动互联网浏览而诞生的,主要为了解决同一个WEB页面在不同设备和环境中均能获得一致性用户体验的问题。在设计页面的时候,为了方便,我们通常只在某一种分辨率下预览我们的界面,比如上一篇博客里,笔者就选择了iPhone6作为模拟的机型预览小程序的页面。响应式布局的目标就是在其他移动设备(比如ipad,各种不同分辨率的安卓手机)访问该界面的时候,页面的整体布局不发生改变。我们之前设计hello页面用到的flex布局其实就是响应式布局,该页面在Nexus5和ipad pro上访问的时候,不会由于分辨率的不同而造成页面结构的改变。
在这里插入图片描述
ipad pro

flex布局的简单使用

display: flex 主要作用在容器上,比如view组件就是一个容器。设置display: flex是使用flex布局的先决条件。
然后我们来了解的概念。类似平面直角坐标系中有不同方向的两条轴(X轴和Y轴)一样,使用Flex布局的容器内也有两条隐形的轴,一条称为主轴,另一条称为交叉轴,两条
轴也相互垂直。我们只需要通过flex-direction指定主轴的方向,另一方向的轴自动成为交叉轴

flex-direction: column; 主轴垂直,方向自上而下,交叉轴为水平方向flex-direction: column-reverse;主轴垂直,方向自下而上,交叉轴为水平方向flex-direction: row;主轴水平,方向自左向右,交叉轴为垂直方向flex-direction: row-reverse;主轴垂直,方向自右向左,交叉轴为垂直方向

  • 1
  • 2
  • 3
  • 4

下面四张图中,红色的箭头代表的是主轴方向,容器内的元素在主轴方向上按顺序排列。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
另外,我们还用到了一个align-items:center属性,这个是设置容器元素在交叉轴上的位置,center代表在交叉轴上居中,当然还可以设置其他的值,不过这是css的知识了,读者自行尝试,在这里就不赘述了。
最后,列出在wxml中的其他容器,如下:

组件名说明
view视图容器
scroll-view可滚动视图容器
swiper滑块视图容器
movable-view/movable-area可移动的视图容器
cover-view覆盖在原生组件之上的文本视图
cover-image覆盖在原生组件之上的图片视图

自适应单位rpx

大家应该注意到了,在hello.wxss样式表里,绝大多数长度单位都设置的是rpx这个全新的单位。比如设置图片大小的时候。
在这里插入图片描述

要透彻的了解rpx这个单位,还需要对移动端的分辨率有一定的了解,比如物理分辨率px和逻辑分辨率pt等概念。简单的说,rpx将随着屏幕尺寸的变换而变换,但px不会。这里我们只需要记住如下的结论:
在iPhone6的宽度750个物理像素作为标准来做设计图,1物理像素=1rpx=0.5px,
比如在iPhone6宽度750物理像素下,要显示一张宽和高都是200像素*200像素的图片,就要把图片的高度和宽度都设置为200rpx,或者100px ,这时候在iphone6上的显示的效果都是一样的,但是我们换到其他机型的时候,就会出现差异。因为rpx将随着屏幕尺寸的变换而变换,但px不会改变大小。
下面做个尝试,在iPhone6尺寸下,将图片的单位改为px,图片的大小没有发生改变,然后把模拟器切换都ipad pro ,图片还是一样的大小(但是相对于整个页面来说,变小了),即px作为单位的时候,不会由于页面的变大,该改变大小。
在这里插入图片描述
在这里插入图片描述
注意:只有在iPhone6尺寸下,1物理像素=1rpx=1px才成立,官方推荐使用iPhone6的尺寸标准来设计界面。

rpx和px 之间的选择

在进行移动开发的时候,我们经常要考虑不同分辨率下页面的显示情况。比如对于margin 属性或者image组件,很多时候,需要他们随着设备的尺寸不同动态的变化,以保持页面元素之间的分布可以保持一定的比例关系
但有时候,比如boder属性(设置边框的样式),我们不需要它动态变化。如果随着页面的放大,边框的线条变得越来越宽,页面就不好看了。
所以选择使用rpx还是px需要看实际情况,此外也需要读者自己去多多尝试


推荐阅读
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • 微信小程序导航跟随的实现方法
    本文介绍了在微信小程序中实现导航跟随的方法。通过设置导航的position属性和绑定滚动事件,可以实现页面向下滚动到导航位置时,导航固定在页面最上方;页面向上滚动到导航位置时,导航恢复到原始位置;点击导航可以平滑跳转到相应位置。代码示例也给出了具体实现方法。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 本文介绍了Cocos2dx学习笔记中的更新函数scheduleUpdate、进度计时器CCProgressTo和滚动视图CCScrollView的用法。详细介绍了scheduleUpdate函数的作用和使用方法,以及schedule函数的区别。同时,还提供了相关的代码示例。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • 起因由于我录制过一个小程序的课程,里面有消息模板的讲解。最近有几位同学反馈官方要取消消息模板,使用订阅消息。为了方便大家容易学 PythonFlask构建微信小程序订餐系统 课程。 ... [详细]
  • 项目需要实现弹幕,网上参考了各种方法,最后觉得transform+transition实现的效果在移动设备上性能最好,在iphone6和红米4上测试,看不到 ... [详细]
author-avatar
求道金林
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有