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

У меня есть сетка, скажем, 2 строки, 2 столбца в 1-й строке, 3 столбца во 2-й строке. И зазор сетки 10px между ними. Не проблема дать каждой отдельной сетке фоновое изображение. Но что, если я хочу, чтобы все они имели одно и то же фоновое изображение, которое начинается в верхней левой сетке и продолжается/растягивается до нижней правой сетки. Одно большое фоновое изображение поверх всех сеток, просто разделенное белыми промежутками сетки.

html,
body {
  height: 100%;
}
.grid {
  display: grid;
  height: 100%;
  grid-template-columns: repeat(6, 1fr);
  grid-template-rows: repeat(2, 1fr);
  grid-gap: 10px;
}

.grid_cell_one {
  grid-column: 1 / span 3;
  grid-row: 1 / span 1;
  background-image: url("https://cdn.pixabay.com/photo/2017/01/08/21/11/wood-1963988__340.jpg");
}

.grid_cell_two {
  grid-column: 4 / span 3;
  grid-row: 1 / span 1;
  background-image: url("https://cdn.pixabay.com/photo/2017/01/08/21/11/wood-1963988__340.jpg");
}

.grid_cell_three {
  grid-column: 1 / span 2;
  grid-row: 2 / span 1;
  background-image: url("https://cdn.pixabay.com/photo/2017/01/08/21/11/wood-1963988__340.jpg");
}

.grid_cell_four {
  grid-column: 3 / span 2;
  grid-row: 2 / span 1;
  background-image: url("https://cdn.pixabay.com/photo/2017/01/08/21/11/wood-1963988__340.jpg");
}

.grid_cell_five {
  grid-column: 5 / span 2;
  grid-row: 2 / span 1;
  background-image: url("https://cdn.pixabay.com/photo/2017/01/08/21/11/wood-1963988__340.jpg");
}
<div class = "grid">
  <div class = "grid_cell_one">
  </div>
  <div class = "grid_cell_two">
  </div>
  <div class = "grid_cell_three">
  </div>
  <div class = "grid_cell_four">
  </div>
  <div class = "grid_cell_five">
  </div>
</div>
jsfiddle.net/z059p8sd/1 ... Мне нужно одно большое фоновое изображение, а не один и тот же фон для каждой ячейки сетки. Но с пробелами сетки все еще видны.
Patrick3k 08.04.2019 09:34
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
1
2 282
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сделайте свой Grid-Background прозрачным и установите фоновое изображение родителя на желаемое.

LG РТ

Привет RedTek, и спасибо за вашу помощь. Если я сделаю это таким образом, jsfiddle.net/z059p8sd/2, у меня останется фоновое изображение bis, но я больше не увижу пробелы в сетке. Я хочу, чтобы это выглядело как фотоальбом, но с одной единственной фотографией. Таким образом, пробелы сетки все еще должны быть видимыми и белыми. Есть ли другой способ добиться этого, кроме использования сетки?

Patrick3k 08.04.2019 09:39
Ответ принят как подходящий

По идее нужно учитывать background-attachement:fixed но фон больше не будет следовать за прокруткой:

html,
body {
  height: 100%;
  margin:0;
}

.grid {
  display: grid;
  height: 100%;
  grid-template-columns: repeat(6, 1fr);
  grid-template-rows: repeat(2, 1fr);
  grid-gap: 10px;
}

.grid>* {
  background-image: url("https://cdn.pixabay.com/photo/2017/01/08/21/11/wood-1963988__340.jpg");
  background-size: cover;
  background-repeat: no-repeat;
  background-attachment: fixed;
}

.grid_cell_one {
  grid-column: 1 / span 3;
  grid-row: 1 / span 1;
}

.grid_cell_two {
  grid-column: 4 / span 3;
  grid-row: 1 / span 1;
}

.grid_cell_three {
  grid-column: 1 / span 2;
  grid-row: 2 / span 1;
}

.grid_cell_four {
  grid-column: 3 / span 2;
  grid-row: 2 / span 1;
}

.grid_cell_five {
  grid-column: 5 / span 2;
  grid-row: 2 / span 1;
}
<div class = "grid">
  <div class = "grid_cell_one">
  </div>
  <div class = "grid_cell_two">
  </div>
  <div class = "grid_cell_three">
  </div>
  <div class = "grid_cell_four">
  </div>
  <div class = "grid_cell_five">
  </div>
</div>

Другая идея состоит в том, чтобы рассмотреть несколько фонов в контейнере сетки, где вы заполните пробел белым цветом (или любым цветом, используемым в качестве фона).

Добавлен прозрачный слой к элементу сетки, чтобы лучше проиллюстрировать

html,
body {
  height: 100%;
  margin:0;
}

.grid {
  display: grid;
  height: 100%;
  grid-template-columns: repeat(6, 1fr);
  grid-template-rows: repeat(2, 1fr);
  grid-gap: 10px;
  background: 
    /*middle horizontal line*/
    linear-gradient(#fff,#fff) center/100% 10px,
    /*top vertical line*/
    linear-gradient(#fff,#fff) top center/10px 50%,
    /*bottom lines*/
    linear-gradient(#fff,#fff) calc(1*100%/3 - 3px) 100%/10px 50%,
    linear-gradient(#fff,#fff) calc(2*100%/3 + 3px) 100%/10px 50%,
    /*main background*/
    url("https://cdn.pixabay.com/photo/2017/01/08/21/11/wood-1963988__340.jpg") center/cover;
  background-repeat:no-repeat;
}

.grid>* {
  background: rgba(255, 255, 0, 0.2);
  /*to illustrate*/
}

.grid_cell_one {
  grid-column: 1 / span 3;
  grid-row: 1 / span 1;
}

.grid_cell_two {
  grid-column: 4 / span 3;
  grid-row: 1 / span 1;
}

.grid_cell_three {
  grid-column: 1 / span 2;
  grid-row: 2 / span 1;
}

.grid_cell_four {
  grid-column: 3 / span 2;
  grid-row: 2 / span 1;
}

.grid_cell_five {
  grid-column: 5 / span 2;
  grid-row: 2 / span 1;
}
<div class = "grid">
  <div class = "grid_cell_one">
  </div>
  <div class = "grid_cell_two">
  </div>
  <div class = "grid_cell_three">
  </div>
  <div class = "grid_cell_four">
  </div>
  <div class = "grid_cell_five">
  </div>
</div>

Вы можете проверить эту ссылку для получения более подробной информации о другом используемом значении: Использование процентных значений с фоновым положением на линейном градиенте

Привет, Темани Афиф, вариант А - это все, что мне было нужно, background-attachment: fix сделал свое дело. Поскольку мы используем его для отображения корпоративных данных на экранах приветствия, прокрутка не требуется. Танков много мужик!

Patrick3k 08.04.2019 10:37

Просто любопытно, как background-attachement:fixed охватывает изображение по всему контейнеру? Кто-нибудь может объяснить?

Abhinandan Khilari 18.05.2020 07:22

@AbhinandanKhilari background-attachment:fixed сделает ссылку на фон экраном, поэтому у вас не будет одного изображения, но у каждого элемента будет свой собственный фон, и, поскольку все они будут иметь одинаковую ссылку, они создадут непрерывную.

Temani Afif 18.05.2020 12:33

@Termani спасибо, это означает, что background-attachment:fixed работает так же, как и position:fixed, делая экран ориентиром, верно?

Abhinandan Khilari 18.05.2020 13:01

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

Temani Afif 18.05.2020 13:03

Другие вопросы по теме