Less自定義函數指南

一、Less自定義函數傳參

在Less中,如果想要自定義函數,就需要掌握如何傳參。Less的函數聲明方式和CSS類似,使用@function關鍵字。以自定義一個對數字進行平方的函數為例:


@function square($number){
  @return $number * $number;
}

在定義函數時,可以設置形參,通過函數傳遞實參。上述代碼中,$number是形參,可以傳遞任何數字類型的實參,返回值為平方值。

在調用函數時,可以以函數名+實參的方式進行調用。例如:


.square {
  width: square(10px); // 返回值為100px;
}

Less函數傳參的形式類似於JavaScript,不同之處在於參數後面需要跟上數據類型。

二、Less寫函數

Less中可以像CSS一樣定義類並使用類。More為類中定義的方法,MoreDemo為使用該方法的例子。


// Less
.more(@a, @b) {
  before: @a + @b;
  after: @a - @b;
}
.moredemo{
  .more(12, 5);
}

// CSS
.moredemo{
  before:17;
  after: 7;
}

與CSS定義類和方法不同,Less定義出的類需要使用@name提供名稱,以便可以在其他部分使用它,否則類型會被丟棄。

三、自定義函數strcomp

我們可以通過Less自定義函數來實現JavaScript中的字符串比較函數strcomp:


@strcomp: {
    compare: (@str: '', @strs: '') => {
        // 去除兩個字符串的空格後進行比較
        @str: replace(~"@{str}", ~"[[:space:]]", '');
        @strs: replace(~"@{strs}", ~"[[:space:]]", '');
        // 判斷兩個字符串相等返回 0,否則返回-1
        @result: if(@str = @strs, 0, -1);
        @return: @result;
    }
};
// 調用函數
@strcomp.compare('Hello, World!', '  Hello,     World!  '); //返回 0

以上實現了一個字符串比較函數,可以與內置函數合併,如下:


.strcomp: {
    compare: (@str: '', @strs: '') => {
        // 去除兩個字符串的空格後進行比較
        @str: replace(~"@{str}", ~"[[:space:]]", '');
        @strs: replace(~"@{strs}", ~"[[:space:]]", '');
        // 判斷兩個字符串相等返回 0,否則返回-1
        @result: if(@str = @strs, 0, -1);
        @return: @result;
    }
};
// 合併到邏輯運算中
@logic: {
    and: (@a,@b) => { @return: if(@a = true, if(@b = true, true, false), false); },
    or: (@a,@b) => { @return: if(@a = true, true, if(@b = true, true, false)); },
    not: (@a) => { @return: if(@a = true, false, true); },
    strcomp: @strcomp.compare
};
// 使用內置函數或自定義函數
@logic.not(false); // true
@logic.strcomp("abc", "abc "); //0

四、Less函數的使用

Less內置了許多有用的函數,可以輕鬆實現多種操作。以下將列舉一些常用函數。

1. unit():獲取數值的單位,用法如下:


@value: 10px;
unit(@value); // 返回 px

2. colors():獲取當前主題顏色,用法如下:


header {
    color: colors(@themeprimary);
}

3. lighten() / darken():調整顏色的亮度,用法如下:


@color: #5599FF;
lighten(@color, 20%); // 返回 #9fc5ff
darken(@color, 20%); // 返回 #3d6dcc

4. percentage():將數值轉換為百分比,用法如下:


@value: 0.8;
percentage(@value); // 返回 80%

5. e():對字符串進行轉義,用法如下:


e("smart'"); // 返回 smart\'

五、Less color函數

Less還內置了許多有用的函數,用於處理顏色。這裡列舉一些常用的顏色函數。

1. spin():調整顏色的色相,用法如下:


@color: #5599FF;
spin(@color, 60); // 返回 #7fff55

2. saturate() / desaturate():調整顏色的飽和度,用法如下:


@color: #5599FF;
saturate(@color, 20%); // 返回 #7fc5ff
desaturate(@color, 20%); // 返回 #3d6ccc

3. mix():混合兩個顏色,用法如下:


@color1: #5599FF;
@color2: #FF9999;
mix(@color1, @color2, 50%); // 返回 #aa77cc

4. lighten() / darken():調整顏色的亮度,用法如下:


@color: #5599FF;
lighten(@color, 20%); // 返回 #9fc5ff
darken(@color, 20%); // 返回 #3d6dcc

六、Less提供的內置函數

Less提供了許多有用的內置函數,以下列舉一些。

1. ceil() / floor():上下取整,用法如下:


@number: 2.3;
ceil(@number); // 返回 3
floor(@number); // 返回 2

2. round():四捨五入,用法如下:


@number: 2.5;
round(@number); // 返回 3

3. min() / max():返回最大/最小值,用法如下:


@value1: 10;
@value2: 20;
min(@value1, @value2); // 返回 10
max(@value1, @value2); // 返回 20

4. abs():返回絕對值,用法如下:


@value: -10;
abs(@value); // 返回 10

七、Less定義函數

使用Less定義函數可以使得代碼更具有可讀性和可重用性。

下面是一個定義比較兩個字符串是否相同的函數的例子:


.eq(@a; @b) when (@a = @b) { 
  @return: true; 
} 
.eq(@a; @b) when (@a != @b) { 
  @return: false; 
} 

// example
.eq(1; 2); // false
.eq(foo; foo); // true

使用該函數,可以在項目中多次調用,重用代碼,使代碼更加簡潔易讀。

結論

Less自定義函數是一項非常強大的功能,它使得我們能夠輕鬆地擴展Less,使其符合我們的需求。在使用Less時,我們應該儘可能地利用Less的函數特性,定義好自己的函數庫,提高代碼的可讀性、可維護性和重用性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/200793.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-06 11:28
下一篇 2024-12-06 11:28

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 運維Python和GO應用實踐指南

    本文將從多個角度詳細闡述運維Python和GO的實際應用,包括監控、管理、自動化、部署、持續集成等方面。 一、監控 運維中的監控是保證系統穩定性的重要手段。Python和GO都有強…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python wordcloud入門指南

    如何在Python中使用wordcloud庫生成文字雲? 一、安裝和導入wordcloud庫 在使用wordcloud前,需要保證庫已經安裝並導入: !pip install wo…

    編程 2025-04-29
  • Python應用程序的全面指南

    Python是一種功能強大而簡單易學的編程語言,適用於多種應用場景。本篇文章將從多個方面介紹Python如何應用於開發應用程序。 一、Web應用程序 目前,基於Python的Web…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29

發表回復

登錄後才能評論