当前位置:首页 > JavaScript

js实现左侧

2026-02-02 05:56:10JavaScript

实现左侧菜单栏的JavaScript方法

使用JavaScript实现左侧菜单栏通常涉及DOM操作和事件监听。以下是几种常见实现方式:

基础DOM操作实现

通过JavaScript动态创建菜单元素并添加到页面左侧:

const menuItems = ['首页', '产品', '服务', '关于', '联系'];
const menuContainer = document.createElement('div');
menuContainer.className = 'left-menu';

menuItems.forEach(item => {
  const menuItem = document.createElement('div');
  menuItem.className = 'menu-item';
  menuItem.textContent = item;
  menuContainer.appendChild(menuItem);
});

document.body.prepend(menuContainer);

响应式折叠菜单

实现可折叠的左侧菜单,适合移动端和PC端适配:

const menuToggle = document.querySelector('.menu-toggle');
const leftMenu = document.querySelector('.left-menu');

menuToggle.addEventListener('click', () => {
  leftMenu.classList.toggle('collapsed');
  menuToggle.textContent = leftMenu.classList.contains('collapsed') 
    ? '展开菜单' : '折叠菜单';
});

动态高亮当前菜单项

根据页面URL或滚动位置自动高亮当前菜单项:

const menuItems = document.querySelectorAll('.left-menu .menu-item');

window.addEventListener('scroll', () => {
  const fromTop = window.scrollY;

  menuItems.forEach(item => {
    const section = document.querySelector(item.getAttribute('href'));
    if (
      section.offsetTop <= fromTop &&
      section.offsetTop + section.offsetHeight > fromTop
    ) {
      item.classList.add('active');
    } else {
      item.classList.remove('active');
    }
  });
});

使用现代框架实现

以Vue为例实现响应式左侧菜单:

new Vue({
  el: '#app',
  data: {
    menuItems: [
      { name: '首页', icon: 'home', active: true },
      { name: '仪表盘', icon: 'dashboard', active: false },
      { name: '设置', icon: 'settings', active: false }
    ],
    isCollapsed: false
  },
  methods: {
    toggleMenu() {
      this.isCollapsed = !this.isCollapsed;
    },
    setActive(index) {
      this.menuItems.forEach((item, i) => {
        item.active = i === index;
      });
    }
  }
});

性能优化建议

对于大型菜单考虑虚拟滚动技术:

js实现左侧

const menuObserver = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      // 加载可见区域的菜单内容
      entry.target.innerHTML = getMenuContent(entry.target.dataset.section);
    }
  });
});

document.querySelectorAll('.menu-section').forEach(section => {
  menuObserver.observe(section);
});

注意事项

  • 确保菜单在无JavaScript情况下仍可访问(渐进增强)
  • 为菜单项添加适当的ARIA属性以提升可访问性
  • 考虑使用CSS过渡效果提升用户体验
  • 移动端需处理触摸事件支持

以上方法可根据具体需求组合使用,现代前端项目通常结合框架如React、Vue或Angular实现更复杂的菜单交互。

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…