📜  css 水平滚动卡片 - CSS (1)

📅  最后修改于: 2023-12-03 15:14:22.081000             🧑  作者: Mango

CSS 水平滚动卡片

在网站制作中,卡片是一种常见的布局方式。它能够将信息以一种更有层次感的方式呈现出来,给用户更好的体验。而水平滚动卡片,是一种特别独特的布局方式,它能够让你在有限的空间内展示更多的内容。CSS 水平滚动卡片,正是一种实现水平滚动布局的 CSS 技术,下面介绍其实现方法与使用。

实现方法
基础结构

首先,在 HTML 中,需要创建一个容器元素,并在其中添加卡片元素。容器元素的 width 属性需要设置为容器宽度以展示卡片内容。

<div class="card-container">
  <div class="card">
    <img src="https://placehold.jp/150x120.png" alt="card image" />
    <h3>Card Title 1</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  </div>
  <div class="card">
    <img src="https://placehold.jp/150x120.png" alt="card image" />
    <h3>Card Title 2</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  </div>
  ...
</div>
布局样式

在 CSS 中,需要为容器元素设置 overflow: auto; white-space: nowrap;,以实现水平滚动的效果。同时设置卡片元素为 display: inline-block;,它会按照内部元素的尺寸紧凑排列。

.card-container {
  width: 100%;
  overflow: auto;
  white-space: nowrap;
}

.card {
  display: inline-block;
  width: 300px;
  margin-right: 20px;
  vertical-align: top;
}
前进与后退样式

若容器内的卡片元素过多,那么就需要前进与后退的按钮以让用户在滚动时能够更好地控制。下面是前进与后退按钮样式的示例。

.prev-btn,
.next-btn {
  position: absolute;
  top: 50%;
  padding: 5px;
  font-size: 24px;
  font-weight: bold;
  color: #fff;
  background-color: rgba(65, 116, 225, 0.8);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  z-index: 1;
  transform: translateY(-50%);
  transition: transform 0.3s;
}

.prev-btn:hover,
.next-btn:hover {
  transform: translateY(-50%) scale(1.2);
}

.prev-btn {
  left: 20px;
}

.next-btn {
  right: 20px;
}
整体结构

最终的整体结构如下:

<div class="card-container">
  <div class="card">
    <img src="https://placehold.jp/150x120.png" alt="card image" />
    <h3>Card Title 1</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  </div>
  <div class="card">
    <img src="https://placehold.jp/150x120.png" alt="card image" />
    <h3>Card Title 2</h3>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
  </div>
  ...
</div>
<button class="prev-btn">&lt;</button>
<button class="next-btn">&gt;</button>
.card-container {
  width: 100%;
  overflow: auto;
  white-space: nowrap;
}

.card {
  display: inline-block;
  width: 300px;
  margin-right: 20px;
  vertical-align: top;
}

.prev-btn,
.next-btn {
  position: absolute;
  top: 50%;
  padding: 5px;
  font-size: 24px;
  font-weight: bold;
  color: #fff;
  background-color: rgba(65, 116, 225, 0.8);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  z-index: 1;
  transform: translateY(-50%);
  transition: transform 0.3s;
}

.prev-btn:hover,
.next-btn:hover {
  transform: translateY(-50%) scale(1.2);
}

.prev-btn {
  left: 20px;
}

.next-btn {
  right: 20px;
}
使用方法

以上就是实现 CSS 水平滚动卡片的全部内容。使用方法非常简单,只需在 HTML 中添加以上的代码片段,并根据实际需求进行 CSS 样式自定义即可。同时,效果可以通过浏览器的开发者工具进行实时调试,非常方便。