返回

让你的小程序导航滚动更出色:固定第一个标签并添加阴影效果

前端

滚动的导航效果很常见,这次给导航多加了点花样,固定第一个元素,其他的正常横向滚动,固定元素的右侧会有一个随滚动出现的阴影。下面,我将分步介绍如何实现这一效果。

  1. HTML 结构

    首先,我们需要创建一个基本的 HTML 结构来容纳我们的导航栏。

<div class="navbar">
  <div class="navbar-fixed">
    <div class="navbar-item">固定</div>
  </div>
  <div class="navbar-scroll">
    <div class="navbar-item">1</div>
    <div class="navbar-item">2</div>
    <div class="navbar-item">3</div>
  </div>
</div>
  • .navbar 类是导航栏的父容器。
  • .navbar-fixed 类是固定元素的容器。
  • .navbar-scroll 类是滚动元素的容器。
  • .navbar-item 类是导航栏中的每个项目。
  1. CSS 样式

    接下来,我们需要为我们的导航栏添加一些 CSS 样式。

.navbar {
  display: flex;
  align-items: center;
  height: 50px;
  background-color: #333;
  color: #fff;
}

.navbar-fixed {
  position: fixed;
  left: 0;
  top: 0;
  width: 100px;
  height: 50px;
  background-color: #444;
}

.navbar-scroll {
  position: relative;
  left: 100px;
  height: 50px;
  overflow-x: scroll;
  -webkit-overflow-scrolling: touch;
}

.navbar-item {
  display: inline-block;
  padding: 10px;
}

.navbar-item:not(:first-child) {
  margin-left: 10px;
}

.navbar-shadow {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: 10px;
  background-color: rgba(0, 0, 0, 0.5);
  opacity: 0;
}

.navbar-scroll:hover .navbar-shadow {
  opacity: 1;
}
  • .navbar 类定义了导航栏的整体样式。
  • .navbar-fixed 类定义了固定元素的样式。
  • .navbar-scroll 类定义了滚动元素的样式。
  • .navbar-item 类定义了导航栏中每个项目的样式。
  • .navbar-shadow 类定义了阴影的样式。
  1. JavaScript

    最后,我们需要添加一些 JavaScript 代码来实现滚动效果。

const navbarScroll = document.querySelector('.navbar-scroll');
const navbarShadow = document.querySelector('.navbar-shadow');

navbarScroll.addEventListener('scroll', function() {
  const scrollLeft = navbarScroll.scrollLeft;
  const scrollWidth = navbarScroll.scrollWidth;
  const clientWidth = navbarScroll.clientWidth;

  if (scrollLeft > 0) {
    navbarShadow.style.opacity = 1;
  } else {
    navbarShadow.style.opacity = 0;
  }
});
  • 我们首先获取了导航栏滚动元素和阴影元素的引用。
  • 然后,我们为导航栏滚动元素添加了一个滚动事件监听器。
  • 在事件处理程序中,我们获取了导航栏滚动元素的当前滚动位置、滚动宽度和客户端宽度。
  • 如果当前滚动位置大于 0,则显示阴影元素;否则,隐藏阴影元素。

这就是实现滚动的导航栏,同时固定第一个标签,并在滚动时在其右侧显示阴影的步骤。