LovedIn:案例研究

发布: (2026年2月21日 GMT+8 20:10)
10 分钟阅读
原文: Dev.to

I’m happy to translate the article for you, but I’ll need the full text of the post (the content you’d like translated). Could you please paste the article’s body here? Once I have that, I’ll provide a Simplified‑Chinese translation while keeping the source link and all formatting intact.

介绍

嗨,我是 Awoyemi Abiola,这是我为 Rise Academy 前端轨道项目的 第 5 周任务——LovedIn 所做的案例研究。

在本案例研究中,我们将涵盖:

  • 本项目解决的与爱情相关的挑战
  • 为谁解决这些问题
  • 解决方案与 UI 设计
  • 技术结构与架构(HTML + CSS)
  • 对协作的整体反思以及改进之处

让我们深入了解。

问题

在当今快节奏的数字世界中,表达浪漫兴趣变得日益复杂且令人焦虑。许多人面临以下困扰:

  1. Finding the right words – 为了打造完美的求爱,压力常导致错失机会或出现尴尬场面。人们会花费数小时反复思考 what to say、how to say it、以及 when to say it,结果可能最终一句话也没说。
  2. Personalisation challenges – 千篇一律的举动显得不够亲切或不真诚。简单的 “Will you be my girlfriend/boyfriend?” 短信无法传达背后深思熟虑和用心的情感。
  3. Lack of a memorable format – 传统短信或社交媒体私信缺少关系里程碑应有的特殊且持久的品质。这些时刻应被珍藏,而不是淹没在聊天记录的海洋中。

LovedIn 通过提供一个结构化、深思熟虑且个性化的平台来解决这些挑战,消除浪漫求爱中的压力,同时保持真实性和真诚。它为用户提供工具,以美丽且难忘的方式表达情感。

目标受众

LovedIn的主要受众是 技术熟练的年轻成年人(18‑35岁),他们熟悉线上约会文化,并且重视创意且用心的表达情感。

方案概述

我们设计了一个 多页面求婚网站,其流程如下:

  1. 交互式登陆页面 – 从一开始就吸引用户。
  2. 个性化信息收集 – 表单收集关于求婚者和目标伴侣的详细信息。
  3. 自动生成、定制化的求婚页面 – 使用收集的数据渲染最终可分享的求婚页面。

此流程在整个创作过程中保持情感连结;用户不仅仅是填写表单并获取链接——他们正在为潜在的伴侣打造一段用心、浪漫的体验。

视觉设计

色彩调色板

角色十六进制代码名称
主色#E22B3B猩红绯红
次色#ED4779野草莓
强调色#FA88BB花瓣霜
背景色#F0D1D7粉红康乃馨
辅助色#D86A77腮红玫瑰

调色板倾向于浪漫、亲切的色调,营造出温暖、柔和且情感上令人愉悦的氛围,而不会显得嘈杂或压迫。

排版

我们需要一种在浪漫与清晰之间取得平衡的字体。经过讨论,我们选择了:

  • 标题: Playfair Display – 表现力强且优雅。
  • 正文: Inter – 简洁、极易阅读。

技术架构

该网站使用 语义化 HTML 构建,以提升可访问性和 SEO:

  • <nav> – 导航和主视觉区
  • <main> – 主要内容
  • <section> – 相关内容的逻辑分组
  • <footer> – 底部内容
  • <aside> – 辅助内容

CSS – 全局自定义属性

所有颜色、字体、间距和过渡值均以 CSS 自定义属性 的形式存储在基础样式表中,并在每个页面之间共享。

:root {
  /* ==================== COLORS ==================== */

  /* Primary Colors */
  --color-primary: #e22b3b;
  --color-primary-bg: #f0d1d7;

  /* Secondary Colors */
  --color-secondary: #ed4779;
  --color-secondary-bg: #fff6f8;

  /* Accent Colors */
  --color-accent: #fa88bb;

  /* Support Colors */
  --color-support: #d86a77;

  /* Neutral Colors */
  --color-white: #ffffff;
  --color-gray-50: #f9fafb;
  --color-gray-100: #f3f4f6;
  --color-gray-200: #e5e7eb;
  --color-gray-300: #d1d5db;
  --color-gray-400: #9ca3af;
  --color-gray-500: #6b7280;
  --color-gray-600: #4b5563;
  --color-gray-700: #374151;
  --color-gray-800: #1f2937;
  --color-gray-900: #111827;
  --color-black: #000000;

  /* ==================== TYPOGRAPHY ==================== */

  /* Font Families */
  --font-display: "Playfair Display", serif;
  --font-body: "Inter", sans-serif;

  /* Base Font Size */
  --font-size-base: 16px;

  /* Font Sizes – Type Scale */
  --font-size-xs: 0.75rem;   /* 12px */
  --font-size-sm: 0.875rem;  /* 14px */
  --font-size-md: 1rem;      /* 16px */
  --font-size-lg: 1.125rem;  /* 18px */
  --font-size-xl: 1.25rem;   /* 20px */
  --font-size-2xl: 1.5rem;   /* 24px */
  --font-size-3xl: 1.875rem; /* 30px */
  --font-size-4xl: 2.25rem;  /* 36px */
  --font-size-5xl: 3rem;     /* 48px */
  --font-size-6xl: 3.75rem;  /* 60px */
  --font-size-7xl: 4.5rem;   /* 72px */

  /* Heading Scales */
  --heading-h1: var(--font-size-5xl);
  --heading-h2: var(--font-size-4xl);
  --heading-h3: var(--font-size-3xl);
  --heading-h4: var(--font-size-2xl);
  --heading-h5: var(--font-size-xl);
  --heading-h6: var(--font-size-lg);

  /* Font Weights */
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-extrabold: 800;

  /* Line Heights */
  --line-height-tight: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.75;

  /* ==================== SPACING & SHAPES ==================== */

  /* Spacing Scale – Padding / Margin */
  --spacing-xs: 0.25rem;   /* 4px */
  --spacing-sm: 0.5rem;    /* 8px */
  --spacing-md: 1rem;      /* 16px */
  --spacing-lg: 1.5rem;    /* 24px */
  --spacing-xl: 2rem;      /* 32px */
  --spacing-2xl: 2.5rem;   /* 40px */
  --spacing-3xl: 3rem;     /* 48px */
  --spacing-4xl: 4rem;     /* 64px */
  --spacing-5xl: 5rem;     /* 80px */
  --spacing-6xl: 6rem;     /* 96px */

  /* Border Radius */
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --radius-xl: 16px;
  --radius-2xl: 20px;
  --radius-full: 9999px;

  /* Border Widths */
  --border-width-thin: 1px;
  --border-width-medium: 2px;
  --border-width-thick: 4px;
}

这些变量随后在整个样式表中被引用,确保视觉语言的一致性,并使未来的更新变得简便。

反思

  • 协作: 与 Rise Academy 小组合作促进了快速反馈循环,并帮助及早发现可访问性问题。
  • 做得好的方面:
    • 语义化标记提升了 SEO 和屏幕阅读器的导航。
    • 色彩方案和排版营造了统一且浪漫的氛围。
    • 使用 CSS 自定义属性保持了设计系统的可维护性。
  • 需要改进的方面:
    • 为偏好低光环境的用户添加暗模式变体。
    • 为表单验证逻辑实现单元测试。
    • 提升登录页动画在低端设备上的性能。

总体而言,LovedIn 展示了深思熟虑的 UI/UX 与干净、语义化代码相结合,如何将像浪漫求婚这样的压力时刻转化为难忘且充满喜悦的体验。

CSS 变量与设计令牌

/* ========== SHADOWS ========== */
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
--shadow-colored: 0 6px 20px rgba(226, 43, 59, 0.25);
--shadow-subtle: 0 0 0 3px rgba(226, 43, 59, 0.15);

/* ========== TRANSITIONS ========== */
--transition-fast: 150ms ease-in-out;
--transition-base: 250ms ease-in-out;
--transition-slow: 350ms ease-in-out;

/* ========== LINEAR GRADIENTS ========== */
--gradient-primary: linear-gradient(
  135deg,
  var(--color-primary-bg),
  var(--color-secondary-bg)
);
--gradient-secondary: linear-gradient(
  135deg,
  var(--color-secondary-bg),
  var(--color-primary-bg)
);
--gradient-transparent: linear-gradient(
  rgba(255, 192, 203, 0.6),
  rgba(255, 182, 193, 0.6)
);

这种方法确保了网站共享元素的一致性和凝聚力,尽可能减少了重复。

布局策略

在整个应用程序中使用了 Flexbox,以实现一致的布局和无缝的响应性:

display: flex;
align-items: center;
justify-content: space-between;

导航栏重构

原始导航栏未遵循语义标准或非重复的 HTML 结构。已对其进行修改,使所有导航链接直接成为 <nav> 元素的子元素。

HTML

<nav class="navigation">
  <div class="logo">
    [Image: LovedIn logo]
  </div>

  <div id="nav-links-container">
    <a href="#features">Features</a>
    <a href="stories.html">Stories</a>
    <a href="login.html">Sign In</a>
    <a href="index.html#get-started">Get Started</a>
  </div>
</nav>

CSS

.navigation {
  max-width: 1144px;
  margin: 0 auto var(--spacing-3xl);
  background: var(--color-secondary-bg);
  border-radius: var(--radius-full);
  padding: var(--spacing-md) var(--spacing-lg);
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-shadow: var(--shadow-md);
}

#nav-links-container {
  display: flex;
  align-items: center;
  gap: var(--spacing-3xl);
}

项目回顾

总体而言,这对我来说是一个非常有趣的项目。我学到了很多关于使用 Git 和 GitHub 进行协作的知识,以及编写语义化 HTML 和使用 CSS 构建结构化设计系统的标准。

协作并非没有挑战——尤其是在由于团队成员观点不同而导致实现功能和页面的标准化方法难以保持时。我们通过明确、简洁的讨论和定期会议克服了这些障碍,确保每周的需求都得到充分沟通和理解。

未来改进(v2.0)

  • 增强语义 – 进一步优化 HTML,以提升意义表达。
  • SEO 优化 – 改进元数据、标题和内容层次结构。
  • 可访问性 – 审核并处理 ARIA 角色、焦点管理和颜色对比度。

致谢

  • Oluchi Okwuosa – GitHub 合作者
  • Sophia Ahuoyiza – GitHub 贡献者(问题提交和反馈)

您可以在此处查看他们的案例研究版本:
Link to case study.

0 浏览
Back to Blog

相关文章

阅读更多 »

HTML基础介绍

HTML是什么?HTML是Hyper Text Markup Language的缩写。它用于创建网页并在互联网上组织内容。你看到的每个网站都是由它构建的……