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

news2024/11/23 15:20:12

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

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


文章目录

  • 【微信小程序创作之路】- 小程序常用页面样式
  • 前言
  • 一、总体样式--全局样式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>
  <swiper
    indicator-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.coloradmin.cn/o/744431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HEGERLS四向穿梭车的调度算法如何解决同层多车时车辆路径规划和避让的问题?

纵观全球&#xff0c;消费需求正在发生转变&#xff0c;无论是个体消费还是企业消费&#xff0c;呈现出个性化、定制化、网络化的趋势。因此生产企业面临着产品多样化、订单碎片化、服务定制化的新挑战&#xff0c;仓储密集存储、超大拆零作业量需求愈加明显&#xff0c;且竞争…

苹果平板用不用买原装笔?ipad平替电容笔排行榜

我们应该都知道&#xff0c;第一款ipad早诞生于十年前&#xff0c;如今已是家喻户晓的平板电脑产品。ipad版本系列的更新非常迅速&#xff0c;销售也非常火爆。其中&#xff0c;iPad的配件起到了很大的作用&#xff0c;比如我们今天要介绍的这款电容笔&#xff0c;这款ipad的配…

vue3+ts中常用的两个按钮选择事件写法

1. 效果演示 2.vue3单页面代码演示 <template><div class"btns"><divv-for"(item, index) in nams"click"btnCol(index)":class"current index ? active : btn">{{ item }}</div></div><div clas…

【MySQL】从零开始的JDBC编程

1、JDBC的认识 学了这么久的 MySQL&#xff0c;我们一直采用的都是 MySQL 软件自带的客户端&#xff08;黑框框&#xff09;&#xff0c;来进行跟MySQL服务器进行交互。但是在实际开发中我们很少在黑框框中手动输入SQL&#xff0c;大多数都是通过代码自动执行SQL的。既然大多数…

单片机第一季:零基础4——LED点阵

1&#xff0c;第八章-LED点阵 如何驱动LED点阵&#xff1a; (1)单片机端口直接驱动。要驱动8*8的点阵需要2个IO端口&#xff08;16个IO口&#xff09;、要驱动16*16的点阵需要4个IO端口&#xff08;32个IO口&#xff09;。 (2)使用串转并移位锁存器驱动。要驱动16*16点阵只需要…

7.3Java EE——Bean的实例化

一、构造方法实例化 下面通过一个案例演示Spring容器如何通过构造方法实例化Bean。 &#xff08;1&#xff09;、在IDEA中创建一个名为chapter07的Maven项目&#xff0c;然后在项目的pom.xml文件中配置需使用到的Spring四个基础包和Spring的依赖包。 <dependencies>&…

让白嫖来的阿里云服务器来跑jupyter

文章目录 概要第一步 注册账号并创建实例第二步 连接实例并安装相关软件和依赖包安装python3更新pip安装jupyter生成jupyter配置文件配置之后访问云服务器jupyter的密码修改jupyter配置文件在后台启动jupyter 第三步 访问云服务器上的jupyter结语 概要 按照一般情况&#xff0…

【云原生|Docker系列第2篇】Docker的安装和配置

欢迎来到Docker入门系列的第二篇博客&#xff01;在上一篇博客中&#xff0c;我们已经介绍了Docker的基本概念和作用&#xff0c;以及为什么它成为现代应用开发和部署的关键技术。本篇博客将着重讨论Docker的安装和配置&#xff0c;帮助您开始使用Docker并为您的应用程序提供一…

对于加密数据(数据库字段级别加密)存储和并搜索的一些调查

一、简述 如果您认为不良行为者不可避免地会进入您的网络&#xff0c;那么在将敏感数据放入数据库或文档存储之前对其进行加密是保护数据的最佳方法。对于敏感数据应该这么做。这种在存储之前进行加密的方法称为应用层加密&#xff0c;有相当数量的公司使用它来保护其敏感数据。…

MATLAB 迭代最近点ICP配准 (23)

MATLAB 迭代最近点ICP配准 (23) 一、算法介绍二、具体代码1.流程2.代码3.函数详解4.结果展示一、算法介绍 ICP 迭代最近点配准方法,基本是一种固定的点云精配准方法,其变种很多,这里是点到点的传统点云ICP配准方法,具体的过程如上图所示:需要提供红色和蓝色两组点云,其…

echarts 字符串模板和formatter的使用(鼠标悬浮显示的气泡自定义)

需求&#xff1a;在鼠标悬浮中加一个总数字段&#xff0c;图1为默认&#xff0c;图2为需要实现的效果 有两种方式&#xff0c;第一种&#xff1a;在图表添加一条新的图形&#xff0c;默认会自动添加 需要在整个数据列表中计算出来成为新的数组 methods: {// 根据自己的业务情…

SpringBoot源码分析(4)--Environment(下)/配置文件加载原理

SpringBoot源码分析 SpringBoot源码分析(1)–SpringBootApplication注解使用和原理/SpringBoot的自动配置原理详解SpringBoot源码分析(2)–SpringBoot启动源码(万字图文源码debug讲解springboot启动原理)SpringBoot源码分析(3)–Environment简介/prepareEnvironment准备环境&a…

UNet训练自己的数据集

pycharm中python环境设置&#xff1a; 打开左上角File ---> Settings ---> 如下图 ---> Add 选择合适的python版本&#xff0c;进行环境设置 UNet训练自己的数据集&#xff1a; 一、训练自己的数据集 1、本文使用VOC格式进行训练。 2、训练前将标签文件放在VOCde…

谈 Dojo 应用的 UI 自动化测试

目录 前言&#xff1a; Dojo 是什么&#xff1f; Dojo 应用 UI 自动化测试面临的挑战 A. 异步请求的处理 B. 元素定位 图 1. Dojo 按钮小部件 C. Dojo 复杂性 D. 产品复杂性 E. 频繁的 UI 更改 F. Dojo 升级 Dojo 应用 UI 自动化测试框架挑选&#xff08;设计&#…

IIS WebApi: 文件上传,大小限制,提示413 (Request Entity Too Large)

问题&#xff1a;IIS WebApi文件上传&#xff0c;大小限制&#xff0c;提示413 (Request Entity Too Large) 一&#xff1a;在web.config上配置,按照以下格式&#xff0c;将下列标红加粗的地方&#xff0c;按照对应位置复制到web.config中&#xff0c;即可解决。 注&#xff…

本质安全设备标准(IEC60079-11)的理解(五)绝对可靠器件infallible components

在前面的章节中我们简单提及到绝对可靠器件&#xff0c; 这里重新摘抄如下&#xff1a; “这里顺便说一下可靠元器件&#xff08;infallible component&#xff09;的理解。它在标准里面占有不少的章节&#xff0c;而且开始理解他也有一些费劲。本人从两个方面理解它 &#x…

工艺流程图绘制流程?试试这样绘制

工艺流程图绘制流程&#xff1f;绘制工艺流程图可以帮助我们更好地理解工艺流程&#xff0c;确定生产流程&#xff0c;优化生产效率&#xff0c;并帮助人们更好地进行生产管理和质量控制。通过工艺流程图&#xff0c;我们可以清晰地了解每一步骤所需的设备和材料&#xff0c;以…

【Java】基于云计算-智慧校园电子班牌系统源码带原生微信小程序端

一、前言 智慧校园系统是利用物联网和云计算&#xff0c;强调对教学、科研、校园生活和管理的数据采集、智能处理、为管理者和各个角色按需提供智能化的数据分析、教学、学习的智能化服务环境。它包含“智慧环境、智慧学习、智慧服务、智慧管理”等层面的内容。 智慧校园描绘的…

webpack笔记一

文章目录 什么是webpack安装webpack一、创建配置项二、安装webpack局部安装(推荐)全局安装 三、安装webpack-cli(可选) 核心概念入口(entry)出口(output)loader插件(plugin)模式(mode) 项目实例webpack基本使用 html打包插件&#xff1a;html-webpack-plugin文件拷贝插件&#…

电子版简历有哪些(合集)

word、Excel、PPT简历 传统的电子版简历&#xff0c;即用文档软件编辑的简历。这一类简历的呈现模式只有单一的文字、图片或表格。传统&#xff0c;意味着被广泛求职者所使用。优点包括有&#xff1a;传统、端庄、直观。但传统也意味着没有创新。缺点包括有&#xff1a;乏味、不…