Sass和Less的區別?

来源:https://www.cnblogs.com/bigbighu/archive/2019/07/02/11117824.html
-Advertisement-
Play Games

這篇文章主要解答以下幾個問題,供前端開發者的新手參考。 1、什麼是Sass和Less? 2、為什麼要使用CSS預處理器? 3、Sass和Less的比較 4、為什麼選擇使用Sass而不是Less? 什麼是Sass和Less? Sass和Less都屬於CSS預處理器,那什麼是 CSS 預處理器呢? CS ...


 

這篇文章主要解答以下幾個問題,供前端開發者的新手參考。

1、什麼是Sass和Less?

2、為什麼要使用CSS預處理器?

3、Sass和Less的比較

4、為什麼選擇使用Sass而不是Less?

 


 

什麼是Sass和Less?

      Sass和Less都屬於CSS預處理器,那什麼是 CSS 預處理器呢?

       CSS 預處理器定義了一種新的語言,其基本思想是,用一種專門的編程語言,為 CSS 增加了一些編程的特性,將 CSS 作為目標生成文件,然後開發者就只要使用這種語言進行CSS的編碼工作。

       轉化成通俗易懂的話來說就是“用一種專門的編程語言,進行 Web 頁面樣式設計,再通過編譯器轉化為正常的 CSS 文件,以供項目使用”。

 


 

 為什麼要使用CSS預處理器? 

     作為前端開發人員,大家都知道,Js中可以自定義變數,而CSS僅僅是一個標記語言,不是編程語言,因此不可以自定義變數,不可以引用等等。

       CSS有具體以下幾個缺點:

  • 語法不夠強大,比如無法嵌套書寫,導致模塊化開發中需要書寫很多重覆的選擇器;
  • 沒有變數和合理的樣式復用機制,使得邏輯上相關的屬性值必須以字面量的形式重覆輸出,導致難以維護。

       這就導致了我們在工作中無端增加了許多工作量。而使用CSS預處理器,提供 CSS 缺失的樣式層復用機制、減少冗餘代碼,提高樣式代碼的可維護性。大大提高了我們的開發效率。

       但是,CSS預處理器也不是萬金油,CSS的好處在於簡便、隨時隨地被使用和調試。預編譯CSS步驟的加入,讓我們開發工作流中多了一個環節,調試也變得更麻煩了。更大的問題在於,預編譯很容易造成後代選擇器的濫用。

       所以我們在實際項目中衡量預編譯方案時,還是得想想,比起帶來的額外維護開銷,CSS預處理器有沒有解決更大的麻煩。

 


  

Sass和Less的比較

不同之處

1、Less環境較Sass簡單 Cass的安裝需要安裝Ruby環境,Less基於JavaScript,是需要引入Less.js來處理代碼輸出css到瀏覽器,也可以在開發環節使用Less,然後編譯成css文件,直接放在項目中,有less.app、SimpleLess、CodeKit.app這樣的工具,也有線上編輯地址。
2、Less使用較Sass簡單 LESS 並沒有裁剪 CSS 原有的特性,而是在現有 CSS 語法的基礎上,為 CSS 加入程式式語言的特性。只要你瞭解 CSS 基礎就可以很容易上手。
3、從功能出發,Sass較Less略強大一些

①sass有變數和作用域。
- $variable,like php;
- #{$variable}like ruby;
- 變數有全局和局部之分,並且有優先順序。


②sass有函數的概念;
- @function和@return以及函數參數(還有不定參)可以讓你像js開發那樣封裝你想要的邏輯。
-@mixin類似function但缺少像function的編程邏輯,更多的是提高css代碼段的復用性和模塊化,這個用的人也是最多的。
-ruby提供了非常豐富的內置原生api。

③進程式控制制:
-條件:@if @else;
-迴圈遍歷:@for @each @while
-繼承:@extend
-引用:@import

④數據結構:
-$list類型=數組;
-$map類型=object;
其餘的也有string、number、function等類型

4、Less與Sass處理機制不一樣 前者是通過客戶端處理的,後者是通過服務端處理,相比較之下前者解析會比後者慢一點   5、關於變數在Less和Sass中的唯一區別就是Less用@,Sass用$。     相同之處

Less和Sass在語法上有些共性,比如下麵這些:

1、混入(Mixins)——class中的class;
2、參數混入——可以傳遞參數的class,就像函數一樣;
3、嵌套規則——Class中嵌套class,從而減少重覆的代碼;
4、運算——CSS中用上數學;
5、顏色功能——可以編輯顏色;
6、名字空間(namespace)——分組樣式,從而可以被調用;
7、作用域——局部修改樣式;
8、JavaScript 賦值——在CSS中使用JavaScript表達式賦值。

 


 

 為什麼選擇使用Sass而不是Less?   1、Sass在市面上有一些成熟的框架,比如說Compass,而且有很多框架也在使用Sass,比如說Foundation。 2、就國外討論的熱度來說,Sass絕對優於LESS。
3、就學習教程來說,Sass的教程要優於LESS。在國內LESS集中的教程是LESS中文官網,而Sass的中文教程,慢慢在國內也較為普遍。 4、Sass也是成熟的CSS預處理器之一,而且有一個穩定,強大的團隊在維護。 5、同時還有Scss對sass語法進行了改良,Sass 3就變成了Scss(sassy css)。與原來的語法相容,只是用{}取代了原來的縮進。 6、bootstrap(Web框架)最新推出的版本4,使用的就是Sass。  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 結果: ...
  • --創建簡單視圖--建立用於查詢員工號、姓名、工資的視圖。create view emp_viewasselect empno,ename,sal from emp; --查詢視圖select * from emp_view; --創建視圖時指定視圖的列的別名create view emp_view ...
  • 鏈接:https://pan.baidu.com/s/1fhfMtmwM_hOAGgYOfNYlkw提取碼:r53a 學習pl/sql的同學,可以看看這本書,講解的很詳細,從入門到精通,大家有什麼不懂得地方也可以互相交流 。。 裡面講解的都有操作截圖,案例,以及源碼 第1章 瞭解Oracle 1.1 ...
  • 一下是安裝ogg過程中遇到的問題和解決辦法,絕對良心乾貨,抽空會寫更詳細的安裝教程。更多精彩內容請 "點擊" OGG 00685 begin time prior to oldest log in log history https://blog.csdn.net/kiwi_kid/article/ ...
  • 數據過濾 SQL的數據過濾, 可以減少不必要的數據行, 從而可以達到提升查詢效率的效果. 比較運算符 在SQL中, 使用WHERE子句對條件進行篩選, 篩選的時候比較運算符是很重要. 上面的比較運算符, 並不是說每個DBMS都支持, 這裡主要說MySQL, 不支持(! )和(! 6000; // 查 ...
  • #1Demo: 1.創建表 2.創建存儲過程 3.創建每分鐘執行一次的定時器 4.查看job狀態表 #2Oracle定時器擴展 1. 2.定時參數 1)每分鐘執行 Interval => TRUNC(sysdate,’mi’) + 1 / (24*60) 2) 每天定時執行 例如:每天的凌晨2點執行 ...
  • 1. DDL原子性概述 8.0之前並沒有統一的數據字典dd,server層和引擎層各有一套元數據,sever層的元數據包括(.frm,.opt,.par,.trg等),用於存儲表定義,分區表定義,觸發器定義等信息;innodb層也有自己一套元數據,包括表信息,索引信息等,這兩套元數據並沒有機制保證一 ...
  • 判斷指定年份是否為閏年,Insus.NET也曾經寫過2篇《判斷是否是閏年》https://www.cnblogs.com/insus/p/10865051.html 和 《指定日期,判斷其所屬年份是否為閏年》https://www.cnblogs.com/insus/p/10841868.html ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...