有一个组件映射卡元素,如下所示:

enter image description here

如你所见,最上面、最左边的卡片比其他卡片少了一些高度.我怎么才能找到最高组件的高度,并将其他组件的高度设置为该高度?这就是我能想到的,但它不起作用,我假设它无法访问渲染的实际大小?:

代码:

const [maxHeight, setMaxHeight] = useState<number | undefined>();
  useEffect(() => {
    const cards = document.querySelectorAll(".card");
    cards.forEach((card) => {
      if (maxHeight) {
        if (card.getBoundingClientRect().height > maxHeight) {
          setMaxHeight(card.getBoundingClientRect().height);
        }
      }
    });
  }, []);
  

  return (
    <div className="grid grid-cols-1 gap-6 px-2 mx-auto md:grid-cols-3">
      {BestPractices.map((bestPractice) => (
        <Link href={bestPractice.href} key={bestPractice.name}>
          <div
            style={{ height: maxHeight }}
            className="relative p-6 transition-all ease-in-out border rounded-lg drop-shadow-card duration-120 hover:border-brand-dark border-slate-100 bg-slate-100 hover:scale-105 hover:cursor-pointer dark:border-slate-600 dark:bg-slate-800">
            <div
              className={clsx(
                // base styles independent what type of button it is
                "absolute right-6 rounded-full px-3 py-1 text-xs lg:text-sm",
                // different styles depending on type
                bestPractice.category === "Boost Retention" &&
                  "bg-pink-100 text-pink-500 dark:bg-pink-800 dark:text-pink-200",
                bestPractice.category === "Increase Revenue" &&
                  "bg-blue-100 text-blue-500 dark:bg-blue-800 dark:text-blue-200",
                bestPractice.category === "Understand Users" &&
                  "bg-orange-100 text-orange-500 dark:bg-orange-800 dark:text-orange-200"
              )}>
              {bestPractice.category}
            </div>
            <div className="w-12 h-12">
              <bestPractice.icon className="w-12 h-12 " />
            </div>
            <h3 className="mt-3 mb-1 text-xl font-bold text-slate-700 dark:text-slate-200">
              {bestPractice.name}
            </h3>
            <p className="text-sm text-slate-600 dark:text-slate-400">{bestPractice.description}</p>
          </div>
        </Link>
      ))}
    </div>
)

编辑:使用服务器组件.

推荐答案

不需要通过JS控制高度.Css可以为您做到这一点.

block类放在<Link />上,将h-full放在它的直接子对象上.当然,还有style个.

Css相关问答推荐

如何在css中从圆中切出1/n?

视频覆盖不适用于reactjs样式的组件

根据子索引计算变换 CSS 参数

如何仅在CSS中屏蔽具有多个形状的div框?

Tailwind CSS 不输出背景类

我无法覆盖 react ui 库中的组件样式

用css重复表格边框

在活动状态下更改按钮的外观

SASS 文件 struct :_typography、_layout 等中的相同 Select 器

如何使用rvest中的 node 和类提取网页数据

使用border-radius时填充元素之间的空间

如何将 Google 字体链接到我的 Nuxt 文件?

reactjs - 容器中水平行的png图像

修复导航栏隐藏页面内容

css3比例周围的空白

如何通过单击
  • 激活 HTML 链接?
  • 重置子元素的不透明度 - Maple Browser (Samsung TV App)

    如何隐藏锚文本而不隐藏锚?

    水平列表项

    从样式设置为 % 的元素获取宽度(以像素为单位)?