css - 无法弄清楚如何使用 CSS 网格将徽标和导航连续对齐
问题描述
我正在尝试使用 CSS 网格在网站顶部的一行中对齐徽标和导航栏。
我已经写出了代码,但无法弄清楚我做错了什么,为什么它不起作用:https ://codepen.io/chloewb/pen/wRRewQ
.logo{
grid-area: logo;
background:white;}
.navi{
grid-area: navi;
background:Yellow;}
.section1{
grid-area: features;
background:LightSalmon;}
.section2{
grid-area: technology;
background:PaleTurquoise;}
.section3{
grid-area: pricing;
background:LightPink;}
.section4{
grid-area: email;
background:PaleGreen;}
.container {
display: grid;
grid-template-rows: repeat (5, auto);
grid-template-columns: 1fr 1fr 1fr;
font-size: 40px;
width: 100%;
background: grey;
grid-template-areas:
"logo navi navi"
"features features features"
"technology technology technology"
"pricing pricing pricing"
"email email email";}
解决方案
首先要注意的是,当您display: grid
在容器元素上使用时,它的直接子元素将变为grid-items
,并且您构建的网格布局将应用于这些项目。
因此,假设我们有以下内容:
<div class="container">
<div class="child-1">
<div class="child-2"></div>
<div class="child-2"></div>
</div>
<div class="child-1"></div>
<div class="child-1"></div>
<div class="child-1"></div>
</div>
这个CSS:
.container{
display: grid;
}
然后只有child-1
将成为网格项目并能够获得grid-area
应用于它们的属性;里面的所有其他东西.child-1
,就像.child-2
没有网格一样会正常运行。除非您还将.child-1
元素指定为带有display: grid
.
在您的情况下,您header
的元素是该元素的直接子.container
元素,因此它是一个网格项,可以定位在网格上的任何位置,但logo
andnavi
元素是 的子元素header
,因此网格布局不适用于它们。您要么必须将它们从header
您编写的规则中删除,否则您编写的规则将生效,或者在标题中创建另一个网格并让它使用完整的第一行。请参阅此示例并注意元素的嵌套如何影响它们。
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: minmax(50px, auto);
grid-template-areas: "logo navi navi";
margin-bottom: 20px;
border: 1px solid black;
}
.logo {
border: 1px solid red;
grid-area: logo;
}
.navi {
border: 1px solid blue;
grid-area: navi;
}
<div class="container">
<div class="logo">Logo</div>
<div class="navi">Nav</div>
</div>
<div class="container">
<header>
<div class="logo">Logo</div>
<div class="navi">Nav</div>
</header>
</div>
推荐阅读
- sql-server - 导入到 SQL Server 时忽略 Excel 文件中的列
- angular6 - 单击按钮弹出后未显示在 angulr6 项目中
- r - 在R中连接地图上的两个点
- reactjs - 更改 Redux 状态不会影响渲染视图
- foreach - Gulp:paths.scss.forEach 不是函数
- json - 在 Nifi 中多次拆分后合并 Json
- javascript - 无法使用 javascript 更改标题字体大小
- react-router - 警告:[react-router] 位置“/add”不匹配任何路由
- html - 根据较高的兄弟扩展子高度(父高度设置为自动)
- java - 我为 SortedMap 创建了一个 put() 方法,但似乎无法让测试代码工作