当前位置:首页 > JavaScript

楼层组件js实现

2026-03-01 13:38:52JavaScript

楼层组件js实现

楼层组件js实现

以下是一个楼层组件的 JavaScript 实现示例,包含核心功能和代码结构:

基础实现

class FloorComponent {
  constructor(containerId, floors) {
    this.container = document.getElementById(containerId);
    this.floors = floors;
    this.currentFloor = 0;
    this.render();
  }

  render() {
    this.container.innerHTML = '';
    const floorList = document.createElement('div');
    floorList.className = 'floor-list';

    this.floors.forEach((floor, index) => {
      const floorItem = document.createElement('div');
      floorItem.className = `floor-item ${index === this.currentFloor ? 'active' : ''}`;
      floorItem.textContent = `Floor ${floor}`;
      floorItem.addEventListener('click', () => this.selectFloor(index));
      floorList.appendChild(floorItem);
    });

    this.container.appendChild(floorList);
  }

  selectFloor(index) {
    this.currentFloor = index;
    this.render();
    this.onFloorSelect(index);
  }

  onFloorSelect(index) {
    console.log(`Selected floor: ${this.floors[index]}`);
  }
}

使用示例

// 初始化楼层组件
const floors = ['B1', '1F', '2F', '3F', '4F'];
const floorComponent = new FloorComponent('floor-container', floors);

// 自定义选择回调
floorComponent.onFloorSelect = (index) => {
  alert(`You selected ${floors[index]} floor`);
};

样式建议

.floor-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.floor-item {
  padding: 12px;
  background: #f0f0f0;
  border-radius: 4px;
  cursor: pointer;
}

.floor-item.active {
  background: #2196F3;
  color: white;
}

扩展功能

// 添加楼层
FloorComponent.prototype.addFloor = function(floorName) {
  this.floors.push(floorName);
  this.render();
};

// 移除楼层
FloorComponent.prototype.removeFloor = function(index) {
  this.floors.splice(index, 1);
  if (this.currentFloor >= this.floors.length) {
    this.currentFloor = Math.max(0, this.floors.length - 1);
  }
  this.render();
};

动画效果实现

selectFloor(index) {
  // 添加过渡动画
  const prevActive = this.container.querySelector('.active');
  if (prevActive) {
    prevActive.classList.add('fade-out');
    setTimeout(() => {
      prevActive.classList.remove('fade-out');
      this.currentFloor = index;
      this.render();
      this.onFloorSelect(index);
    }, 300);
  } else {
    this.currentFloor = index;
    this.render();
    this.onFloorSelect(index);
  }
}

该实现包含基础楼层选择功能、样式控制、扩展方法和动画效果,可根据实际需求进行调整和扩展。

标签: 楼层组件
分享给朋友:

相关文章

vue实现多级组件

vue实现多级组件

实现多级组件的基本结构 在Vue中实现多级组件通常涉及父子组件嵌套,通过props向下传递数据,通过$emit向上传递事件。多级组件的核心是递归或动态组件渲染。 <!-- 父组件 Parent…

vue table组件实现

vue table组件实现

Vue 表格组件实现方案 基础表格实现 使用<table>标签结合v-for指令渲染数据是最简单的实现方式: <template> <table> &…

vue实现父子组件

vue实现父子组件

Vue 父子组件通信实现方式 1. 父组件向子组件传递数据(Props) 父组件通过 props 向子组件传递数据,子组件通过 props 接收数据。 父组件模板: <template>…

vue实现路由组件

vue实现路由组件

Vue 实现路由组件的方法 在 Vue 中实现路由功能通常需要结合 Vue Router 库,以下是具体实现步骤: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router…

vue实现搜索组件

vue实现搜索组件

Vue 实现搜索组件的方法 基础搜索组件实现 创建基础搜索组件需要包含输入框和搜索按钮。在Vue中可以使用v-model绑定输入值,通过@click或@keyup.enter触发搜索。 <te…

vue组件怎么实现

vue组件怎么实现

Vue 组件的实现方法 Vue 组件是 Vue.js 的核心特性之一,用于封装可复用的代码。组件的实现方式包括全局注册和局部注册,同时支持单文件组件(SFC)和模板语法。 全局注册组件 通过 Vue…