css grid子元素如何水平垂直居中_通过justify-self和align-self实现

发布时间 - 2026-02-01 00:00:00    点击率:
能,但仅限于子元素在所属网格单元内居中,非整个容器;需父容器设display: grid、格子有明确尺寸(如grid-template-columns: 1fr)、子元素显式定位(grid-column/grid-row)才可见效果。

justify-self 和 align-self 能不能单独让子元素居中?

能,但仅限于该子元素自身在它所在的网格单元(grid cell)内居中,不是在整个容器中居中。这两个属性作用对象是单个网格项(grid-item),影响的是它在分配给它的那个格子内的对齐方式,和父容器的 justify-items/align-items 行为一致,只是粒度更细。

为什么设置了 justify-self: center; align-self: center; 却没效果?

常见原因有三个:

  • 父容器没定义为 grid 布局——必须先设置 display: griddisplay: inline-grid
  • 子元素没被显式放入某个格子——如果没用 grid-column/grid-row,它会默认占满首行首列,此时“居中”看起

    来没变化,因为格子本身撑满了容器宽度/高度
  • 格子本身没有明确尺寸——比如列宽设为 auto、行高没设,浏览器可能把格子压缩到内容大小,导致“居中”无从体现

实际生效需要哪些配套设置?

要让 justify-selfalign-self 居中可见,得配合控制格子尺寸:

  • 列定义推荐用 grid-template-columns: 1fr(或固定值如 200px),避免 auto
  • 行定义同理,比如 grid-template-rows: 1fr,或设最小高度 min-height: 200px
  • 子元素可加 grid-column: 1; grid-row: 1; 显式定位,确保它落在一个有尺寸的格子里

示例:

.container {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  height: 300px;
}
.item {
  justify-self: center;
  align-self: center;
  grid-column: 1;
  grid-row: 1;
}

比起 place-self,用 justify-self + align-self 有什么区别?

place-self 是简写,等价于同时设 justify-selfalign-self,行为完全一致。区别只在写法:

  • place-self: center; → 同时水平垂直居中
  • justify-self: flex-end; align-self: start; → 可以错开方向,而 place-self 不支持混合值(如 place-self: center start 无效)
  • 兼容性上,justify-self/align-self 在 Safari 10.1+ 就支持,place-self 要 Safari 12.1+,老项目慎用简写

真正容易被忽略的是:即使设置了这些属性,如果网格容器本身没有明确的块级尺寸(比如没设 height 或父容器塌陷),整个布局仍可能“看不见居中”。格子尺寸才是前提,属性只是在格子里做微调。


# css  # 浏览器  # safari  # ai  # 区别  # 垂直居中  # 为什么  # auto  # 对象  # display  # column  # flex  # 的是  # 才是  # 设为  # 这两个  # 落在  # 要让  # 不支持  # 满了  # 只在  # 能把 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何在阿里云完成域名注册与建站?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  简单实现jsp分页  JavaScript如何实现倒计时_时间函数如何精确控制  如何利用DOS批处理实现定时关机操作详解  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何登录建站主机?访问步骤全解析  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  如何快速生成可下载的建站源码工具?  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  JS中对数组元素进行增删改移的方法总结  高防服务器:AI智能防御DDoS攻击与数据安全保障  如何在橙子建站中快速调整背景颜色?  如何在阿里云高效完成企业建站全流程?  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  使用Dockerfile构建java web环境  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  移动端脚本框架Hammer.js  如何在宝塔面板中修改默认建站目录?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel Fortify是什么,和Jetstream有什么关系  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  长沙企业网站制作哪家好,长沙水业集团官方网站?  jquery插件bootstrapValidator表单验证详解  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  在centOS 7安装mysql 5.7的详细教程  javascript日期怎么处理_如何格式化输出  html5的keygen标签为什么废弃_替代方案说明【解答】  如何在企业微信快速生成手机电脑官网?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】