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: grid或display: inline-grid - 子元素没被显式放入某个格子——如果没用
grid-column/grid-row,它会默认占满首行首列,此时“居中”看起
来没变化,因为格子本身撑满了容器宽度/高度
- 格子本身没有明确尺寸——比如列宽设为
auto、行高没设,浏览器可能把格子压缩到内容大小,导致“居中”无从体现
实际生效需要哪些配套设置?
要让 justify-self 和 align-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-self 和 align-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清除路由配置及视图缓存的方法【总结】


