返回

CSS 实现无滚动条滑动组件:丝滑顺畅,惊艳视觉!

前端

CSS 实现无滚动条滑动组件

CSS 的 transform 属性和 transition 属性相结合,可以实现无滚动条的滑动组件。

弹性滑动

弹性滑动是指滑动组件在手指离开屏幕后,继续滑动一段距离。这可以通过在 transition 属性中设置 cubic-bezier(0.175, 0.885, 0.32, 1.275) 来实现。

快速滑动

快速滑动是指滑动组件在手指离开屏幕后,立即停止滑动。这可以通过在 transition 属性中设置 cubic-bezier(0.25, 0.1, 0.25, 1) 来实现。

慢速滑动

慢速滑动是指滑动组件在手指离开屏幕后,缓慢地停止滑动。这可以通过在 transition 属性中设置 cubic-bezier(0.42, 0, 0.58, 1) 来实现。

横向滑动

横向滑动是指滑动组件在水平方向上滑动。这可以通过在 transform 属性中设置 translateX() 来实现。

纵向滑动

纵向滑动是指滑动组件在垂直方向上滑动。这可以通过在 transform 属性中设置 translateY() 来实现。

完整示例

<div class="slider">
  <div class="slider-content">
    <p>第一页</p>
    <p>第二页</p>
    <p>第三页</p>
  </div>
</div>
.slider {
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.slider-content {
  display: flex;
  width: 300%;
  transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.slider-content p {
  width: 100%;
  height: 100%;
}
const slider = document.querySelector('.slider');
const sliderContent = document.querySelector('.slider-content');

let startX = 0;
let currentX = 0;
let pageX = 0;

slider.addEventListener('touchstart', (event) => {
  startX = event.touches[0].pageX;
});

slider.addEventListener('touchmove', (event) => {
  currentX = event.touches[0].pageX;
  pageX = currentX - startX;
  sliderContent.style.transform = `translateX(${pageX}px)`;
});

slider.addEventListener('touchend', (event) => {
  if (pageX > 100) {
    sliderContent.style.transform = `translateX(-100%)`;
  } else if (pageX < -100) {
    sliderContent.style.transform = `translateX(100%)`;
  } else {
    sliderContent.style.transform = `translateX(0)`;
  }
});

结语

CSS 的 transform 属性和 transition 属性相结合,可以实现无滚动条的滑动组件。这种滑动组件具有弹性滑动、快速滑动、慢速滑动、横向滑动和纵向滑动等多种功能。

您可以根据自己的需要,选择不同的滑动方式,并通过 CSS 代码来实现。

我希望这篇文章能帮助您了解 CSS 实现无滚动条滑动组件的方法。如果您有任何问题,请随时留言。