Я работаю в 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.
сайт petitceller.nl. У меня есть 2 сетки на этом сайте, которые выглядят одинаково, потому что я пытался сделать это с помощью конструктора divi, но быстро понял, что это не сработает. Раздел, над которым я работаю, — второй.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я попытался воссоздать ошибку, которая у вас возникла, но, похоже, это не работает! Можете ли вы поделиться размерами изображений? Вы можете попробовать этот код на изображениях:
img {
height: 100%;
width: 100%;
display: block;
}
Вот codepen того, как это выглядит.
Спасибо за быстрый ответ. все изображения в формате svg размером 480 x 540. Однако я попробовал ваш код, но, к сожалению, он ничего не изменил
изображения по умолчанию имеют 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. Четвертое значение определяет высоту, вы можете немного уменьшить его и посмотреть, работает ли оно.
Предыдущий участник также попросил меня попробовать это. Однако это не сработало. Благодаря вашему объяснению я понимаю это немного лучше, и кажется, что это должно быть авзером, но это ничего не меняет.
пожалуйста :). Также попробуйте изменить viewBox. Кстати, вы также можете прикрепить скриншот к своему вопросу, чтобы получить еще лучшую помощь.
@Jaywesterlow Я только что проверил ваш сайт. Я просто добавил display: block к изображениям, и места не осталось. вы уверены, что применили его правильно?
Я допустил ошибку с селекторами при реализации кода display: block;, поэтому подумал, что это не сработает. Простите всех! Вы все давным-давно дали мне правильный авсер.
я проверяю ваш код, и он работает нормально для меня, я не видел места, у вас есть скриншот или сайт, где мы можем увидеть точную проблему.