Div с «высотой: 100%» больше, чем дочерний

Я работаю в WordPress с темой Divi и сделал сетку из 2 строк и 4 столбцов. Я пытаюсь создать зигзагообразный узор в сетке, где каждый div имеет либо изображение, либо текст:

изображение текст изображение текст текст изображение текст изображение

Я только что добавил изображения и заметил немного остаточного пространства внизу каждого изображения. Это портит шаблон, поэтому я попытался проверить и заметил, что все div, содержащие изображения, простираются немного дальше, чем изображения.

Я пытаюсь избавиться от лишнего пространства внизу каждого изображения, масштабируя div в соответствии с размером дочернего элемента (img).

Примечание: хотя я работаю в WordPress с темой divi, мне кажется, что проще всего сделать это с помощью пользовательского кода, поэтому я использую модуль кода Divi для HTML и пишу CSS в разделе «Внешний вид WordPress» > «Настроить» > «Дополнительный CSS».

Изображение сетки. Я здесь в инспекторе, так что это правильно вписывается в картинку

HTML:

<section>
    <div class = "grid-container">
    <div class = "grid-img-1">
      <img src = "/wp-content/uploads/2023/05/PC-grid-grapes.svg">
    </div>
    <div class = "grid-img-2">
      <img src = "/wp-content/uploads/2023/05/PC-grid-barrels.svg">
    </div>
    <div class = "grid-img-3">
      <img src = "/wp-content/uploads/2023/05/PC-grid-pouring.svg">
    </div>
    <div class = "grid-img-4">
      <img src = "/wp-content/uploads/2023/05/PC-grid-grapefield.svg">
    </div>
    <div class = "grid-link-1"></div>
    <div class = "grid-link-2"></div>
    <div class = "grid-link-3"></div>
    <div class = "grid-link-4"></div>
  </div>
</section>

CSS

/* Card grid */

.grid-container {
    display: grid;
  grid-template-columns: repeat(4, 25%);
  grid-template-rows: repeat(2, 50%);
  grid-auto-flow: row;
}

.grid-img-1 {
    grid-row-start: 1;
    grid-row-end: 2;
    grid-column-start: 1;
    grid-column-end: 2;
}

.grid-img-2 {
    grid-row-start: 2;
    grid-row-end: 3;
    grid-column-start: 2;
    grid-column-end: 3;
}

.grid-img-3 {
    grid-row-start: 1;
    grid-row-end: 2;
    grid-column-start: 3;
    grid-column-end: 4;
}

.grid-img-4 {
    grid-row-start: 2;
    grid-row-end: 3;
    grid-column-start: 4;
    grid-column-end: 5;
}

.grid-link-1 {
    grid-row-start: 2;
    grid-row-end: 3;
    grid-column-start: 1;
    grid-column-end: 2;
}

.grid-link-2 {
    grid-row-start: 1;
    grid-row-end: 2;
    grid-column-start: 2;
    grid-column-end: 3;
}

.grid-link-3 {
    grid-row-start: 2;
    grid-row-end: 3;
    grid-column-start: 3;
    grid-column-end: 4;
}

.grid-link-4 {
    grid-row-start: 1;
    grid-row-end: 2;
    grid-column-start: 4;
    grid-column-end: 5;
}

Я пробовал основы height: 100%;, margin/padding: 0;, box-sizing: border-box;, с !important и без height: 100%;, просто чтобы посмотреть, что сработало, но ничего не помогло.

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

Я подумал, что, возможно, изображение не полностью загрузилось, поэтому масштаб div будет правильным, но размер изображения соответствует задуманному, поэтому я не думаю, что это так.

Я надеюсь, что это проблема, которую может решить CSS, потому что, помимо того факта, что я не очень хорошо разбираюсь в JavaScript, я не знаю, где я мог бы написать свой код JavaScript в WordPress/Divi.

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

Xaib Aslam 06.05.2023 15:01

сайт petitceller.nl. У меня есть 2 сетки на этом сайте, которые выглядят одинаково, потому что я пытался сделать это с помощью конструктора divi, но быстро понял, что это не сработает. Раздел, над которым я работаю, — второй.

Jaywesterlow 06.05.2023 15:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
81
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я попытался воссоздать ошибку, которая у вас возникла, но, похоже, это не работает! Можете ли вы поделиться размерами изображений? Вы можете попробовать этот код на изображениях:

img {
height: 100%;
width: 100%;
display: block;
}

Вот codepen того, как это выглядит.

Спасибо за быстрый ответ. все изображения в формате svg размером 480 x 540. Однако я попробовал ваш код, но, к сожалению, он ничего не изменил

Jaywesterlow 06.05.2023 15:08

изображения по умолчанию имеют display: inline по умолчанию (поэтому они рассматриваются как текст), и браузеры добавляют немного места в свой контейнер, чтобы исправить общую базовую настройку других встроенных элементов. Чтобы удалить его, вам просто нужно добавить display: block к вашему изображению.

Посмотрите на этот код в качестве примера: В первом div есть лишний пробел, а во втором нет.

div {
  background-color: red;
  margin-bottom: 10px;
}

.image-block {
  display: block;
}
<div>
  <img src = "https://placehold.co/600x200" />
</div>

<div>
  <img src = "https://placehold.co/600x200" class = "image-block" />
</div>

Если вы все еще видите нежелательное пространство внизу, это может быть из-за неправильного viewBox для ваших файлов svg. Попробуйте открыть файл SVG и отредактируйте его атрибут viewBox. Четвертое значение определяет высоту, вы можете немного уменьшить его и посмотреть, работает ли оно.

Предыдущий участник также попросил меня попробовать это. Однако это не сработало. Благодаря вашему объяснению я понимаю это немного лучше, и кажется, что это должно быть авзером, но это ничего не меняет.

Jaywesterlow 06.05.2023 15:25

пожалуйста :). Также попробуйте изменить viewBox. Кстати, вы также можете прикрепить скриншот к своему вопросу, чтобы получить еще лучшую помощь.

pouria 06.05.2023 15:31

@Jaywesterlow Я только что проверил ваш сайт. Я просто добавил display: block к изображениям, и места не осталось. вы уверены, что применили его правильно?

pouria 06.05.2023 20:37

Я допустил ошибку с селекторами при реализации кода display: block;, поэтому подумал, что это не сработает. Простите всех! Вы все давным-давно дали мне правильный авсер.

Jaywesterlow 07.05.2023 21:15

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