css 里面写if else 条件判断

  • 定义时使用 @mixin name(params) 声明

  • 调用时通过 @include name(args) 引入样式

  • mixins.scss文件中:

    复制代码
    @import './variables.scss';
    
    // 弹性布局
    @mixin flex($direction: row, $justify: flex-start, $align: stretch, $wrap: nowrap) {
      display: flex;
      flex-direction: $direction;
      justify-content: $justify;
      align-items: $align;
      flex-wrap: $wrap;
    }
    
    // 居中对齐
    @mixin flex-center {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    
    // 两端对齐
    @mixin flex-between {
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
    
    // 文本截断
    @mixin text-truncate {
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    
    // 多行文本截断
    @mixin text-truncate-multiline($lines: 2) {
      overflow: hidden;
      text-overflow: ellipsis;
      display: -webkit-box;
      -webkit-line-clamp: $lines;
      -webkit-box-orient: vertical;
    }
    
    // 响应式布局
    @mixin responsive($breakpoint) {
      @if $breakpoint == sm {
        @media (min-width: $breakpoint-sm) { @content; }
      } @else if $breakpoint == md {
        @media (min-width: $breakpoint-md) { @content; }
      } @else if $breakpoint == lg {
        @media (min-width: $breakpoint-lg) { @content; }
      } @else if $breakpoint == xl {
        @media (min-width: $breakpoint-xl) { @content; }
      }
    }
    
    // 状态颜色
    @mixin status-color($status) {
      @if $status == 'normal' or $status == '正常' {
        background-color: $color-success;
        color: $color-white;
      } @else if $status == 'warning' or $status == '警告' {
        background-color: $color-warning;
        color: $color-dark;
      } @else if $status == 'error' or $status == '异常' {
        background-color: $color-danger;
        color: $color-white;
      } @else {
        background-color: $color-secondary;
        color: $color-white;
      }
    } 

    引用的vue文件:

    复制代码
    <template>
      <div class="switch-node">
        <!-- 交换机图标和名称 -->
        <div class="d-flex align-items-center mb-2">
          <div class="switch-node__icon">
            <svg class="switch-node__icon-svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
              <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4" />
            </svg>
          </div>
          <div class="switch-node__content">
            <p class="switch-node__title" :title="nodeData.label">
              {{ nodeData.label }}
            </p>
            <p class="switch-node__subtitle">
              {{ nodeData.district }}
            </p>
          </div>
        </div>
        
        <!-- 状态指示器 -->
        <div class="switch-node__footer">
          <span>状态:</span>
          <span class="switch-node__status" :class="statusClass">
            <span class="switch-node__status-indicator"></span>
            {{ nodeData.status }}
          </span>
        </div>
        
        <!-- 设备计数指示器 -->
        <div class="switch-node__devices">
          设备: {{ nodeData.devices ? nodeData.devices.length : 0 }}
        </div>
      </div>
    </template>
    
    <script>
    export default {
      name: 'SwitchNode',
      props: {
        nodeData: {
          type: Object,
          required: true
        }
      },
      computed: {
        statusClass() {
          switch(this.nodeData.status) {
            case '正常': return 'status-normal';
            case '警告': return 'status-warning';
            case '异常': return 'status-error';
            default: return '';
          }
        }
      }
    }
    </script>
    
    <style lang="scss" scoped>
    @import '@/assets/styles/variables.scss';
    @import '@/assets/styles/mixins.scss';
    
    .status-normal {
      @include status-color('正常');
    }
    
    .status-warning {
      @include status-color('警告');
    }
    
    .status-error {
      @include status-color('异常');
    }
    </style> 
相关推荐
无羡仙4 分钟前
AI终于‘看见’网页了!Stagewise让UI修改从‘盲调’变‘指哪打哪
前端
柯腾啊1 小时前
“Script error.”的产生原因和解决办法
前端·javascript·浏览器
沙漠之皇1 小时前
ts 定义重复对象字段
前端
HashTang2 小时前
不用再配服务器了!这套 Next.js + Cloudflare 模板,一个人搞定全栈出海
前端·后端·边缘计算
前端架构师-老李2 小时前
16 Electron 应用自动更新方案:electron-updater 完整指南
前端·javascript·electron
一只学java的小汉堡2 小时前
HTML 01入门:从概念到开发环境搭建与页面头部配置
前端·css·html
用户21496515898753 小时前
从零搭建uniapp环境-记录
前端
努力写代码的熊大4 小时前
stack、queue与priority_queue的用法解析与模拟实现
java·前端·javascript
im_AMBER4 小时前
React 06
前端·javascript·笔记·学习·react.js·前端框架
wyzqhhhh5 小时前
前端常见的设计模式
前端·设计模式