当前位置:首页 > JavaScript

楼层组件js实现

2026-03-01 13:38:52JavaScript

以下是一个楼层组件的 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);
  }
}

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

楼层组件js实现

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

相关文章

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

uniapp组件写法

uniapp组件写法

Uniapp 组件的基本写法 Uniapp 的组件写法与 Vue 类似,支持单文件组件(.vue 文件)。一个基本的组件通常包含三个部分:<template>、<script>…

vue VUE实现日历组件功能

vue VUE实现日历组件功能

Vue 日历组件实现方法 基础日历结构 使用Vue的模板语法构建日历的HTML结构,通常包含头部(年月显示、切换按钮)和日历表格(星期标题和日期格子)。 <template> &l…

vue实现组件跟随

vue实现组件跟随

Vue 实现组件跟随效果 实现组件跟随效果通常需要监听鼠标或触摸事件,动态更新组件位置。以下是几种常见实现方式: 使用鼠标事件绑定 <template> <div class=…

react组件如何通讯

react组件如何通讯

React 组件通讯方式 React 组件间的通讯方式主要包括以下几种方法,适用于不同场景下的数据传递和状态管理需求。 父子组件通讯(Props 传递) 父组件通过 props 向子组件传递数据或回…

如何设计react组件

如何设计react组件

设计 React 组件的核心原则 React 组件的设计需要遵循高内聚、低耦合的原则,确保组件功能独立且易于维护。组件的设计可以分为展示组件和容器组件两类,展示组件负责 UI 渲染,容器组件负责逻辑处…