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

微信小程序入门与实战之rpx响应式单位与flex布局

新建页面的技巧与规则

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:
在这里插入图片描述
app.json必须有一个pages数组:
在这里插入图片描述
一个小程序页面由四个文件组成,分别是:
在这里插入图片描述
注意:为了方便开发者减少配置项,描述页面的四个文件必须具有相同的路径与文件名
新建pages文件夹,再新建index文件夹,点击新建page可以同时自动创建四个基本文件
在这里插入图片描述
在这里插入图片描述

创建后编译器会自动在app,json目录的pages下配置好刚刚创建的界面(在json文件格式没有错误的清情况下才会自动配置):
在这里插入图片描述
这时候我们编译运行项目,就能看见效果:
在这里插入图片描述

image标签显示一张图片

微信小程序使用image标签显示图片,通过src获取图片,src先输入的/表示根目录,获取根目录下创建好的images文件夹中的图片。
绝对路径表示:
在这里插入图片描述
相对路径表示(…表示上一级的目录)先返回两次的上一级目录到根目录再访问images文件夹:
在这里插入图片描述
在这里插入图片描述

小程序rpx响应式单位的特点

当我们查看预览效果发现小程序显示出来的效果时椭圆,而不是我们源文件的正圆:
在这里插入图片描述
那我们该怎么将图片调整为正常的比例呢?
通过设置style属性(源文件的边长也为200px):
在这里插入图片描述

这时候我们能发现显示出来的效果为正圆(但显示大小比源文件的大):
在这里插入图片描述
为了使小程序能够达到我们想要的效果,我们应该使用微信官方推荐的rpx。

在WXSS中,引入了rpx(responsive pixel)尺寸单位。引用新尺寸单位的目的是,适配不同宽度的屏幕,开发起来更简单。小程序编译后,rpx会做一次px换算。换算是以375个物理像素为基准,也就是在一个宽度为375物理像素的屏幕下,1rpx = 1px。举个例子:iPhone6屏幕宽度为375px,共750个物理像素,那么1rpx = 375 / 750 px = 0.5px。

那么为什么我们刚开始我们没有设置style的时候显示的图片是长方形呢?
因为image标签默认宽度320px、高度240px。

分离CSS样式到WXSS文件中

不推荐直接将样式用style写在标签上,最好将样式写在WXSS文件中,WXSS 与我们熟知的CSS没有太大差别。

.avatar{
  width: 200rpx;
  height: 200rpx;
  margin-top: 160rpx;
}
<!--pages/welcome/welcome.wxml-->
<image class= "avatar" src="../../images/avatar/1.png"></image>
<text>Hello</text>
<button>开启小程序之旅</button>

在这里插入图片描述

初识flex布局进行垂直分布布局

使用View标签,类似于html中的div,我们经常在微信小程序中布局的使用, 我们称之为容器。
flex是基于容器的布局,我们要使用container来表示flex:

.container{
  display: flex;
}

通过view标签使用container

<view class="container">
  <image class= "avatar" src="../../images/avatar/1.png"></image>
  <text>Hello</text>
  <button>开启小程序之旅</button>
</view>

这时候我们运行项目,会发现布局改变,如图所示:
在这里插入图片描述
但我们实际想要的是垂直的效果,我们要将flex-direction修改为column,默认的是row也就是我们刚刚没有设置flex-direction却也能看到水平排列的原因,设置好的效果如图所示:
在这里插入图片描述
不推荐使用微信官方的button组件(会有一些内置的样式、属性),这里我们通过自定义的View来实现Button

  <view>
    <text>开启小程序之旅</text>
  </view>

flex布局的align-items

我们在flex布局的样式编写中添加代码:

  align-items: center;

得到了居中的效果
在这里插入图片描述
为导航语添加样式:

.motto{
  color: #666;
  margin-top: 160rpx;
  font-size: 32rpx;
  font-weight: bold;
}
  <text class="motto">Hello</text>

如果我们想设置全局的字体颜色,可以在app.wxss下设置(如果没有设置单独的样式,则该字体默认为app.wxss下配置的字体)()

自己编写一个Button组件

设置外边框属性(设置边框内的文字水平居中要用到text-align: center),边框圆角为border-radius:

.journey-container{
  border: 1px solid #405f80;
  width: 200rpx;
  height: 80rpx;
  border-radius: 5px;
  text-align: center;
  margin-top: 200rpx;
}

设置边框内文字属性(使用line-height: 80rpx与边框等高来实现垂直居中):

.journey{
  font-size: 22rpx;
  color: #405f80;
  line-height: 80rpx;
  font-weight: bold;
}

应用样式:

  <view class="journey-container">
    <text class="journey">开启小程序之旅</text>
  </view>

实现效果:
在这里插入图片描述

实现全屏的背景颜色

当我们在container使用background-color时我们发现背景颜色并不能填充整个布局,因为我们并没有设置container的高度,其高度是自适应的,跟随内部布局变化而变化:
在这里插入图片描述
通过在app.json下设置: “window”:{“navigationBarBackgroundColor”:“#b3d4db”
}实现导航栏的背景颜色达到沉浸的效果:
在这里插入图片描述

在这里插入图片描述
那么我们该如何实现全屏的背景颜色呢?
打开调试器,可以看到其实在我们自定义的View的外层还有一层page:

在这里插入图片描述
所以我们只需要设置page的默认背景颜色就可以全屏的背景颜色:在这里插入图片描述

相关文章:

  • @RequestMapping用法详解
  • 【MATLAB教程案例20】关于优化类算法的改进方向探索及matlab仿真对比分析
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • mysql的聚簇索引和非聚簇索引
  • 【React项目】从0搭建项目,项目准备和基础构建
  • markdown数学公式编辑指令大全
  • ContentProvider 之 监听共享数据变化
  • 数字IC前端设计怎么学?薪资前景好吗?
  • IDEA+Java控制台实现房屋信息管理系统
  • 微服务项目:尚融宝(终)(核心业务流程:整合Rabbit MQ发送短信)
  • Python骚操作,实现驾考自动答题,这就直接满分了?
  • 【Gitee学习之路】Git概述安装教程基本操作指令
  • 一眼就看懂;Android App 开发前景介绍及学习路线规划
  • Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
  • 想学习软件测试,求推荐看什么书或者教程?
  • .pyc 想到的一些问题
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • Bytom交易说明(账户管理模式)
  • CSS相对定位
  • Javascript基础之Array数组API
  • Less 日常用法
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • MySQL几个简单SQL的优化
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 产品三维模型在线预览
  • 解析带emoji和链接的聊天系统消息
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 爬虫模拟登陆 SegmentFault
  • 前端技术周刊 2019-01-14:客户端存储
  • 数据可视化之 Sankey 桑基图的实现
  • 微信支付JSAPI,实测!终极方案
  • 一个JAVA程序员成长之路分享
  • 优秀架构师必须掌握的架构思维
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (3)STL算法之搜索
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (一)基于IDEA的JAVA基础1
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET6实现破解Modbus poll点表配置文件
  • .NET构架之我见
  • .NET和.COM和.CN域名区别
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • ::什么意思