JavaScript:最大高度:NaN

JavaScript: Max Height: NaN

在我们 Shopify 网站的 collection 页面中,由于产品标题的长度可变,每个产品卡中的查看详细信息按钮都未对齐。为了对齐它们,我们决定使用纯 JavaScript 将一行中所有产品卡的产品标题 min-height 设置为同一行三个中最高的。以下是实现此目的的完整逻辑。

逻辑:

理想-去做row-wise window.innerWidth 768px 及以上 - 3 列 否则 2 列

下面的代码只是解决方案的第一部分。我在控制台中得到的输出是 Max Height: NaN 而不是实际高度,因为下面链接的 collection 页面中有 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.log('Max Height: ' + maxHeight);
});

.height 不是 JS 中 html 个元素的 属性,所以你可以使用

getComputedStyle(element)[0].height 而不是那个,

getComputedStyle 是 window 对象的一个​​很好的方法,可以帮助您获取元素的所有样式(无论它们是内联的、内部的还是外部的)

我还测试了@James 在关于

的评论中所说的内容
let cardTitleHeight = cardTitle.clientHeight;

它也有效...

你也可以使用 element.getClientRects 来获取元素的高度