瀏覽器端Less

来源:http://www.cnblogs.com/androidshouce/archive/2016/07/19/5683417.html
-Advertisement-
Play Games

摘要: 之前項目用過Less,現在負責的項目也要使用,所以就總結下Less,也方便以後查看。本文主要是講瀏覽器端如何使用Less。 簡介: LESS是一種由Alexis Sellier設計的動態層疊樣式表語言。LESS 是開源的,其第一個版本由Ruby寫成,但在後續的版本當中,Ruby逐漸被替換為J ...


摘要:

  之前項目用過Less,現在負責的項目也要使用,所以就總結下Less,也方便以後查看。本文主要是講瀏覽器端如何使用Less。

簡介:

  LESS是一種由Alexis Sellier設計的動態層疊樣式表語言。LESS 是開源的,其第一個版本由Ruby寫成,但在後續的版本當中,Ruby逐漸被替換為JavaScript。受益於JavaScript,LESS可以在客戶端上運行(IE6+、Webkit、Firefox),也可以在服務端運行(Node.js、Rhino)。

      本質上,LESS 包含一套自定義的語法及一個解析器,用戶根據這些語法定義自己的樣式規則,這些規則最終會通過解析器,編譯生成對應的 CSS 文件。LESS 並沒有裁剪 CSS 原有的特性,更不是用來取代 CSS 的,而是在現有 CSS 語法的基礎上,為 CSS 加入程式式語言的特性。你也可以再less文件中寫按照css規則寫樣式。

意義:

    改變傳統樣式的編寫方式,以面向對象的方式編寫,提高開發效率。

引入LESS:  

  首先,引入rel屬性的值是stylesheet/less.less樣式表。如下:

<link rel="stylesheet/less" type="text/css" href="styles.less" />

在渲染HTML頁面時,less文件需要編譯成css文件。我們可以有很多種方法。在伺服器端,如Node.js,我們有專門的less編譯模塊。如果是在客戶端,需要從LESS官網下載less.js文件,然後在HTML頁面中引入,如下:

<script src="less.js" type="text/javascript"></script>

有了less編譯工具,我們就可以渲染頁面了。

  在瀏覽器中使用less.js開發是很好的,但不推薦用於生產環境中。瀏覽器端使用是在使用LESS開發時最直觀的一種方式。如果是在生產環境中,尤其是對性能要求比較高的場合,建議使用node或者其它第三方工具先編譯成CSS再上線使用。

註意:

  • 確保包涵.less樣式表在less.js腳本之前
  • 當你引入多個.less樣式表時,它們都是獨立編譯的。所以,在每個文件中定義的變數、混合、命名空間都不會被其它的文件共用。
  • 必須通過伺服器環境訪問頁面,否則報錯

瀏覽器選項:

  你可以引入<script src="less.js"></script>之前通過創建一個全局less對象的方式來指定參數,例如:

複製代碼
<!-- set options before less.js script -->
    <script>
      less = {
          env: "development",
          logLevel: 2,
          async: false,
          fileAsync: false,
          poll: 1000,
          functions: {},
          dumpLineNumbers: "comments",
          relativeUrls: false,
          globalVars: {
            var1: '"string value"',
            var2: 'regular value'
          },
          rootpath: ":/a.com/"
        };
    </script>
    <script src="less.js"></script>
複製代碼

 

但是這影響所有初始鏈接標記。你也可以在指定的腳本標簽的增加選項,如下:

<script src="less.js" data-env="development"></script>

 

或者,你也可以在鏈接配置參數覆蓋某些選項,如下:

<link data-dump-line-numbers="all" data-global-vars='{ myvar: "#ddffee", mystr: "\"quoted\"" }' rel="stylesheet/less" type="text/css" href="less/styles.less">

註意:

  • 以上三種配置參數的優先順序為:link標簽的>script標簽>全局對象
  • 對象屬性名稱不駝峰
  • link標簽的配置只和時間選項有關,其他不起作用

觀察模式:

  如果使用觀察模式,則配置參數的env為development。然後在Less.js文件載入之後調用less.watch(),如下:

<script>less = { env: 'development'};</script>
<script src="less.js"></script>
<script>less.watch();</script>

 註意:

  如果啟動了觀察模式,則瀏覽器會不斷請求less文件,根據Last-Modified參數判斷是否重新渲染頁面,這會造成很大的性能消耗,所以線上上不要開啟觀察模式。如果是開發環境,這方便了我們觀察效果。你也可以在href後面加上'#!watch'來觸發觀察模式。

 完整demo:

  reset.less是重置瀏覽器預設樣式,config.js是瀏覽器選項的配置參數,如下:

config.js

複製代碼
less = {
    env: "development", // or "production"
    async: false,       // load imports async
    fileAsync: false,   // load imports async when in a page under
    // a file protocol
    poll: 1000,         // when in watch mode, time in ms between polls
    functions: {},      // user functions, keyed by name
    dumpLineNumbers: "all", // "comment" or "mediaQuery" or "all"
    relativeUrls: false,// whether to adjust url's to be relative
    // if false, url's are already relative to the
    // entry less file
    rootpath: ":/"// a path to add on to the start of every url
    //resource
};
複製代碼

 

 

index.html

複製代碼
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <link rel="stylesheet/less" type="text/css" href="./less/reset.less" />
    <link rel="stylesheet/less" type="text/css" href="./less/styles.less" />
    <script src="./js/config.js"></script>
    <script src="./js/less-1.3.3.min.js"></script>
    <script>less.watch();</script>
</head>
<body>

</body>
</html>
複製代碼

 

 

參數詳解:

async

Type: Boolean
Default: false
是否非同步載入重要文件
dumpLineNumbers

Type: String
Options: ''| 'comments'|'mediaquery'|'all'
Default: ''
如果設置了,這增加了源代碼行信息輸出的CSS文件。這有助於您調試,分析其中一個特定的規則是從哪裡來的。
comments 選項用於輸出user-understandable內容,
mediaquery 選項用於使用火狐插件解析css文件信息.
env

Type: String
Options: development or production
Default: depends on page URL
運行環境,如果是production,你的css文件將被緩存到本地並且信息不會輸出到控制台。如果url以file://開頭或者在你本地或者沒有標準的埠,這都將被認為是development模式。
例如:
less = { env: 'production' };
errorReporting

Type: String
Options: html|console|function
Default: html
設置編譯失敗時錯誤報告的方法。
fileAsync

Type: Boolean
Default: false
當以file協議訪問頁面,是否非同步引入文件
functions

Type: object
用戶自定義函數
e.g.
less = {
functions: {
myfunc: function() {
return new(less.tree.Dimension)(1);
}
}
};
可以像Less函數一樣使用它。
.my-class {
border-width: unit(myfunc(), px);
}
logLevel

Type: Number
Default: 2
在控制台輸出日誌的數量。如果是production環境,將不會輸出任何信息。
2 - Information and errors1 - Errors0 - Nothing
poll

Type: Integer
Default: 1000
在觀察模式下,測試的時間。
relativeUrls

Type: Boolean
Default: false
使用相對路勁。如果設置FALSE,則url是相對根目錄文件。
globalVars

Type: Object
Default: undefined
全局變數列表註入代碼。“字元串”類型的變數必須顯式地包含引號。
less.globalVars = { myvar: "#ddffee", mystr: "\"quoted\"" };
這個選項定義了一個可以被文件引用的變數。這個變數也可以在文件中重新定義。
modifyVars

Type: Object
Default: undefined
Same format as globalVars.
與 globalVars參數含義相反,它將會在你文件最後定義,這意味著它將重寫你在文件定義的。
rootpath

Type: String
Default: false
設置根目錄,所有的Less文件都會以這個目錄開始。
useFileCache

Type: Boolean
Default: true (previously false in before v2)
是否要使用每個會話文件緩存。緩存文件可以使用modifyVars,並且它不會再次檢索所有文件。如果您使用觀察模式或調用刷新載入設置為true,那麼運行之前緩存將被清除。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 新建一個線程並啟動,開銷會很大,因為運行線程需要的資源比調用對象方法需要的資源多得多。在很多情況下,線程被用於執行一類任務,而這類任務數量很多,發生的時間分佈不均,如果為每個新任務都啟用一個新線程來執行,則開銷會太大,可以採用一種性能優化技術,就是使用線程池。 將若幹執行任務的線程放在池中,當有任務 ...
  • css是網頁的外衣,好不好看全憑css樣式,而佈局是css中比較重要的部分,下麵來分析一下常見的幾種佈局。 流動模型 流動模型是網頁佈局的預設模式,也是最常見的佈局模式,他有兩個特點: 1.塊狀元素都在所處包含元素內自上而下按順序垂直延伸分佈。常見的塊狀元素有:div,p,ul,ol,h1~h6,a ...
  • 方法:直接判斷瀏覽器是否支持某個CSS屬性才是王道,document.documentElement.style 如:判斷是否支持 transform if( 'MozTransform' in document.documentElement.style || 'WebkitTransform' ...
  • 作者:白狼 出處:http://www.manks.top/javascript-dynamic-event.html 本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 其所謂的動態添加事件實質就是指js中的事件委托。 我們知道 ...
  • 線上實例 實例演示 使用方法 複製 複製 下載 ...
  • 本文標題的這副圖片,是用Phosotshop製作的。但是,在搜索引擎中你卻無法搜索到它,搜索引擎還沒有強大到能夠識別圖片裡面的文字。並且由於圖片的體積不算太小,可能網速慢的網友在瀏覽的時候不得不耐心的等待圖片的刷新。那麼,有沒有一種新的方法可以避免這些缺點呢? 有的,HTML5和CSS3就可以滿足你 ...
  • 別人的代碼,拿過來調,發現修改功能都不能用,修改時通過ajax發json獲取數據的,看chrome開發者工具發現有發送數據,也有返回值; 發起請求並獲取數據,發現回調函數不執行! php返回數據代碼: 返回的數據在瀏覽器里看上去也很正常: {"data":{"id":"1","name":"admi ...
  • 我們先來看一道題目 1 2 3 4 var write = document.write; write("hello"); //1.以上代碼有什麼問題 //2.正確操作是怎樣的 1 2 3 4 var write = document.write; write("hello"); //1.以上代碼有 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...