Я сделал что-то действительно похожее на то, что у вас есть, с некоторыми модификациями кода, в которых используются либо компоненты Foundation, которые улучшают и упрощают структуру, либо «хаки», помогающие достичь того, что вам нужно.
Вы можете проверить это в этом CodePen
Позвольте мне объяснить, что я сделал.
- Когда вы используете макет сетки, Foundation имеет возможность сделать Сетка блоков . Это действительно просто и очень удобно в использовании и решает необходимость подсчитать, сколько столбцов должна иметь каждая точка останова. То, что я сделал, было
<div class='grid-x grid-padding-x small-up-1 medium-up-2 large-up-3'>
. Это означает, что он указывает контейнеру, что у него будет 1 блок на строку на небольших устройствах, 2 блока на строку на средних устройствах и 3 блоки на ряд на больших устройствах и выше. Все, что вам нужно сделать после этого, это просто определить ячейку следующим образом:
<div class='cell'>
Как видите, это намного проще, чем <div class='cell medium-6 large-4'>
, и это экономит много времени на печатание.
Я специально спрашивал вас выше, требуется ли вам использовать изображения в теге
img
. Почему? Мне нравится использовать прозрачную прокладку с этим
svg
элементом. Это действительно легкий.
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1'%3E%3C/svg%3E">
Что он делает, так это то, что он создает SVG-изображение 1x1, но так как у него нет заданных c ширины и высоты, он просто имеет viewBox с пропорция 1: 1, которая в основном квадрат. Таким образом, он занимает доступное пространство и создает адаптивную квадратную форму. Поскольку оно прозрачное, вы можете использовать исходное изображение в качестве фона родительского элемента.
Таким образом, ваш элемент .image-card__image
всегда будет иметь одинаковую пропорцию в каждом элементе .image-card
, что позволит вам использовать data-equalizer
специально для названий.
Эквалайзер данных может фактически использоваться для нескольких элементов, синхронизируя несколько высот, но структура в этом случае на самом деле не требует этого. То, что я сделал, в основном назвал
data-equalizer
до
title
(вы можете узнать больше об этом
здесь ), и я назначил параметры
data-equalizer-watch='title'
элементам контейнера заголовка.
Кроме того, я не использовал гибкие определения, которые вы использовали для .image-card__image
. При использовании SVG они на самом деле не нужны.
Работают ли эти изменения у вас?