html - CSS 网格和语义 HTML
问题描述
我正在学习 CSS 网格,在尝试进行布局并同时使用语义 html 时遇到了一些问题
https://codepen.io/oscarryz/pen/oNNBKyd
所以基本上我将网格设置为 3x3,左右两边有空白空间,中间是内容
.grid-container {
display: grid;
grid-template-columns: 1fr 40em 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-template-areas:
" . header . "
" . content . "
" . footer . ";
}
.header {
grid-area: header;
}
.content {
grid-area: content;
}
.footer {
grid-area: footer;
}
.header, .content, .footer {
border: 1px solid red;
}
<div class="grid-container">
<header>
<div class="header">header</div>
</header>
<main>
<div class="content">content</div>
</main>
<footer>
<div class="footer">footer</div>
</footer>
</div>
从上面的 codepen 中可以看出,这是行不通的。如果我删除它有效的语义标签,显然必须有正确的方法来做到这一点
解决方案
Grid templates are for direct descendants.
The semantic elements should be referenced by tagname, not class:
/* changed from .header, which is a _child_ of header */
header {
grid-area: header;
}
/* changed from .content, which is a _child_ of main */
main {
grid-area: content;
}
/* changed from .footer, which is a _child_ of footer */
footer {
grid-area: footer;
}
Corrected codepen here: https://codepen.io/c_bergh/pen/eYYvOmG
推荐阅读
- python - 使用 DataFrame 操作时的一些问题
- merge - 在我理解的情况下合并 2 个数据集是一对多合并 SAS
- jira-rest-api - JIRA Rest Api 获取特定用户有权访问的所有项目
- express - 通过 nodejs 上的快速服务器通过护照登录,使用 mongoose 与 mongoDB 连接
- java - 一次从联系人列表中选择多个联系人
- javascript - 如何在 JS 中使函数同步?
- process - UEFI 引导过程有哪些阶段?
- javascript - Javascript Accordion 更改 img 取决于它是打开还是关闭
- javascript - 如何知道在谷歌浏览器扩展中发送的弹出消息
- reactive-programming - 为什么 log 方法的位置在项目反应堆中无关紧要