Расширить фон столбца в сеточные желоба - PullRequest
0 голосов
/ 24 мая 2018

Учтите это…

Вы создаете трехколоночную разметку, используя систему сетки.Ваш контейнер имеет фиксированный размер и центрируется с помощью поля: 0 auto.

В ваших спецификациях дизайна для первого столбца требуется цвет фона, который простирается до левого края браузера.

Любая идея, как вы можете это сделатьдостичь этого? Я мог бы заставить это работать таким образом , что является своего рода хаком и может не работать для определенных видов фоновых изображений.

HTML:

<main>
  <section>
    <div class="container">
      <header>
        <h1>Hey There!</h1>
      </header>
      <div>
        <h2>Column 2</h2>
      </div>
      <div>
        <h2>Column 3<h2>
      </div>
    </div>
  </section>
</main>

CSS

main {
  min-width: 800px;
}

section {
  background-image: linear-gradient(to right, #dfdfdf 50%, #fff 50%);
  border-bottom: 1px solid #dfdfdf;
}

.container {
  width: 500px;
  margin:0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}

section > * {
  min-height: 200px;
}

.container > div {
  background-color: #fff;
  padding-left: 30px;
}

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы можете попытаться сделать столбцы растянутыми на всю ширину контейнера, а затем выровнять содержимое внутри, чтобы они выглядели как три центрированных столбца.

.container {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  grid-column-gap: 20px;
  min-height: 50px;
}

header {
  background-color: lightgray;
  display: flex;
  justify-content: flex-end;
}

section {
  border-bottom: 1px solid #dfdfdf;
}

body {
  margin: 0;
}

p { text-align: center;}
p > span { padding: 5px; background-color: aqua; }
<main>
  <section>
    <div class="container">
      <header>
        <h1>Hey There!</h1>
      </header>
      <div>
        <h2>Column 2</h2>
      </div>
      <div>
        <h2>Column 3</h2>
      </div>
    </div>
  </section>
</main>
<p><span>True Center</span></p>

демонстрационный код

0 голосов
/ 24 мая 2018

Вы также можете создать фон с помощью псевдоэлемента.

Значение left достаточно велико, чтобы фон не выходил за пределы экрана.Это может быть проблематично, если вам нужно точное положение фонового изображения.

Кроме того, вы можете рассмотреть grid-gap вместо добавления padding-left к элементам сетки.

body {
  margin: 0;
}

main {
  min-width: 800px;
}

section {
  border-bottom: 1px solid #dfdfdf;
}

.container {
  width: 500px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}

section>* {
  min-height: 200px;
}

.container>div {
  background-color: #fff;
  padding-left: 30px;
}

header {
  position: relative;
}

header:before {
  content: '';
  background: lightgrey;
  display: block;
  position: absolute;
  left: -50vw;
  right: 0;
  bottom: 0;
  height: 100%;
  z-index: -1;
}
<main>
  <section>
    <div class="container">
      <header>
        <h1>Hey There!</h1>
      </header>
      <div>
        <h2>Column 2</h2>
      </div>
      <div>
        <h2>Column 3</h2>
      </div>
    </div>
  </section>
</main>
...