css 两列布局;不使用边距的第三个同级元素

pkln4tw6  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(154)

我正在创建两列布局。左列(标题)是粘性/固定的,而右列是静态的。HTML有3个兄弟元素(headerdiv.content-columnfooter)。页脚放在.content-column下面。
我正在寻找一个解决方案(没有嵌套.content-columnfooter),而不是使用margin-left的页脚旁边的标题。任何想法?
先谢谢你!

body, ul {margin:0;}

header {
  background-color: lightgreen;
}

.content-column {
  background-color: lightblue;
  font-size:3rem;
}

footer {
  background-color: lightgray;
}

@media (min-width: 600px) {
body {
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  min-height: 100vh;
}

header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  overflow-y: auto;
  display: flex;
  flex: 0 1 40vw;
  flex-direction: column;
  align-self: flex-start;
  height: 100vh;
  max-width: 40vw;
}
.content-column {
  display: flex;
  flex-direction: column;
  flex: 0 1 60vw;
  background-color: lightblue;
}

footer {
  margin-left: 40vw;
}
}
<header>
<a href="#">logo</a>
<span>logo subtitle</span>
  <nav>
    <ul>
      <li>about</li>
      <li>contact</li>
    </ul>
  </nav>
</header>
<div class="content-column">
  <main>
    <article>
Quo consequatur dolores facilis fugiat. Maxime non quam eos nisi voluptatem autem minus autem. Consectetur aut molestiae asperiores at impedit. Quam doloribus ut et impedit hic veritatis quia. Quo consequatur dolores facilis fugiat. Maxime non quam eos nisi voluptatem autem minus autem. Consectetur aut molestiae asperiores at impedit. Quam doloribus ut et impedit hic veritatis quia.
Quo consequatur dolores facilis fugiat. Maxime non quam eos nisi voluptatem autem minus autem. Consectetur aut molestiae asperiores at impedit. Quam doloribus ut et impedit hic veritatis quia.…
Quo consequatur dolores facilis fugiat. Maxime non quam eos nisi voluptatem autem minus autem. Consectetur aut molestiae asperiores at impedit. Quam doloribus ut et impedit hic veritatis quia.…
    </article>
  </main>
</div>
<footer>
2023
</footer>
ktca8awb

ktca8awb1#

你可以使用CSS网格来完成你想要的布局,而不需要像你说的那样计算边距。举个例子,像这样:

body,
ul {
  margin: 0;
}

header {
  background-color: lightgreen;
}

.content-column {
  background-color: lightblue;
  font-size: 3rem;
}

footer {
  background-color: lightgray;
}

@media (min-width: 600px) {
  body {
    display: grid;
    grid-template-columns: 30vw 1fr;
  }

  header {
    height: 100vh;
    position: sticky;
    top: 0;
  }

  footer {
    grid-column: 2/-1;
  }
}
<header>
  <a href="#">logo</a>
  <span>logo subtitle</span>
  <nav>
    <ul>
      <li>about</li>
      <li>contact</li>
    </ul>
  </nav>
</header>
<div class="content-column">
  <main>
    <article>
      Quo consequatur dolores facilis fugiat. Maxime non quam eos nisi voluptatem autem minus autem. Consectetur aut molestiae asperiores at impedit. Quam doloribus ut et impedit hic veritatis quia. Quo consequatur dolores facilis fugiat. Maxime non quam eos nisi voluptatem autem minus autem. Consectetur aut molestiae asperiores at impedit. Quam doloribus ut et impedit hic veritatis quia.
      Quo consequatur dolores facilis fugiat. Maxime non quam eos nisi voluptatem autem minus autem. Consectetur aut molestiae asperiores at impedit. Quam doloribus ut et impedit hic veritatis quia.…
      Quo consequatur dolores facilis fugiat. Maxime non quam eos nisi voluptatem autem minus autem. Consectetur aut molestiae asperiores at impedit. Quam doloribus ut et impedit hic veritatis quia.…
    </article>
  </main>
</div>
<footer>
  2023
</footer>

相关问题