You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何居中div(或任意内容)?我的卡片div无法居中求助

如何让flex布局的card div在页面中居中?

你目前的card div显示在页面左侧,是因为它的父元素(<body>)没有设置合适的布局规则,导致align-items这类属性无法生效。以下是几种简单可行的解决方法:

方法一:给body添加Flex布局(推荐)

通过将<body>设置为Flex容器,让所有子元素(header和card)水平居中,同时保证body占满视口高度,让card在垂直方向也能合理分布:

修改后的CSS代码:

body{
    background: #212121;
    margin: 0;
    min-height: 100vh; /* 让body占满整个屏幕高度 */
    display: flex;
    flex-direction: column; /* 子元素垂直排列,header在上,card在下 */
    align-items: center; /* 让所有子元素水平居中 */
    gap: 2rem; /* 给header和card之间添加间距,可选优化 */
}

header{
    text-align: center;
    font-family: 'Roboto', sans-serif;
    color: #ff568e;
    border-bottom: 4px dashed #ff568e;
    width: 100%; /* 让header占满宽度,保持原有文字居中效果 */
}

.card {
    align-items: center;
    width: 210px;
    height: 254px;
    border-radius: 4px;
    background: #212121;
    display: flex;
    gap: 5px;
    padding: .4em;
}

/* 其余.card相关样式保持不变 */

方法二:给card添加margin:auto

如果不想修改body的布局,可以直接给card设置水平自动外边距,同时确保body有足够高度:

修改后的CSS代码:

body{
    background: #212121;
    margin: 0;
    min-height: 100vh; /* 确保body高度覆盖视口,避免card无法垂直居中 */
}

.card {
    align-items: center;
    width: 210px;
    height: 254px;
    border-radius: 4px;
    background: #212121;
    display: flex;
    gap: 5px;
    padding: .4em;
    margin: 2rem auto 0; /* 上下设置间距,水平自动居中 */
}

/* 其余样式保持不变 */

方法三:使用Grid布局

通过Grid布局也能实现居中效果,适合需要更复杂布局的场景:

修改后的CSS代码:

body{
    background: #212121;
    margin: 0;
    min-height: 100vh;
    display: grid;
    grid-template-rows: auto 1fr; /* 第一行自适应header高度,第二行占剩余空间 */
    justify-items: center; /* 所有子元素水平居中 */
}

.card{
    align-self: center; /* 让card在第二行垂直居中 */
}

/* 其余样式保持不变 */

关键说明

你之前尝试的align-items、align-content等属性,都是flex容器的属性,需要给card的父元素(比如body)设置display:flex或display:grid后,这些属性才能生效,直接给card设置是无效的。

内容的提问来源于stack exchange,提问作者Alvaro Ramirez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:55:17