创建动态网格布局

130 阅读2分钟

codepen.io/tutsplus 原作者主页

探讨如何使用HTML和CSS构建一个具有动态响应能力的网格布局。这个布局将展示美丽的海滩图片,并通过悬停效果增强用户体验。我们将详细讲解每个部分的实现步骤以及设计思路。

  1. 项目概述 本项目旨在创建一个响应式网格布局,适用于展示图片和相关信息。每个卡片展示了一张海滩图片,悬停时会显示更多信息。这种布局特别适合摄影作品、旅游景点或产品展示,能够有效吸引用户注意力。
  2. HTML结构 我们首先构建HTML结构,使用
    和标签来定义网格和卡片。每个卡片包含一个图片和图注,。以下是示例代码:
  <article class="card">
    <figure>
      <img src="beach.jpg" alt="Santorini, Greece">
      <figcaption>
        <div>
          Santorini, Greece
          <span>by <a href="https://unsplash.com/photos/...">Khamkéo</a></span>
        </div>
      </figcaption>
    </figure>
  </article>
  <!-- 其他卡片 -->
</div>

  1. CSS样式

接下来,我们使用CSS来实现布局和样式。我们定义了一个主网格,并通过grid-template-columns属性设置了列的比例:

  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  max-width: 1600px;
  margin: 0 auto;
  box-shadow: 0 15px 30px rgba(0, 0, 0, 0.35);
}
  1. 响应式设计

为了确保布局在不同设备上都有良好显示,我们使用媒体查询来调整卡片的高度和网格布局。比如,在小屏幕设备上,我们设置卡片高度为视口高度的一半:

  1. 悬停效果

为增强用户体验,我们为卡片添加了悬停效果。通过filteropacity属性,我们可以在鼠标悬停时改变卡片的样式,从而吸引用户的注意力:

  cursor: pointer;
  transition: all 1s;
}

.card:hover {
  filter: grayscale(0);
}

figcaption {
  opacity: 0;
  transition: opacity 0.5s;
}

.card:hover figcaption {
  opacity: 1;
}

在这个实现中,卡片在鼠标悬停时会显示图注,同时将图像的灰度取消,使用户能更好地注意到卡片信息。

  1. 整体效果

将以上所有元素结合在一起,我们可以创建一个直观且富有吸引力的图像网格。用户在悬停卡片时,不仅能看到图片,还能获得相关的详细信息
**** 需要打开右上角的码上掘金打开看代码,获得完整效果****

转载自codepen