使网格区域跨两行,但不跨两列

用户名

我一直在尝试创建一个看起来像这样的布局:

在此处输入图片说明

这是代码:

.wrapper {
  display: grid;
  grid-template-columns: 1fr 300px;
  grid-template-areas: "main aside"
                       "main main";
}

.wrapper > aside {
 grid-area: aside;
}

.wrapper > main {
  grid-area: main;
}
<section class="wrapper">
  <aside>Aside</aside>
  <main>MAIN</main>
</section>

西里尔

并不是真正的答案,而是为了娱乐,回忆和表明浮动元素的行为可以用来伪造这种形状的布局。

Float不是过时的,即使display已经变得非常好,它也可以一次仍然有用所以这是我的评论和一支旧笔的一个例子,看起来很接近您的网格。

它关于https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context

一个格式化的内容块是网页的视觉CSS渲染的一部分。在该区域中,将出现块状框的布局,并且该区域中的浮动对象与其他元素相互作用。

下面的演示

/* my grid not flexible enough ...

.wrapper {
  display: grid;
  grid-template-columns: 1fr 300px;
  grid-template-areas: "main aside"
                       "main main";
}

.wrapper > aside {
 grid-area: aside;
}

.wrapper > main {
  grid-area: main;
}

*/
/* back to the past */
.wrapper {
  overflow: hidden;/* to keep float inside */
}

.wrapper aside {
  float: right;
  width: 300px;
}


/*makup*/
.wrapper {
  box-shadow: 0 0 0 3px inset red;
}
.wrapper aside {
  padding: 1em;
  border: solid;
  box-shadow: 0 0 0 3px white, 0 0 0 6px red;
  margin: 0 0 1.5em 1em;
}

main {
  padding: 1em;
}
<section class="wrapper">
  <aside>Aside</aside>
  <main>MAIN</main>
</section>

为了让main流的内容处于下面aside,请记住您正在处理float,不要以这种方式将显示或oveflow重置为主要内容,以了解块格式化上下文。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章