На страницах коллекций нашего сайта Shopify кнопки СМОТРЕТЬ ДЕТАЛИ на каждой карточке продукта смещены из-за разной длины названия продукта. Чтобы выровнять их, мы решили установить минимальную высоту названий продуктов всех карточек продуктов подряд на самую высокую из трех в одной строке, используя чистый JavaScript. Ниже приведена полная логика для достижения этого.
Логика:
Идеально - делать это построчно окно.innerWidth 768px и выше — 3 столбца еще 2 столбца
Приведенный ниже код — это только первая часть решения. Вывод, который я получаю в консоли, это Max Height: NaN вместо фактической высоты, потому что на странице коллекции, указанной ниже, есть 15 продуктов с их названиями.
Код JavaScript:
// Find All selectors of ".card__info"
let allCardInfo = document.querySelectorAll(".card__info");
// Set number of cards per row, to check based on window.innerWidth
var numCardsPerRow = ((window.innerWidth >= 768) ? 3 : 2);
var maxHeight = 0; // Set max height = 0;
// Foreach card__info selector, execute the following:
allCardInfo.forEach(element => {
let cardTitle = element.querySelector(".card__title"); // Get the card__title
let cardTitleHeight = cardTitle.height; // Get the height.
// Set max height = max (max_height, new height)
maxHeight = Math.max(maxHeight, cardTitleHeight);
console.info('Max Height: ' + maxHeight);
});
Большое спасибо, это помогло. пусть cardTitleHeight = cardTitle.height(); говорит, что высота не является функцией? здесь есть поправка?
let cardTitleHeight = cardTitle.height;Попробуйте let cardTitleHeight = cardTitle.clientHeight;
@Джеймс, не могли бы вы сказать мне, какую функцию использовать для установки минимальной высоты того же элемента cardTitle?



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


.height не является свойством html-элементов в JS, поэтому вы можете использовать
getComputedStyle(element)[0].height вместо этого,
getComputedStyle — хороший метод объекта окна, который помогает вам получить ВСЕ стили элемента (независимо от того, являются ли они встроенными, внутренними или внешними)
Я также проверил, что @James сказал в комментариях о
let cardTitleHeight = cardTitle.clientHeight;
тоже работает...
Вы также можете использовать element.getClientRects, чтобы получить высоту вашего элемента
Махдия, не могли бы вы сказать мне, какую функцию использовать для установки минимальной высоты того же элемента cardTitle?
Тебе не нужна функция, element.style.minHeight = "100px"
должен быть document.querySelector