当前位置:首页 > VUE

vue实现状态灯

2026-01-23 16:28:36VUE

Vue 实现状态灯

在 Vue 中实现状态灯可以通过动态绑定样式或类名来实现,以下是几种常见方法:

动态类名绑定

通过计算属性或条件判断动态切换类名,控制状态灯的显示样式:

<template>
  <div class="status-light" :class="statusClass"></div>
</template>

<script>
export default {
  props: {
    status: {
      type: String,
      required: true,
      validator: value => ['success', 'warning', 'error'].includes(value)
    }
  },
  computed: {
    statusClass() {
      return `status-${this.status}`;
    }
  }
};
</script>

<style>
.status-light {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  display: inline-block;
}

.status-success {
  background-color: #4CAF50;
}

.status-warning {
  background-color: #FFC107;
}

.status-error {
  background-color: #F44336;
}
</style>

动态样式绑定

直接通过内联样式动态改变状态灯颜色:

<template>
  <div 
    class="status-light" 
    :style="{ backgroundColor: statusColor }"
  ></div>
</template>

<script>
export default {
  props: {
    status: {
      type: String,
      required: true
    }
  },
  computed: {
    statusColor() {
      const colors = {
        success: '#4CAF50',
        warning: '#FFC107',
        error: '#F44336'
      };
      return colors[this.status] || '#9E9E9E';
    }
  }
};
</script>

带动画的状态灯

添加过渡效果使状态变化更平滑:

<template>
  <div 
    class="status-light" 
    :class="statusClass"
  ></div>
</template>

<style>
.status-light {
  transition: background-color 0.3s ease;
}
</style>

完整组件示例

封装为可复用的状态灯组件:

<template>
  <div 
    class="status-light"
    :class="`status-${status}`"
    :title="statusText"
  ></div>
</template>

<script>
export default {
  name: 'StatusLight',
  props: {
    status: {
      type: String,
      default: 'default',
      validator: value => ['success', 'warning', 'error', 'default'].includes(value)
    }
  },
  computed: {
    statusText() {
      const texts = {
        success: '运行正常',
        warning: '需要注意',
        error: '出现故障',
        default: '未知状态'
      };
      return texts[this.status];
    }
  }
};
</script>

<style>
.status-light {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  display: inline-block;
  margin-right: 5px;
  vertical-align: middle;
}

.status-success {
  background-color: #4CAF50;
  box-shadow: 0 0 5px rgba(76, 175, 80, 0.5);
}

.status-warning {
  background-color: #FFC107;
  box-shadow: 0 0 5px rgba(255, 193, 7, 0.5);
}

.status-error {
  background-color: #F44336;
  box-shadow: 0 0 5px rgba(244, 67, 54, 0.5);
}

.status-default {
  background-color: #9E9E9E;
  box-shadow: 0 0 5px rgba(158, 158, 158, 0.5);
}
</style>

使用方法:

vue实现状态灯

<status-light status="success" />
<status-light status="warning" />
<status-light status="error" />

标签: 状态vue
分享给朋友:

相关文章

简易实现vue

简易实现vue

简易 Vue 实现思路 核心是数据劫持结合发布-订阅模式,通过 Object.defineProperty 或 Proxy 监听数据变化,触发视图更新。 数据劫持实现 class Observer…

vue实现多级表头

vue实现多级表头

Vue 实现多级表头的方法 使用 el-table 组件 Element UI 的 el-table 组件支持多级表头的实现,通过嵌套 el-table-column 即可完成。 <el-ta…

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue实现点击

vue实现点击

实现点击事件的基本方法 在Vue中实现点击事件可以通过v-on指令或@简写方式绑定。以下是常见的点击事件绑定方法: <template> <button v-on:click=…

vue实现网站

vue实现网站

Vue 实现网站的基本步骤 Vue.js 是一个渐进式 JavaScript 框架,适合构建现代化的单页应用(SPA)或动态网站。以下是使用 Vue 实现网站的基本方法。 初始化 Vue 项目 使用…

vue实现展开

vue实现展开

展开功能的实现方法 在Vue中实现展开功能可以通过多种方式完成,常见的有使用v-show、v-if指令,结合CSS过渡动画或第三方组件库。 使用v-show控制显示隐藏 通过v-show指令可以简单…