如何使用 Material Design 规范设计出更好的卡片设计?

Material Design 是 Google 推出的一套设计规范,旨在提供一种直观、一致、有意义的视觉体验。卡片 (Card) 设计是 Material Design 中的一种常见布局方式,它能帮助我们以可预测和可重用的方式展示信息,促进用户与内容的交互和探索。在本文中,我们将深入了解如何使用 Material Design 规范设计出更好的卡片设计。

为什么要使用卡片设计?

卡片是一种页面中的模块化元素,可以承载各种类型的元素,如图片、文本、按钮、链接等。卡片设计可以帮助我们充分利用页面空间,提供结构化的信息,同时充分考虑用户体验,使得页面变得更加美观、易用。

此外,卡片设计也是一种被广泛应用的设计风格,我们在许多应用和网站中都能看到它的存在,如 Pinterest、Instagram、Google Now 等。

如何设计卡片?

1. 卡片的布局

卡片中通常包含图像、标题、摘要、操作等元素。我们可以使用如下布局来构建卡片。

<div class="card">
  <img src="card-image.png" alt="Image description">
  <div class="card-text">
    <h2>Card title</h2>
    <p>Card description</p>
  </div>
  <div class="card-actions">
    <button class="btn">Action 1</button>
    <button class="btn">Action 2</button>
  </div>
</div>

2. 卡片的样式

根据 Material Design 规范,卡片应该在阴影、形状、颜色等方面保持一致。具体来说,卡片应该采用以下样式:

  • 阴影:卡片应该有 1dp 的阴影,以提供轻微的高度和深度视觉效果;
  • 形状:卡片应该采用矩形或圆角矩形的形状;
  • 颜色:我们应该根据元素内容和重要性来选择颜色。例如,我们可以使用明亮和鲜艳的颜色来突出重点信息。

我们可以使用如下 CSS 样式来实现卡片的样式:

.card {
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.14),
              0 1px 3px 0 rgba(0, 0, 0, 0.12),
              0 2px 1px -1px rgba(0, 0, 0, 0.2);
  border-radius: 2px;
  background-color: #ffffff;
  padding: 16px;
}

3. 卡片的交互

卡片中通常包含交互元素,如按钮、链接等。我们可以使用 Material Design 规范中的交互效果来增强用户体验。例如,当用户单击按钮时,我们可以添加一个简短动画效果,以表示按钮已被单击。

我们可以使用如下代码来实现 Material Design 标准中的交互效果:

<button class="btn" onclick="ripple(this)">Click me</button>

<script>
  function ripple(elm) {
    const ripple = document.createElement('span');
    ripple.className = 'ripple';
    elm.appendChild(ripple);
    const d = Math.max(elm.clientWidth, elm.clientHeight);
    const rect = elm.getBoundingClientRect();
    ripple.style.width = ripple.style.height = d + 'px';
    ripple.style.left = event.clientX - rect.left - d/2 + 'px';
    ripple.style.top = event.clientY - rect.top - d/2 + 'px';
    ripple.classList.add('ripple-start');
    setTimeout(() => {
      elm.removeChild(ripple);
    }, 500);
  }
</script>

<style>
  .btn {
    background-color: #4285f4;
    color: #ffffff;
    border-radius: 2px;
    font-size: 14px;
    padding: 8px 16px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    transition: background-color 225ms cubic-bezier(0.4, 0, 0.2, 1),
                box-shadow 225ms cubic-bezier(0.4, 0, 0.2, 1);
  }
  .ripple {
    position: absolute;
    opacity: 0;
    pointer-events: none;
    background-color: rgba(0, 0, 0, 0.2);
    border-radius: 50%;
    transform: scale(1);
    transition: opacity 1s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  }
  .ripple-start {
    opacity: 0.5;
    transform: scale(1.5);
  }
</style>

总结

卡片设计是一种重要的布局方式,它能帮助我们提供层次化的信息和交互,同时提高页面的美观度和易用性。在设计卡片时,我们应该遵循 Material Design 的规范,以提供一致和高质量的设计效果,同时也可以加入一些交互效果,以提高用户的参与度和体验。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65ade467add4f0e0ff76a18b