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

CSS Grid中justify-items无效求助:容器有足够空间却无法对齐到末端

排查CSS Grid内容无法对齐到容器末端的问题

我是编程新手,基本掌握HTML/CSS知识,但遇到了CSS Grid布局的问题:容器明明有足够空间,却无法将内容对齐到盒子末端,我甚至为元素添加了边框来确认空间存在。请帮我排查原因。

布局问题截图

我的HTML代码

<html lang="en">

<head>
  <link href="./resources/css/index.css" rel="stylesheet">
  </link>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Bryan Portfolio</title>
</head>

<body>
  <header>
    <div id="grid1">
      <div class="spacer-left"></div>
      <div class="header-left"><img id="logo" src="./resources/logo/letterLogo.png"></div>
      <div class="header-right">
        <ul class="social-media">
          <li><img class="sm-icon" src="./resources/images/facebook-black.png"></li>
          <li><img class="sm-icon" src="./resources/images/facebook-black.png"></li>
          <li><img class="sm-icon" src="./resources/images/facebook-black.png"></li>
        </ul>
        <ul class="nav">
          <li>Main</li>
          <li>Projects</li>
          <li>Videos</li>
          <li>Photography</li>
        </ul>
      </div>
      <div class="spacer-right"></div>

    </div>

  </header>
  <div id="jumbotron">

  </div>

</body>

</html>

我的CSS代码

* {
   margin: 0;
   padding: 0;
   box-sizing: border-box;
 }

 body{
   background: color #f8f8f8;
   color: #262626;
 }
 
header{padding-top: 20px;}

#grid1{ 
 display: grid;
 grid-template-columns: 5% 1fr 1fr 5%;
 grid-auto-rows: 50px;
 grid-row-start: 1;
 grid-row-end: 3;

}
.header-left{
 grid-column-start: 2;
 grid-column-end: 3;
 grid-row-start: 1;
 grid-row-end: 3;
}
.header-right{
 
justify-self: end;
align-self: center;
 grid-column-start: 3;
 grid-column-end: 4;
 grid-row-start: 1;
 grid-row-end: 3;
 
}

.social-media{
 border: 1px red solid;
 grid-row-start: 1;
 grid-row-end: 2;
}

nav{
 grid-row-start: 2;
 grid-row-end: 3;
}
li{
 display: inline;
}
#logo{
 max-height: 100px;

}
.sm-icon{
max-height: 25px;
border: 1px blue solid;
}

问题原因与修复方案

1. 核心问题:header-right未设置为Grid容器

你给外层的#grid1加了Grid布局,但header-right作为内部容器,本身不是Grid容器,所以你给.social-media和nav设置的grid-row-start/end完全无效,这些元素默认是流式布局,自然不会按你的预期对齐。

2. 其他错误点

  • 选择器错误:HTML里导航是<ul class="nav">,但CSS里写的是nav{...},这会匹配<nav>标签而非class为nav的列表,应改为.nav{...}。
  • 语法错误:body中的background: color #f8f8f8写法错误,正确应为background-color: #f8f8f8或background: #f8f8f8。
  • 无效属性:#grid1不是任何Grid容器的子元素,设置grid-row-start/end没有意义,可删除。

修正后的CSS代码

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body{
  background-color: #f8f8f8; /* 修正背景色语法 */
  color: #262626;
}

header{padding-top: 20px;}

#grid1{ 
  display: grid;
  grid-template-columns: 5% 1fr 1fr 5%;
  grid-auto-rows: 50px;
  /* 删除无效的grid-row属性 */
}

.header-left{
  grid-column: 2 / 3; /* 简化grid-column写法 */
  grid-row: 1 / 3;
}

.header-right{
  display: grid; /* 设置为Grid容器 */
  grid-template-rows: 50px 50px; /* 定义两行高度 */
  justify-self: end;
  align-self: center;
  grid-column: 3 / 4; /* 简化写法 */
  grid-row: 1 / 3;
}

.social-media{
  border: 1px red solid;
  grid-row: 1 / 2; /* 现在该属性生效 */
}

.nav{ /* 修正选择器 */
  grid-row: 2 / 3;
}

li{
  display: inline;
}

#logo{
  max-height: 100px;
}

.sm-icon{
  max-height: 25px;
  border: 1px blue solid;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:35:33