【发布时间】:2022-01-23 16:07:58
【问题描述】:
我是 css 网格的新手(以前一直使用 flexbox),我正在尝试找出如何为我的页面标题打破 css 网格。我的网站结构如下所示:
这是css:
.site {
column-gap: $sidebar-gap;
display: grid;
grid-template-columns: auto ($sidebar-width); // site structure
grid-template-rows: auto 1fr auto; // sticky header & footer
grid-template-areas:
"header header"
"main sidebar"
"footer footer";
}
header {
grid-area: header;
}
.site-main {
grid-area: main;
}
.widget-area {
grid-area: sidebar;
}
footer {
grid-area: footer;
}
我的 HTML 结构如下所示:
body
└── div (#page .site)
├── header (#masthead .site-header)
| ├── div (.site-branding)
| | ├── a (.logo)
| | └── p (.site-description)
| ├── nav (#site-navigation .main-navigation)
| | ├── button (.menu-toggle)
| | ├── div (#menu-desktop-container .menu-desktop-container)
| | └── div (#menu-mobile-container .menu-mobile-container)
| └── div (.head-search)
|
├── main (#primary .site-main)
| └── article (.module)
| ├── div (.page-head)
| | ├── h1 (.page-title)
| | └── div (.page-meta)
| └── div (.page-content)
| └── <page content goes here>
|
├── aside (#secondary .widget-area)
| └── <content> (section)
|
└── footer (#colophon .site-footer)
├── div (.footer-widgets)
├── nav (.footer-navigation)
| └── div (#menu-footer-container .menu-footer-container)
└── div (.site-info)
我想要实现的是 .page-head div 突破 css 网格并跨越页面的整个宽度。从这里开始,我希望侧边栏(即.widget-area)在.page-head 下方开始。通常在过去使用 flexbox 时,我会在具有固定高度的 .page-head 上使用 position: absolute 来实现这一点。然后我只需将margin-top 添加到.widget-area 以与.page-head 站点相同。
我在 CSS 网格中尝试过这个,但它不起作用。我已经进行了大量的研究,但我似乎无法弄清楚这一点。我确信在这一点上我现在只是在追逐我的尾巴,所以任何帮助将不胜感激。这就是我试图在视觉上实现的目标:
请注意,我无法更改 HTML 结构 - 即显而易见的事情是将侧边栏 (.widget-area) 移动到主 (.site-main) 内,那么这将非常容易实现。因为这是一个 Wordpress 主题,所以这是不可能的。
我敢肯定,一定要实现这一目标,我只是还没有得到它:D。提前致谢!任何帮助将不胜感激,我在这里拔头发。
【问题讨论】:
-
好吧,我可能已经回答了我自己的问题。不确定是否有更好的方法,但这是我在 Codepen 中想出的。这是可待因中的link to the pen,因此您可以自己测试...请参阅 SCSS 的
SOLUTION TESTING部分。
标签: css-grid