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

css 里面写if else 条件判断
wwf12252025-05-25 13:46
相关推荐
子兮曰4 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器sm_926787057 小时前
RFID 标签打印的技术实现要点与二次开发实践IMPYLH8 小时前
HTML 的 <video> 元素溪语流沙8 小时前
【每天一个CSS | Day19】流光文字与一笔写成的手写签名逐光者9338 小时前
STM32——SPI 屏 · Flash · 高速To_OC8 小时前
同样是让 AI 写全栈,为什么别人一句话就够了CDwenhuohuo9 小时前
electron pc项目打包成桌面端前端大斗师9 小时前
「大于 1000」把 1000 元那单也算进去了:我在 Vue3 订单页对了 10 句话Jmyd01239 小时前
用 Web VR 引擎搭建 3D 虚拟展厅:从素材上云到多端实时渲染的完整数据链路刘天远10 小时前
Agent成本核算实现:事件表、状态分布与Python归集