You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取元素高度并根据高度为不同元素应用CSS样式?

问题:批量调整多个同class元素的高度,将原高度减5px

需求:获取所有class为.card的元素,无论原高度是否超过400px,都将它们的高度设置为原高度减去5px。

用户尝试的代码:

JavaScript

jQuery(document).ready(function( $ ){
  
  var cardHeight = $('.card').height();
  
  if (cardHeight > 400) {
    $(this).height(cardHeight - 5);
    }
  else{
    $(this).height(cardHeight - 5);
  }
  
});

CSS

.wrapper {
  width: 100%;
  overflow: hidden;
}
.wrapper .card {
  width: 20%;
  float: left;
  margin: 10px;
  background-color: red;
}
.wrapper .card:nth-child(1) {
  height: 333px;
}
.wrapper .card:nth-child(2) {
  height: 333px;
}
.wrapper .card:nth-child(3) {
  height: 500px;
}
.wrapper .card:nth-child(4) {
  height: 500px;
}

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<body>
<div class="wrapper">
  <div class="card"></div>
  <div class="card"></div>
  <div class="card"></div>
  <div class="card"></div>
</div>
</body>

问题分析:

  1. 高度获取不全面:$('.card').height()仅返回第一个匹配元素的高度,无法拿到每个.card各自的高度值。
  2. 上下文指向错误:$(this)在当前回调中指向的是document对象,不是目标.card元素,导致高度设置无效。
  3. 冗余条件判断:if-else分支的执行逻辑完全一致,没必要做多余的条件判断。

修正后的代码:

jQuery(document).ready(function( $ ){
  // 遍历每个.card元素,逐个处理
  $('.card').each(function() {
    // 获取当前元素的原高度
    var originalHeight = $(this).height();
    // 设置新高度为原高度减5px
    $(this).height(originalHeight - 5);
  });
});

说明:

  • 用.each()遍历所有.card元素,确保每个元素都被单独处理。
  • 遍历回调中$(this)指向当前正在处理的.card,能正确获取和设置其高度。
  • 移除冗余判断,直接执行高度调整逻辑,完全匹配需求。

内容的提问来源于stack exchange,提问作者agon024

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 14:52:07