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

如何让数据库生成的Div实现绿→白→红背景色渐变?

解决绿→白→红渐变替代红绿直接过渡的问题

嘿,我完全懂你遇到的困扰——直接在绿色(0,255,0)和红色(255,0,0)之间线性过渡,确实会经过那种灰蒙蒙的棕色区域,视觉效果很糟糕。要实现绿→白→红的平滑渐变,我们可以把整个过渡拆成两段处理:前半段从绿色过渡到白色,后半段从白色过渡到红色,这样就能完美避开难看的中间色了。

修改后的实现代码

JavaScript 部分

const $elements = $('.ordreprio');
const totalElements = $elements.length;
// 计算过渡的中间分割点,将元素分为前后两段
const midPoint = totalElements / 2;

$elements.each(function(index) {
  let r, g, b;
  if (index < midPoint) {
    // 前半段:绿色 → 白色
    // 计算当前元素在这段的进度(0到1)
    const progress = index / (midPoint - 1);
    // 红和蓝从0递增到255,绿色保持最大值255
    r = Math.round(progress * 255);
    g = 255;
    b = Math.round(progress * 255);
  } else {
    // 后半段:白色 → 红色
    // 计算当前元素在这段的进度(0到1)
    const progress = (index - midPoint) / (totalElements - midPoint - 1);
    // 绿和蓝从255递减到0,红色保持最大值255
    r = 255;
    g = Math.round(255 * (1 - progress));
    b = Math.round(255 * (1 - progress));
  }
  // 设置背景色
  $(this).css('background-color', `rgb(${r}, ${g}, ${b})`);
});

HTML 部分(无需修改)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="recherchemot">
  <div class="ordreprio"> mon texte par a été trouvé 1 fois sur le cours 8 
    <form method="post" action="./coursrecherche.php" name="formcours8">
      <input type="hidden" name="valuecours" value="8">
    </form>
  </div>
  <br><br>
  <div class="ordreprio"> mon texte par a été trouvé 1 fois sur le cours 4 
    <form method="post" action="./coursrecherche.php" name="formcours4">
      <input type="hidden" name="valuecours" value="4">
    </form>
  </div>
  <br><br>
  <div class="ordreprio"> mon texte par a été trouvé 1 fois sur le cours 5 
    <form method="post" action="./coursrecherche.php" name="formcours5">
      <input type="hidden" name="valuecours" value="5">
    </form>
  </div>
  <br><br>
  <div class="ordreprio"> mon texte par a été trouvé 1 fois sur le cours 6 
    <form method="post" action="./coursrecherche.php" name="formcours6">
      <input type="hidden" name="valuecours" value="6">
    </form>
  </div>
  <br><br>
  <div class="ordreprio"> mon texte par a été trouvé 1 fois sur le cours 1 
    <form method="post" action="./coursrecherche.php" name="formcours1">
      <input type="hidden" name="valuecours" value="1">
    </form>
  </div>
  <br><br>
  <div class="ordreprio"> mon texte par a été trouvé 1 fois sur le cours 2 
    <form method="post" action="./coursrecherche.php" name="formcours2">
      <input type="hidden" name="valuecours" value="2">
    </form>
  </div>
  <br><br>
  <div class="ordreprio"> mon texte par a été trouvé 1 fois sur le cours 3 
    <form method="post" action="./coursrecherche.php" name="formcours3">
      <input type="hidden" name="valuecours" value="3">
    </form>
  </div>
  <br><br>
</div>

代码逻辑说明

  • 分段过渡:将所有元素平均分成两组,前组负责绿到白的过渡,后组负责白到红的过渡,完全避开了红绿混合产生的棕色区域。
  • 进度计算:通过元素索引计算当前在过渡段中的进度比例,确保颜色变化是线性平滑的。
  • 整数处理:用Math.round()将RGB值转为整数,避免浏览器对非整数值的解析异常。

如果需要调整白色在渐变中的位置(比如让白色更偏向绿色或红色一端),只需要修改midPoint的计算方式即可,比如改成midPoint = totalElements * 0.6就能让白色更靠近红色侧。

内容的提问来源于stack exchange,提问作者Paul Tanné

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:46:47