【微信小程序创作之路】- 小程序常用页面样式

【微信小程序创作之路】- 小程序常用页面样式

第四章 微信小程序用页面样式


文章目录

  • 【微信小程序创作之路】- 小程序常用页面样式
  • 前言
  • 一、总体样式--全局样式and局部样式
    • 1.全局样式
    • 2.局部样式
  • 二、Flex布局
    • 🍉🍉🍉rpx单位
  • 三、样式导入
  • 四、常用按钮样式
  • 五、图片插入
  • 六、图片轮播
  • 七、图片滚动
  • 八、条件渲染
    • 1.< wx:if>
    • 2.< wx:for>
  • 总结


前言

本章节主要讲解,小程序中常用样式,涉及到WXML和WXSS文件。例如:页面布局、整体样式、按钮、图片轮播、条件渲染(wx:if wx:for)等。


一、总体样式–全局样式and局部样式

1.全局样式

微信小程序顶层的app.wxss文件,代表小程序全局样式,作用于所有页面。采用CSS语法设置页面样式。
在这里插入图片描述
🧀我们通过代码来演示
🏀🏀🏀在最顶层的app.wxss文件中设置整个页面背景为紫色,<text>标签的字体为30磅,颜色字体为粉红色。

page {background-color: blueviolet;
}text{font-size: 30pt;color: pink;
}

小程序第一页
在这里插入图片描述
🏀🏀🏀页面跳转

<view>
<navigator url="../home/home">跳转到第二页</navigator>
</view>

小程序第二页
在这里插入图片描述

2.局部样式

在页面文件内创建的.wxss文件为局部样式,只作用于当前页面。
🍉🍉🍉注:当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式。
在这里插入图片描述
🧀我们通过代码来演示
🏀🏀🏀把home文件中的home.wxss文件中设置整个页面背景为黑色,<text>标签的字体为30磅,颜色字体为白色。

home.wxss代码

/* pages/home/home.wxss */page {background-color: black;
}text{font-size: 30pt;color: white;
}

首页
在这里插入图片描述
第二页
在这里插入图片描述

二、Flex布局

各种页面元素的位置关系,称为布局(layout),小程序官方推荐使用 Flex 布局。如果有想了解Flex布局的同学,可以看阮一峰老师的《Flex 布局教程》。

🧀我们通过代码来演示
在home.wxss文件中加入以下代码

page {height: 100%;width: 750rpx;display: flex;justify-content: center;align-items: center;
}

在这里插入图片描述
下面解释一下上面这段 WXSS 代码,还是很简单的。

(1)height: 100%;:页面高度为整个屏幕高度。
(2)width: 750rpx;:页面宽度为整个屏幕宽度。
(3)display: flex;:页面(home)采用 Flex 布局。
(4)justify-content: center;:页面的一级子元素(这个示例是< view>)水平居中。
(5)align-items: center;:页面的一级子元素(这个示例是< view>)垂直居中。一个元素同时水平居中和垂直中央,就相当于处在页面的中央了。

🍉🍉🍉rpx单位

通过上面的代码示例我们发现设置高度和宽度的单位是rpx,那rpxpx之间的有什么关系呢?
①rpx简介
rpx(responsive pixel)是微信小程序用来解决屏幕适配的尺寸单位。

②rpx原理
rpx实现原理:因为不同的手机屏幕大小不同,为了使小程序适应所有设备,rpx把所有的设备屏幕宽度分为750份(任何设备的屏幕总宽度为750rpx)。在较小的设备上,1rpx所代表的宽度较小;较大的设备上,1rpx所代表的宽度较大。

小程序在不同设备上运行时,就会把 rpx 的样式单位换算成对应的像素单位(px)来渲染,从而实现屏幕适配。

③rpx和px之间的单位换算
小程序官方建议:开发小程序时,可以用IPhone6作为视觉稿的标准。
因为IPhone6,屏幕宽度为375px,换算成rpx:

设备rpx换算pxpx换算rpx
IPhone61rpx=0.5px1px=2rpx

三、样式导入

使用WXSS提供的@import语法,可以导入样式表。
🧀我们通过代码来演示
项目结构
在这里插入图片描述

index.wxss中加入使字体变绿的样式

/**index.wxss**/
.indexss{font-size: 30pt;color: green;
}

home.wxml引入样式

<view><text class="indexss">第二页</text>
</view>

在这里插入图片描述
我们发现并没有改变
在home.wxss中引入index.wxss

@import"../index/index.wxss"

字体颜色发生了变化
在这里插入图片描述

四、常用按钮样式

小程序按钮使用<button> </button>闭合标签。
按钮基本属性,更多属性可以查看小程序官网 button

属性类型默认值必填说明
sizestringdefault按钮的大小
typestringdefault按钮的样式类型
plainbooleanfalse按钮是否镂空,背景色透明
disabledbooleanfalse是否禁用
loadingbooleanfalse名称前是否带 loading 图标
form-typestring用于 form 组件,点击分别会触发 form 组件的 submit/reset 事件
open-typestring微信开放能力

🧀我们通过代码来演示
🏀🏀🏀type属性指定按钮的颜色类型

<!-- 通过type属性指定按钮颜色类型 -->
<button >普通按钮</button>
<button type="default" >默认按钮</button>
<button type="primary">主色调</button>
<button type=warn">警告</button>

在这里插入图片描述

🏀🏀🏀size属性指定按钮的大小 默认值只有两个

  • default 默认大小
  • mini 小尺寸
<!-- 通过size属性指定按钮的大小 -->
<button size="mini" >普通按钮</button>
<button type="default" size="default" >默认按钮</button>

在这里插入图片描述

🏀🏀🏀各种样式按钮
点击进入
在博主“热爱编程的小白白”文章中看到此网站,很优秀。感谢大佬的文章
选择自己喜欢的按钮
在这里插入图片描述

把CSS和HTML直接复制到wxss和wxml中
在这里插入图片描述
index.wxss

.btn {display: block;padding: 0.7em 1em;background: transparent;outline: none;border: 0;color: #d4af37;letter-spacing: 0.1em;font-family: monospace;font-size: 17px;font-weight: bold;z-index: 1;}.cube {position: relative;transition: all 0.5s;}.cube .bg-top {position: absolute;height: 10px;background: #d4af37;bottom: 100%;left: 5px;right: -5px;transform: skew(-45deg, 0);margin: 0;transition: all 0.4s;}.cube .bg-top .bg-inner {bottom: 0;}.cube .bg {position: absolute;left: 0;bottom: 0;top: 0;right: 0;background: #d4af37;transition: all 0.4s;}.cube .bg-right {position: absolute;background: #d4af37;top: -5px;z-index: 0;bottom: 5px;width: 10px;left: 100%;transform: skew(0, -45deg);transition: all 0.4s;}.cube .bg-right .bg-inner {left: 0;}.cube .bg-inner {background: #28282d;position: absolute;left: 2px;right: 2px;top: 2px;bottom: 2px;}.cube .text {position: relative;transition: all 0.4s;}.cube:hover .bg-inner {background: #d4af37;transition: all 0.4s;}.cube:hover .text {color: #28282d;transition: all 0.4s;}.cube:hover .bg-right,.cube:hover .bg,.cube:hover .bg-top {background: #28282d;}.cube:active {z-index: 9999;animation: bounce .1s linear;}@keyframes bounce {50% {transform: scale(0.9);}}

index.wxml

<button type="button" class="btn cube cube-hover"><div class="bg-top"><div class="bg-inner"></div></div><div class="bg-right"><div class="bg-inner"></div></div><div class="bg"><div class="bg-inner"></div></div><div class="text">Hover Me</div>
</button>

在这里插入图片描述

五、图片插入

图片插入使用<image> </image>标签实现。
<image> </image>标签有很多属性,点击查看

属性类型默认值必填说明
srcstring图片资源地址
modestringscaleToFill图片裁剪、缩放的模式
stylestring图片样式

🧀我们通过代码来演示
🏀🏀🏀通过代码指定图片的高度和宽度占屏幕一半

<view><image src='https://img1.baidu.com/it/u=1919509102,1927615551&fm=253&fmt=auto&app=120&f=JPEG?w=889&h=500' style="height: 375rpx; width: 375rpx;"></image></view>

在这里插入图片描述

六、图片轮播

图片轮播使用<swiper> </swiper>标签实现
此标签有很多属性

属性类型默认值必填说明
indicator-dotsbooleanfalse是否显示面板指示点
indicator-colorcolorrgba(0, 0, 0, .3)指示点颜色
indicator-active-colorcolor#000000当前选中的指示点颜色
autoplaybooleanfalse是否自动切换
intervalnumber5000自动切换时间间隔
circularbooleanfalse是否采用衔接滑动

🧀我们通过代码来演示
🏀🏀🏀通过代码实现图片轮播
这里我们直接引用《阮一峰老师的例子》

<view><swiperindicator-dots="{{true}}"  autoplay="{{true}}"style="width: 750rpx;"indicator-active-color="#000000"><swiper-item><image src="https://picsum.photos/200"></image></swiper-item><swiper-item><image src="https://picsum.photos/250"></image></swiper-item><swiper-item><image src="https://picsum.photos/300"></image></swiper-item></swiper>
</view>

上述代码中,**< swiper>组件就是轮播组件,里面放置了三个< swiper-item>组件,表示有三个轮播项目,每个项目就是一个< image>**组件。
在这里插入图片描述

七、图片滚动

图片滚动使用<scroll-view> </scroll-view>标签实现
🧀我们通过代码来演示
🏀🏀🏀通过代码实现纵向滚动
home.wxss

.container_2 view{
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.container_2 view:nth-child(1){
background-color: red;
}
.container_2 view:nth-child(2){background-color: yellowgreen;
}
.container_2 view:nth-child(3){background-color: blue;
}
.container_2{display: flex;justify-content: space-around
}.container_2{border: 1px solid yellowgreen;height: 130px;width: 100px;
}

home.wxml

<scroll-view class="container_2" scroll-y><view>G</view>
<view>C</view>
<view>L</view>
</scroll-view>

在这里插入图片描述

八、条件渲染

条件渲染使用<wx:if> </wx:if> <wx:for> </wx:for>标签实现

1.< wx:if>

🧀我们通过代码来演示
🏀🏀🏀通过代码实现wx:if
index.wxml

<button wx:if="{{flag==0}}">普通按钮</button>
<button type="default" wx:elif="{{flag==1}}">默认按钮</button>
<button type="primary" wx:elif="{{flag==2}}">主色调</button>
<button type=warn" wx:else>警告</button>

index.js

Page({data: {now: (new Date()).toLocaleString(),flag: 1}
})

在这里插入图片描述
当我们把flag改为10

index.js

Page({data: {now: (new Date()).toLocaleString(),flag: 10}
})

在这里插入图片描述

🏀🏀🏀一次性通过<wx:if>控制多个组件,使用<block>

<block wx:if="{{flag==10}}"><button type="default">默认按钮</button><button type="primary">主色调</button>
</block>

在这里插入图片描述

🍉🍉🍉注:wx:if 与 hidden不同

wx:if 使用动态创建和移除元素的方式控制
hidden使用切换样式方式控制

2.< wx:for>

该标签有很多属性

属性类型默认值必填说明
wx:for-indexstring指定当前循环项的索引变量名
wx:for-itemstring指定当前项变量名
wx:keystring指定当前数组key

🏀🏀🏀通过代码实现< wx:for>
当我们引入js中数组时,可以通过index得到索引,通过item得到内容
index.js

Page({data: {now: (new Date()).toLocaleString(),flag: 10,arry:['java','pyhton','C++']}
})

index.wxml

<view wx:for="{{arry}}">数组索引为:{{index}},内容为:{{item}}
</view>

在这里插入图片描述

🏀🏀🏀wx:for-indexwx:for-item使用
index.wxml

<view wx:for="{{arry}}" wx:for-index="id" wx:for-item="name"> 数组索引为:{{id}},内容为:{{name}}
</view>

在这里插入图片描述


总结

本文通过很多代码示例来展示了小程序常用页面样式,这里非常感谢阮一峰老师和小白白大佬的博客,下一章我们讲解JSON文件配置小程序导航栏信息等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19290.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Security OAuth2.0(2):基于session的认证方式

文章目录 认证流程创建工程1 创建maven工程2. 实现认证功能3. 会话功能4. 授权功能 认证流程 \qquad 基于session的认证方式如下 \qquad 它的交互流程是&#xff0c;用户认证成功后&#xff0c;在服务端生成用户相关的数据保存在session(当前会话)中&#xff0c;发给客户端的s…

HuggingGPT解析:使用 ChatGPT及HuggingFace上的族系解决AI问题

HuggingGPT解析&#xff1a;使用 ChatGPT及HuggingFace上的族系解决AI问题 HuggingGPT是一个利用大型语言模型(LLMs)来解决复杂AI任务的框架。其基本理念是&#xff0c;考虑到LLMs&#xff08;例如ChatGPT&#xff09;在语言理解、生成、交互和推理方面展现出了卓越的能力&…

Spring Boot 中的 @Scheduled 注解是什么,如何使用

Spring Boot 中的 Scheduled 注解是什么&#xff0c;如何使用 引言 Spring Boot 是一个非常流行的 Java Web 开发框架&#xff0c;它提供了很多方便的功能&#xff0c;其中就包括了 Scheduled 注解。本文将会介绍 Scheduled 注解的基本用法&#xff0c;并附上代码示例&#x…

使用wxPtyon和pillow开发拼图小游戏(一)

刚学习python&#xff0c;心血来潮&#xff0c;使用wxPython和pillow开了一个简单的拼图小游戏&#xff0c;大家分享一下 wxPython是Python语言的一套优秀的GUI图形库&#xff0c;在此项目里主要用来开发GUI客户页面&#xff1b;Pillow是一个非常好用的图像处理库&#xff0c;…

【学习】ChatGPT对问答社区产生了哪些影响?

引用 StackExchange 社区 CEO Prashanth Chandrasekar 的一篇博客标题 “Community is the future of AI”&#xff0c;引出本文的观点&#xff0c;即ChatGPT对问答社区产生了颠覆性影响&#xff0c;问答社区必须釜底抽薪、涅槃重生&#xff0c;但我们必须坚信“社区才是AI的未…

pycharm 配置github

文章目录 环境必备操作步骤1.在pycharm中配置git和github2.获取ssh密钥3.将本地项目与github仓库连接4.同步本地项目到github 相关问题参考文章 环境必备 pycharm 2020.1&#xff1a;集成开发环境&#xff0c;需要安装并配置环境 PyCharm 开发环境搭建指南&#xff1a;安装、配…

Jmeter之数据参数化方法汇总

一、什么是参数化 Jmeter参数化是指将脚本中的某些需要输入数据使用参数来代替&#xff0c;在脚本运行时指定参数的取值范围和规则。脚本在运行时就可以根据需要选取不同的参数值作为输入。 常用的Jmeter的参数化请求&#xff0c;包括以下几种方式&#xff1a; 用户参数用户…

LRU 缓存

题目链接 LRU 缓存 题目描述 注意点 如果插入操作导致关键字数量超过 capacity &#xff0c;则应该 逐出 最久未使用的关键字函数 get 和 put 必须以 O(1) 的平均时间复杂度运行 解答思路 如果想以O(1)的速度进行get&#xff0c;则需要将对应的key、value存到map中如果想…

gitlab:(二)gitlab添加win10 台式机的ssh key

当前gitlab版本为12系列&#xff1a; 点击settings 找到ssh keys &#xff0c;再找到“ generate one or use an existing key.” 点击 generate one 参考如下的教程&#xff1a; window cmd 命令行示例 添加 ssh keys 添加的效果

Qt DAY5 Qt制作简易网络聊天室

服务器 widget.h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QVector>//向量&#xff0c;函数类模板 #include <QMessageBox>namespace Ui { class Widget; }class Wid…

python接口自动化(二十五)--unittest断言——下(详解)

简介 本篇还是回归到我们最初始的话题&#xff0c;想必大家都忘记了&#xff0c;没关系看这里&#xff1a;传送门 没错最初的话题就是登录&#xff0c;由于博客园的登录机制改变了&#xff0c;本篇以我找到的开源免费的登录API为案例&#xff0c;结合 unittest 框架写 2 个用例…

使用json-server 模拟后端数据

1. json-server是什么 json-server 是一个 Node 模块&#xff0c;运行 Express 服务器&#xff0c;你可以指定一个 json 文件作为 api 的数据源。 简单的说&#xff0c;它可以模拟小型后台接口&#xff0c;在一个JSON文件中操作数据&#xff0c;是基于的node.js的一个模块。 比…