Less 簡易說明 ~"" 使用範例 - daniel-qa/Vue GitHub Wiki

Less 簡易說明 + ~"" 使用範例

1️⃣ Less 基本概念

Less 是 CSS 預處理器,可以用變數、巢狀、運算、Mixin、函數。

編譯後會生成標準 CSS,瀏覽器只認 CSS,不直接認 Less。

適用於 純 CSS 專案 或 Vue 2 / Vue 3 專案。

2️⃣ 常用功能

// 變數
@primaryColor: #42b983;

// 巢狀
.box {
  color: @primaryColor;
  .title {
    font-size: 16px;
  }
}

// 運算
@width: 200px;
@halfWidth: @width / 2;

.box {
  width: @halfWidth; // 100px
}

// Mixin
.rounded(@radius: 5px) {
  border-radius: @radius;
}

.box {
  .rounded(10px);
}

3️⃣ ~"" 使用情境

目的:阻止 Less 在 calc() 或運算符號(+、-、*、/)中提前計算,保持原樣輸出給 CSS。

常見情境:% - px、50% * 2、calc() 裡的各種公式。

// ❌ 直接寫,Less 可能報錯
.box1 {
  height: calc(100% - 45px);
}

// ✅ 正確寫法,阻止 Less 計算
.box2 {
  height: ~"calc(100% - 45px)";
}

// ✅ CSS 變數搭配 Less 變數
@offset: 45px;
.box3 {
  height: ~"calc(100% - @{offset})";
}

編譯後 CSS:

.box2 {
  height: calc(100% - 45px);
}
.box3 {
  height: calc(100% - 45px);
}

💡 小結

Less 變數:編譯期,固定值,不動態。

~"":防止 Less 搶先計算,常用於 calc() 或不同單位運算。

Vue 動態值:用 CSS 變數 + style binding 可以做到運行期動態修改。