尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

amis-ui 布局工具类详解:justify-content 系列类名(justify-start / justify-between / justify-center 等)的使用与源码原理

发布时间:2026/9/14 17:17:24

资讯中心
01
ARTICLE

amis-ui 布局工具类详解:justify-content 系列类名(justify-start / justify-between / justify-center 等)的使用与源码原理

amis-ui 布局工具类详解:justify-content 系列类名(justify-start / justify-between / justify-center 等)的使用与源码原理
amis-ui 布局工具类详解justify-content 系列类名justify-start / justify-between / justify-center 等的使用与源码原理【免费下载链接】amis前端低代码框架通过 JSON 配置就能生成各种页面。项目地址: https://gitcode.com/GitHub_Trending/am/amisamis-ui 在packages/amis-ui/scss/helper/box-alignment/_justify-content.md中定义了一套与 CSSjustify-content一一对应的工具类justify-start、justify-end、justify-center、justify-between、justify-around、justify-evenly开发者无需手写内联样式直接在 amis 组件的className、menuTpl等模板字符串中挂类名即可完成主轴对齐。本文以该文档为核心结合 amis-ui 的 SCSS 实现源码讲解每个类名的取值语义、响应式变体m:/pc:的生成机制以及它们在 amis JSON 配置中的真实应用方式。一、类名速查表一个类名对应一个 CSS 声明原文档给出的映射关系非常直观——每个类名对应一条justify-content声明。完整继承如下ClassPropertiesjustify-startjustify-content: flex-startjustify-endjustify-content: flex-endjustify-centerjustify-content: centerjustify-betweenjustify-content: space-betweenjustify-aroundjustify-content: space-aroundjustify-evenlyjustify-content: space-evenly这 6 个值覆盖了justify-content的常用取值除stretch外。要特别注意justify-content只在主轴上生效且只有当元素是 Flex 容器display: flex或 Grid 容器时才会起作用。因此在 amis 的实际使用中这些类名通常与flex类配套出现例如classflex justify-between。每个取值的实际效果justify-start→flex-start子项从主轴起点依次排列主轴方向留白集中在末尾是 Flex 布局的默认行为justify-end→flex-end子项整体靠主轴终点对齐留白集中在起点一侧justify-center→center子项在主轴居中两端留白均分justify-between→space-between首尾子项贴紧容器两端其余子项之间间距均分子项之间没有首尾两侧的留白常用于列表项左右信息分布的场景justify-around→space-around每个子项两侧各有一份等宽留白因此首尾留白宽度是子项间距的一半justify-evenly→space-evenly所有子项之间以及首尾到容器边缘的间距完全相等。从实现看这些声明都被原样写死在 _justify-content.scss 的 mixin 中没有做任何计算或变量抽象语义与浏览器规范完全一致。二、源码实现一个 mixin 生成全部类justify-content系列类不是手写的零散规则而是由 _justify-content.scss 中的make-justify-contentmixin 批量生成的mixin make-justify-content($prefix: .) { #{$prefix}justify-start { justify-content: flex-start; } #{$prefix}justify-end { justify-content: flex-end; } #{$prefix}justify-center { justify-content: center; } #{$prefix}justify-between { justify-content: space-between; } #{$prefix}justify-around { justify-content: space-around; } #{$prefix}justify-evenly { justify-content: space-evenly; } } include make-justify-content();mixin 通过$prefix参数控制类名前缀默认以.开头生成基础类.justify-start等而在响应式循环中则传入带设备名的前缀生成m:/pc:命名的变体类。这种一个 mixin 前缀参数的写法是整个 helper 工具类体系的通用模式在align-content、align-items、justify-items等同目录文件中均有体现。响应式变体的生成原理在基础类生成之后SCSS 紧接着对设备断点做了循环each $deivce in map-keys($devices) { include media-device($deivce) { include make-justify-content(. selector-escape($deivce :)); } }$devices定义在 _variables.scss当前仓库只有两个断点m对应(max-width: 768px)手机pc对应(min-width: 769px)桌面media-devicemixin 定义在 _mixins.scss负责把断点名解析成对应的media查询selector-escape($deivce :)会对冒号做转义最终生成形如.m\:justify-start、.pc\:justify-between的类名。因此你不仅可以使用全局的justify-between还可以使用带设备前缀的响应式变体响应式类名生效条件含义m:justify-center视口宽度 ≤ 768px仅手机端主轴居中pc:justify-end视口宽度 ≥ 769px仅桌面端主轴靠右对齐pc:justify-between视口宽度 ≥ 769px仅桌面端两端对齐这一机制意味着同一个 DOM 元素可以在不同屏幕宽度下切换不同的对齐策略例如移动端m:justify-start、桌面端pc:justify-between无需编写任何额外的媒体查询代码。三、在 amis 组件中如何落地使用amis 的多数组件都支持通过className传入工具类模板类属性如menuTpl、itemTpl中也可以直接在 HTML 结构上挂类名。以下是当前仓库文档中真实存在的使用场景1. 列表项左右分布flex justify-between最典型的用法是让列表项左侧放标签、右侧放辅助信息。例如 Transfer 组件自定义菜单模板 transfer.md 中的写法{ type: transfer, menuTpl: div classflex justify-betweenspan${label}/spanspan classtext-muted m-r text-sm${tag}/span/div }同样的模式也出现在 tabs-transfer.md、treeselect.md、input-tree.md 等组件的menuTpl中用于把选项文本与计数徽标、邮箱等次要信息推到行的两端。2. 内容居中flex justify-center表格单元格内容居中时直接使用justify-center例如 table.md 中对列的类名配置{ className: flex justify-center }在 card.md 的示例中同样出现了className: h-32 flex items-center justify-center的组合——flex建立弹性容器、items-center控制交叉轴居中、justify-center控制主轴居中三个工具类协同完成块级居中布局。3. 组件级配置listClassName部分表单组件还提供了直接挂类名的配置项。例如 list-select.md 的listClassName属性官方说明即为支持配置 list div 的 css 类名示例值flex justify-between可以直接把选项列表项改成两端对齐布局。四、与其他对齐工具类的关系justify-content系列只是 amis-ui 工具类体系中box-alignment盒子对齐模块的一部分。与 _justify-content.scss 同目录的还有align-content、align-items、align-self、justify-items、justify-self、place-content、place-items、place-self共 8 个文件全部由 helper.scss 统一导入。它们共同构成了一套完整的 Flex/Grid 对齐工具类主轴对齐justify-content系列本文主题交叉轴对齐align-items容器内所有子项、align-self单个子项覆盖、align-content多行时行间分布简写属性place-content、place-items、place-selfalign-*justify-*的合并声明。配合 helper.scss 中导入的flex目录direction、flex、grow、order、shrink、wrap可以在不写任何 CSS 的情况下完成绝大多数弹性布局需求。五、使用要点与注意事项必须配合 flex/grid 容器使用justify-content本身不会让元素变成弹性容器。单独给一个display: block的元素挂justify-between不会产生任何效果需要先加flex或grid系列类建立容器响应式类名的生效边界m:前缀只覆盖 ≤ 768pxpc:只覆盖 ≥ 769px两者在 769px 处严格切分。在 PC 宽度下m:justify-*不会生效反之亦然类名可组合基础类与响应式类可以共存移动端和桌面端各写一套对齐策略即可实现响应式布局模板字符串中同样可用menuTpl、itemTpl、labelTpl等支持 HTML 的模板属性中挂工具类与在className中配置效果一致文档源头完整的类名对照表即本文第一节的表格见 _justify-content.md。六、小结justify-content系列工具类用类名即声明的方式把最常用的主轴对齐能力压缩成 6 个基础类名加 12 个响应式变体配合flex与items-*系列类足以覆盖 amis 页面中按钮组对齐、列表信息分布、单元格居中、页脚两端布局等高频场景。理解其背后的make-justify-contentmixin 与$devices断点循环也就同时掌握了整个 amis-ui helper 工具类体系对齐、间距、边框、排版等的生成规律——同一套mixin 前缀 设备循环的模式贯穿始终。【免费下载链接】amis前端低代码框架通过 JSON 配置就能生成各种页面。项目地址: https://gitcode.com/GitHub_Trending/am/amis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。