css 里面写if else 条件判断

发布于:2025-05-25 ⋅ 阅读:(23) ⋅ 点赞:(0)

  • 定义时使用 @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> 


网站公告

今日签到

点亮在社区的每一天
去签到