食谱卡片(份量换算 + 收藏交互 CSS 源码)

CSSJS 许可:自研原创

食谱卡片组件源码:份量加减自动换算食材用量、收藏状态切换、烹饪时间与难度标签,纯 CSS + 原生 JS 实现,适合美食博客、菜谱列表页与餐饮小程序。

效果演示(真实可交互)

下方是一张广式腊味煲仔饭食谱卡片:顶部渐变插画区带表情符号与「粤式经典」徽章,中部展示烹饪时间、难度与份量元信息,食材清单每行右侧的用量与份量实时联动。点击「+ / −」把份量从 1 调到 8,米、腊肠、腊肉、鸡蛋等用量会按比例自动换算;点击「收藏食谱」可切换为红色「♥ 已收藏」状态,并带一次心跳缩放动画。

🍚 粤式经典 · 一锅成饭

广式腊味煲仔饭

腊肠腊肉双拼、金黄锅巴,一锅端出街头烟火气。食材用量随份量自动换算。

⏱ 45 分钟 🔥 中难度 👥 2 人份
食材清单 随份量自动换算
  • 丝苗米150g
  • 广式腊肠2 根
  • 腊肉80g
  • 鸡蛋1 个
  • 菜心4 棵
  • 煲仔饭酱油30ml
2

完整代码

HTML 结构:卡片由插画区(.rc-hero)与内容区(.rc-body)组成,食材行用静态结构 + JS 索引一一对应:

<div class="rc-card">
  <div class="rc-hero">
    <span class="rc-emoji">🍚</span>
    <span class="rc-badge">粤式经典 · 一锅成饭</span>
  </div>
  <div class="rc-body">
    <h3>广式腊味煲仔饭</h3>
    <div class="rc-meta">
      <span>⏱ 45 分钟</span><span>🔥 中难度</span><span>👥 <b>2</b> 人份</span>
    </div>
    <ul class="rc-ing">
      <li><span>丝苗米</span><b class="rc-q">150g</b></li>
      <!-- 其余食材行同理 -->
    </ul>
  </div>
</div>

核心 CSS:卡片使用深色渐变 + 双层 radial 光斑营造氛围;收藏按钮激活态用边框与背景色切换,图标配一次心跳关键帧:

.rc-fav.active {
  background: rgba(255, 107, 138, .14); border-color: #ff6b8a; color: #ff6b8a;
}
.rc-fav.active #rcFavIcon { animation: rcHeart .45s ease; }
@keyframes rcHeart {
  0% { transform: scale(1); }
  40% { transform: scale(1.5); }
  100% { transform: scale(1); }
}

原生 JS:份量换算的核心是「每份基准量数组 × 份数」,再按单位格式化:

const BASE = [75, 1, 40, 0.5, 2, 15]; // 每份:米g/腊肠根/腊肉g/鸡蛋个/菜心棵/酱油ml
const UNITS = ['g', ' 根', 'g', ' 个', ' 棵', 'ml'];
function render() {
  qEls.forEach((el, i) => {
    el.textContent = fmt(BASE[i] * servings) + UNITS[i];
  });
}

参数说明

参数默认值说明
份数范围1 – 8加减按钮的上下限,可自行调整
每份基准量 BASE[75, 1, 40, 0.5, 2, 15]与食材行一一对应,改菜谱时同步改数组
单位数组 UNITS['g', ' 根', …]与基准量配对,决定用量后缀
初始份数2页面加载时的默认份量
收藏文案收藏食谱 / 已收藏切换态文案,可替换

兼容性与性能

常见问题

Q: 换了菜谱怎么改用量? 只需替换 BASE 与 UNITS 两个数组,顺序与食材行一一对应即可,份数逻辑无需改动。

Q: 份数想支持小数(如 2.5 人份)? 把加减按钮步长改为 0.5 并去掉整数下限判断即可,换算公式天然支持小数。

Q: 收藏状态刷新后丢失怎么办? 演示版只做了内存态;生产环境可把状态写入 localStorage 或对接登录用户接口。

Q: 可以商用吗? 可以,粤喵自研原创组件,免费商用无需署名。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核