6、微信小程序的布局

article/2025/9/28 4:13:48

文章目录

  • 前言
  • 一、传统基本布局
    • 1.盒子模型
    • 2.显示方式Display
    • 3.定位position
    • 4.溢出属性Overflow
    • 5.浮动Float
    • 6.对齐
  • 二、Flex弹性布局
    • 1.基本属性
    • 2.使用示例


前言

wxss 指的是 Wei Xin Style Sheet,微信团队定义的一套用以实现小程序布局样式的层叠样式表,与CSS非常接近。可以理解成 wxss 是 css 的一个子集,也包括选择器、属性、值部分,同样具有层叠的特征。


一、传统基本布局

小程序会自动根据 wxml 文件名,自动将 wxss 进行加载,例如 当加载 pages/style/index.wxml 时,会自动将 pages/style/index.wxss 加载。

1.盒子模型

margin(外边距),边框外的区域,外边距是透明的;
border(边框),围绕在内边距和内容外的部分;
padding(内边距),填充属性,是指内容周围的区域,内边距也是透明的;
content(内容),盒子的实际内容,用于展示页面组件。
  在盒子模型中,确定内容位置的,是通过margin和padding这两个属性来确定的。在文档流中,通过设置margin:0 auto;使元素水平居中,此方式只适合在普通文档流情况下,在绝对定位和浮动中,元素不在属于正常文档流,因此不适用。

在这里插入图片描述
看以下示例,打开元素布局视图查看
在这里插入图片描述

2.显示方式Display

display属性用来设定,元素是否显示或元素行内显示还是块级显示,以及flex布局也是需要通过设定display属性完成的。属于文档流的布局格式。
在这里插入图片描述
隐藏元素有两种样式: - display:none或visibility:hidden
隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden"。
但是请注意,这两种方法会产生不同的结果:visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

这里说下什么是行内和块级元素:
在这里插入图片描述

3.定位position

在这里插入图片描述
static 定位:HTML 元素的默认值,即没有定位,遵循正常的文档流对象。静态定位的元素不会受到 top, bottom, left, right影响。
fixed 定位:元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动。Fixed定位使元素的位置与文档流无关,因此不占据空间。Fixed定位的元素和其他元素重叠。

.pos_fixed{position:fixed;top:50%;right:5px;
}

relative 定位:相对定位元素的定位是相对其正常位置,移动相对定位元素,但它原本所占的空间不会改变。相对定位元素经常被用来作为绝对定位元素的容器块。

<view>正常位置</view>
<view class="pos_left">正常位置向左移动</view>
<view class="pos_right">正常位置向右移动</view>
h2.pos_left
{position:relative;left:-20px;
}
h2.pos_right
{position:relative;left:20px;
}

在这里插入图片描述
absolute 定位:绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于:

view
{position:absolute;left:100px;top:150px;
}

sticky 定位 :除了以上属性,还有个基于用户的滚动位置来定位的属性,称之为粘性定位。
粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。
元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。具体来看个例子:

<view class="sticky">我是粘性定位!</view >
<view style="padding-bottom:2000px"><view >滚动</view ><view >来回滚动</view ><view >滚动</view ><view >来回滚动</p><view >来回滚动</p>
</view >
.sticky {position: -webkit-sticky;position: sticky;top: 0;padding: 5px;background-color: #cae8ca;border: 2px solid #4CAF50;
}

看下效果,可以看到在动的时候,因为我们设置了一行为粘性定位,并且设置位置top=0,我们滚动的时候这行就固定在了顶部。
在这里插入图片描述在这里插入图片描述
这个属性可以利用实现表格里,我们需要让表头或者左侧列固定不动,滚动右侧区域内容。

重叠的元素:元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)一个元素可以有正数或负数的堆叠顺序:

<text>标题</text>
<img src="w3css.gif" width="100" height="140" />
<view>图像元素设置了 z-index 属性值为 -1, 所以它会显示在标题文字之后。</view>
img
{position:absolute;left:0px;top:0px;z-index:-1;
}

在这里插入图片描述

4.溢出属性Overflow

overflow 属性用于控制内容溢出元素框时显示的方式。overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条。overflow 属性只工作于指定高度的块元素上。
在这里插入图片描述
看个示例:

<view class="overflowTest">
<view>这里的文本内容会溢出元素框。</view>
<view>这里的文本内容会溢出元素框。</view>
<view>这里的文本内容会溢出元素框。</view>
</view>
.overflowTest {background-color: aqua;width: 200px;height: 50px;border: 1px dotted black;overflow: visible;
}

在这里插入图片描述
若是scroll会出现滚动条
在这里插入图片描述

5.浮动Float

会使元素向左或向右移动,其周围的元素也会重新排列。Float(浮动),往往是用于图像,但它在布局时一样非常有用。

<view>
<image mode="widthFix" src="/icons/chart.png"></image>
<image class="float_img" mode="widthFix" src="/icons/chart.png"></image>
<view class="float_text">这里的文本内容</view>
<image mode="widthFix" src="/icons/chart.png"></image>
<image mode="widthFix" src="/icons/chart.png"></image>
<image class="float_img" mode="widthFix" src="/icons/chart.png"></image>
</view>
image{width: 150rpx;
}
.float_img{float: left;border: 1rpx solid red;
}

在这里插入图片描述

清除浮动 - 使用 clear:元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。clear 属性指定元素两侧不能出现浮动元素。

.float_text
{clear:both;
}

6.对齐

1)文字居中

<view class="center"><text>文本居中对齐。</text>
</view>
.center{text-align: center;border: 3px solid green;
}

在这里插入图片描述
2)图片居中
要让图片居中对齐, 可以使用 margin: auto; 并将它放到 块级元素中:

.img_center{display: block;margin: 0 auto;
}

3)右对齐
使用绝对定位来实现,绝对定位元素会被从正常流中删除,并且能够交叠元素。:

.right {position: absolute;right: 0px;width: 300px;
}

4)左右对齐
也可以使用 float 属性来对齐元素:

<view class="clearfix">
<image class="img_right"  mode="widthFix" src="/icons/chart.png"/>
这里的文本内容这里的文本内容这里的文本内容这里的文本内容这里的文本内容</view>
.img_right{float: right;
}
.clearfix{border: 1rpx solid green;// overflow: auto;
}

在这里插入图片描述
如果子元素的高度大于父元素,且子元素设置了浮动,那么子元素将溢出,这时候你可以使用 “clearfix(清除浮动)” 来解决该问题。父元素中添加样式 overflow: auto;
在这里插入图片描述
5)垂直水平居中
方式一:使用line-height和text-align实现的文字的水平垂直居中
CSS 中有很多方式可以实现垂直居中对齐。 相对于文字标签一个简单的方式就是头部顶部使用 padding:使用padding: 70px 0;
如果要水平和垂直都居中,可以使用 padding 和 text-align: center:

.center {padding: 70px 0;border: 3px solid green;text-align: center;
}

另一种就是使用 line-height

.center {line-height: 200px;height: 200px;border: 3px solid green;text-align: center;
}

方式二:还有就是通过position 和 transform实现水平垂直居中

<view class="center"><view class="center_view">我是垂直居中的。</view>
</view>

.

center{position: relative;border: 3px solid green; height: 100px;
}
.center_view{position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);
}

在这里插入图片描述

参照Android开发,微信小程序的常用的两种布局方式:1、线性布局(横版、竖版)。2、网格布局。

二、Flex弹性布局

1.基本属性

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为Flex布局。
1)flex-direction
决定主轴的方向(即项目的排列方向)。

.box {flex-direction: row | row-reverse | column | column-reverse;
}

在这里插入图片描述
2)flex-wrap
默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
在这里插入图片描述
在这里插入图片描述
3)justify-content
justify-content属性定义了项目在主轴上的对齐方式。

.box {justify-content: flex-start | flex-end | center | space-between | space-around;
}

在这里插入图片描述
flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

4)align-items
align-items属性定义项目在交叉轴上如何对齐。

.box {align-items: flex-start | flex-end | center | baseline | stretch;
}

在这里插入图片描述
flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐。
center:交叉轴的中点对齐。
baseline: 项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

2.使用示例

1)完美解决我们平时碰到的居中问题

<view class="flex_center"><view class="flex_center_view">使用felx 实现垂直居中的。</view>
</view>
.flex_center{display: flex;width: 250px;height: 250px;border: 3px solid green; 
}
.flex_center_view{width: 150px;height: 50px;margin: auto;border: 1px solid green; 
}

在这里插入图片描述
2)flex 属性指定弹性子元素如何分配空间。

<view class="flex"><view class="flex_item">felx</view><view class="flex_item">felx</view><view class="flex_item">felx</view>
</view>
.flex{display: flex;.flex_item{flex: 1;border: 1rpx solid green;}
}

在这里插入图片描述

注在我们命名class类选择器时不要这样写 (table-header)因为在微信开发者工具里面 快捷键Ctrl + Alt 鼠标箭头指向类名无法跳转对应的css样式 应该使用下划线_(table_header)以便查看和修改。

提示:以上部分图片来自于菜鸟教程


http://chatgpt.dhexx.cn/article/QfJE2kyR.shtml

相关文章

微信小程序 居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局

微信小程序居中、居右、横纵布局 1、水平垂直居中&#xff08;相对父类控件&#xff09;方式一&#xff1a;水平垂直居中 父类控件&#xff1a; display: flex;align-items: center;//子控件垂直居中justify-content: center;//子控件水平居中width: 100%;height: 400px //注意…

微信小程序居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局

微信小程序居中、居右、横纵布局 1、水平垂直居中&#xff08;相对父类控件&#xff09; 方式一&#xff1a;水平垂直居中 父类控件&#xff1a; display: flex;align-items: center;//子控件垂直居中justify-content: center;//子控件水平居中width: 100%;height: 400px//注…

小程序中的网格布局

在日常小程序开发中,第一个遇到的问题是页面布局的问题。设计师给的设计稿通常是一个静态的图片,我们要把图片转换成实际可以使用的布局。在电商场景中,我们经常会看到商品的两列布局,通常在CSS中,两列布局可以使用网格布局的方案解决。我们本篇就讲解一下CSS的网格布局,…

微信小程序: 使用grid进行网格布局

grid与flex一样用于页面布局。flex用于一维布局&#xff0c;grid用于二维布局。所以有时候一些网格状的布局相对于grid来说会更加方便。 注意&#xff0c;设为网格布局以后&#xff0c;容器子元素&#xff08;项目&#xff09;的float、display: inline-block、display: table-…

Spug - 轻量级自动化运维平台

Spug - 轻量级自动化运维平台 对于中小型企业而言&#xff0c;进行主机和应用的管理是比较麻烦的&#xff0c;应用部署往往需要直接连接服务器&#xff0c;再进行手动的环境配置、代码拉取、应用构建和部署发布等工作&#xff0c;容易出错&#xff0c;且耗时费力。一个好的自动…

网络自动化运维(NetDevOps)创作者推荐

前言&#xff1a; 随着NetDevOps技术登上了历史舞台&#xff0c;越来越多的从业者开始利用NetDevOps简化网络的运维&#xff0c;并进行了技术分享&#xff0c;将蛋糕越做越大。在这里&#xff0c;仅代表个人对这些无私奉献的网络、运维工程师们表达由衷的敬意。 此外&#xff…

开源自动化运维平台Spug

开源自动化运维平台Spug Spug演示环境特性安装Docker安装安装步骤1. 安装docker2. 拉取镜像3. 启动容器4. 初始化5. 访问测试6. 版本升级 Spug Spug是面向中小型企业设计的轻量级无Agent的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、应用发布部署…

自动化运维工具

自动化运维 通过运维工具或平台&#xff0c;实现IT基础设施及业务应用日常任务处理和运维流程的自动化&#xff0c;从而提高效率和降低风险&#xff0c;促进运维组织的成熟和各种能力的升级。 自动化运维工具 部署类&#xff1a;jenkins 环境类&#xff1a;ansible/saltStac…

关于自动化运维的那些事儿

随着近年全球运维大会的火热举办&#xff0c;自动化运维话题被推向了前所未有地热度。自动化运维并不是炒作的概念&#xff0c;而是随着信息技术发展的必要趋势。“大数据”“容器”“DevOps”“微服务”……&#xff0c;不断涌现出新的技术&#xff0c;而它们都有共同的特点&a…

部署自动化运维工具rundeck

简单介绍&#xff1a; RunDeck 是用 Java/Grails 写的开源工具&#xff0c;帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者 web 界面&#xff0c;用户可以对任意数量的服务器进行操作&#xff0c;大大降低了对服务器自动化的门槛。 官网地址&#xff1a…

python自动化运维学习

1.python能做什么&#xff1f; 2.解释型与编译型语言的区别&#xff1f; 3.动态型与静态型语言的区别&#xff1f; 4.ASCLL Unicode GBK UTF-8之间的联系 ASCLL码是最初被创建出来表示字符的&#xff0c;总共255个。每个占1字节---》字符不够用---》单独的中文编码GBK&#xff…

一站式自动化运维及自动化部署平台

真正的大师,永远都怀着一颗学徒的心&#xff01; 一、项目简介 一站式自动化运维及自动化部署平台 二、实现功能 支持机器管理&#xff08;环境变量、机器秘钥、终端日志、终端会话、机器代理&#xff09; 支持调度任务 支持执行管理 支持应用管理 支持构建发布 支持用户…

IT运维之自动化运维

大家好&#xff0c;我是技福的小咖老师。 今天咱们来简单讲讲自动化运维的话题。 现在随着IT运维管理工作的复杂度和难度的大大增加&#xff0c;过去仅靠几个专门的运维人员或是“技术大拿”来包打天下已经行不通了&#xff0c;企业开始需要运用专业化、标准化和流程化的手段来…

自动化运维与普通运维有什么区别?

本文首发于知乎&#xff0c;由嘉为蓝鲸原创。 商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 01. 何为自动化运维&普通运维&#xff1f; 在了解两者的区别前&#xff0c;我们得先明确对二者的定义&#xff0c;总的来说运维工作的目的都是为了保障企业业…

自动化运维平台Spug介绍

一、概要 Spug是一款使用PythonFlaskVueElement组件开发的开源运维管理系统,系统前后端分离&#xff0c;项目创建于2017年&#xff0c;2018 年 2 月第一个开源运维平台版本发布&#xff0c;设计为面向中小型企业设计的轻量级无Agent的自动化运维平台&#xff0c;UI基于Ant Desi…

Django 实现自动化运维后台

layui 框架与BootCSS框架相似都属于前端美化框架&#xff0c;区别在于BootCSS更加专业&#xff0c;而LayUI则更多的是面向于后端开发者&#xff0c;所以在组织形式上毅然采用了几年前的以浏览器为宿主的类 AMD 模块管理方式&#xff0c;却又并非受限于 CommonJS 的那些条条框框…

Linux自动化运维工具ansible详解

文章目录 认识ansibleansible的组成ansible的相关文件ansible的使用ansible的常用模块1、copy模块2、fetch模块3、command模块4、shell 模块5、file模块6、cron模块7、yum模块8、service模块9、script模块 认识ansible ansible是一个自动化运维工具的名称&#xff0c;集合了众…

如何实现网络自动化运维?

众所周知&#xff0c;网络是多个设备之间共享信息的连接。如今&#xff0c;手动管理连接到网络的每个设备会是一项重大的挑战&#xff0c;但是IT管理员可以通过网络自动化软件的功能的帮助来克服这一挑战&#xff0c;从而大大减少工作量和人为错误的可能。 网络编排是一种策略驱…

IT自动化运维平台建设解决方案

u当前IT运维的整体发展趋势是向自动化迭代&#xff0c;并向智能化演化&#xff1b; u目前大部分组织的IT运维正处在从人工运维向自动化运维的发展阶段&#xff1b; u有部分组织已经基本实现了自动化运维&#xff0c;正在向智能化运维升级&#xff0c;而也已有少量企业已经构建了…

Ansible 自动化运维

一、 Ansible&#xff1a;开源的运维自动化工具&#xff0c;可以提高运维工程师的效率&#xff0c;减少人为失误。操作简单&#xff0c;功能丰富。 特点&#xff1a;1&#xff09;基于python开发&#xff0c;易于二次开发 2&#xff09;丰富的内置模块&#xff0c;基本可以满足…