表析LESS、Sass和Stylus的异同_html/css_WEB-ITnose
前言:CSS预处理语言
CSS预处理语言可为CSS增加更多编程特性,以CSS作为目标生成文件。
这些语言可有效提高编程效率,使CSS更加简洁、适应性更强、可读性更加,并使项目更易于维护。
本文将在开发者角度使用表格横向对比的方式客观分析目前主流的CSS预处理语言LESS、Sass、Stylus的异同之处。
不介绍这些语言的安装、编译等内容。默认读者已熟悉CSS并可能已用过以上至少一种CSS预处理语言。
鉴于目前Sass语言有分别以“.sass”和“.scss”为文件名后缀的两套语法规则,本文只介绍Sass3之后的版本,即以Scss表示。
基本差别
*.less | *.scss | *.styl |
均可以通过各自方式在本地编译成*.css文件 有很多第三方编译工具可以将这些格式的文件编译为*.css文件 | ||
可以在HTML文件中引入less.js文件与像引入*.css文件一样的方式引入*.less文件,通过浏览器进行编译(可能损耗一点点性能)。 | 需要先安装Ruby |
基本语法
/*均支持CSS风格语法*/h1{ color:#000;} 로그인 후 복사 | ||
不支持 | /*支持不包含花括号与分号的编写风格,仅通过缩进表示嵌套*/h1 color: #000 로그인 후 복사 | |
不支持 | /*支持省略冒号*/h1 color #000 로그인 후 복사 |
变量与作用域
/*以“@”开头*/@maxWidth:1024px; 로그인 후 복사 | /*以“$”开头*/$maxWidth:1024px; 로그인 후 복사 | /*可以以“$”开头,也可无前缀符号直接声明变量*/maxWidth=1024px; 로그인 후 복사 |
定义变量时,以冒号“:”分隔变量名与变量值 | 以“=”分隔变量名与变量值 | |
与其它语言作用域概念雷同,向上冒泡查找变量 | 无全局变量的概念,后定义的同名变量会完全覆盖先定义的变量 | 同LESS |
混合(Mixins)
Mixins是CSS预处理器中语言中最强大的特性。
Mixins可以将一部分需重用的样式抽出,只需定义一次,就可被很多选择器重复使用。
可以无需特别声明,直接调用某一class或id选择器名即可重用该选择器内属性 | 定义混合需要以“@mixin”开头。引用混合需要以“@include” 开头 | 无需前缀 |
均可定义参数与设置参数默认值 | ||
/*声明混合*/.setColor(@mainC:#000){ color:@mainC;}/*直接以默认值调用混合*/.sBox{ .setColor();}/*调用混合且传入自定义参数值*/.bBox{ .setColor(#fff);} 로그인 후 복사 | /*声明混合*/@mixin setColor($mainC:#000){ color:$mainC;}/*直接以默认值调用混合*/.sBox{ @include setColor();}/*调用混合且传入自定义参数值*/.bBox{ @include setColor(#fff);} 로그인 후 복사 | /*声明混合*/setColor(mainC=#000){ color:mainC;}/*直接以默认值调用混合*/.sBox{ setColor();}/*调用混合且传入自定义参数值*/.bBox{ setColor(#fff);} 로그인 후 복사 |
/*编译成CSS后*/.sBox{ color:#000;}.box{ color:#fff;} 로그인 후 복사 |
嵌套实现后代选择器
嵌套语法是相同的,可以通过大括号“{}”之间的层次关系实现嵌套。也可以使用“&”符号来引用父选择器。 | ||
div{ margin:10px 5px; a{ color:red; &:hover{ color:blue; } }} 로그인 후 복사 | ||
div{ margin:10px 5px;}div a{ color:red;}div a:hover{ color:blue;} 로그인 후 복사 |
继承
无需明确的前缀 | 使用“@extend”开始,后面紧跟被继承的选择器 | |
/*继承示例*/.block{ display:block; margin:10px;}p{ .block; padding:5px;} 로그인 후 복사 | /*继承示例*/.block{ display:block; margin:10px;}p{ @extend .block; padding:5px;} 로그인 후 복사 | |
/*编译成CSS,相同样式依旧会在每个选择器中重复出现*/.block{ display:block; margin:10px;}p{ display:block; margin:10px; padding:5px;} 로그인 후 복사 | /*编译成CSS,相同样式会被合并*/.block,p{ display:block; margin:10px;}p{ padding:5px;} 로그인 후 복사 |
条件语句
使用关键字“when”实现条件语句 | 可以使用@if、@else、@else if语句实现判断 | 与其它编程语言类似,不过可以省略大括号 |
@type: link;.mixin(@type) when ( @type == link ){ color:blue;} .mixin(@type) when not ( @type == link ){ color:black;} 로그인 후 복사 | $type: link;p { @if $type == link { color: blue; } @else { color: black; }} 로그인 후 복사 | type: link;p{ if type==linkcolor:blue; else color:black;} 로그인 후 복사 |
/*编译后的CSS*/p {color:blue;} 로그인 후 복사 |
循环语句
通过when模拟循环功能 | 使用@for关键字,配合“from”和“through” | 使用for/in对表达式进行循环 |
.funClass (@i) when (@i>0){ .item-@{i}{ width:2em*@i;}/*递归*/.funClass(@i-1);}/*停止循环*/.funClass (0) {}/*输出*/.funClass (3); 로그인 후 복사 | @for &i from 1 through 3{ .item-#{$i} { width:2em*$i; }} 로그인 후 복사 | for i in 1 2 3 .item-{i} width 2em*i 로그인 후 복사 |
/*编译后的CSS*/.item-1{ width:2em;}.item-2{ width:4em;}.item-3{ width:6em;} 로그인 후 복사 | ||
还支持each循环语句、while循环语句 |
综合对比
- 均具有“变量”、“混合”、“嵌套”、“继承”、“颜色混合”五大基本特性;
- Scss和LESS语法较为严谨,LESS要求一定要使用大括号“{}”,Scss和Stylus可以通过缩进表示层次与嵌套关系;
- Scss无全局变量的概念,LESS和Stylus有类似于其它语言的作用域概念;
- Scss和Stylus就具有类似其它语言的条件语句、循环语句等,而LESS需要通过When等关键词模拟这些功能;
- Sass是基于Ruby语言的,而LESS和Stylus可以基于NodeJS NPM下载相应库后进行编译;
- 使用LESS时,还可以在引用它的HTML文件中引入从官网下载的“less.js”文件,就可以通过浏览器进行解析。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









C 언어와 Python은 일반적으로 사용되는 두 가지 프로그래밍 언어이며 여러 측면에서 명백한 유사점과 차이점을 가지고 있습니다. 이 기사에서는 구문, 성능, 사용 용이성 등의 측면에서 C 언어와 Python을 자세히 비교하고 이들 간의 차이점을 보여주는 구체적인 코드 예제를 제공합니다. 구문의 유사점과 차이점: C 언어는 프로세스 지향 프로그래밍 언어입니다. 구문은 상대적으로 엄격하고 번거롭기 때문에 개발자가 메모리와 데이터 유형을 스스로 관리해야 합니다. Python은 간결하고 읽기 쉬운 구문을 갖춘 고급 언어이므로 변수 유형을 명시적으로 선언할 필요가 없습니다. 샘플 코드

SASS의 전체 이름은 "서비스로서의 소프트웨어"를 의미하는 "서비스로서의 소프트웨어"입니다. 이는 타사 공급업체가 클라우드 인프라에 애플리케이션을 구축하고 이를 인터넷을 통해 고객에게 다음과 같은 형식으로 제공하는 소프트웨어 배포 모델입니다. 고객이 기본 인프라를 미리 구축할 필요가 없는 애플리케이션입니다. 즉, 로컬 컴퓨터에만 설치할 수 있는 기존 소프트웨어와 달리 인터넷 연결과 웹 브라우저가 있는 모든 장치에서 소프트웨어에 액세스할 수 있습니다.

Golang과 Go의 유사점과 차이점: 오픈 소스 프로그래밍 언어인 Go는 2007년 Google에서 개발되었으며 효율적이고 안정적이며 간결한 소프트웨어를 구축하는 데 널리 사용됩니다. Go 언어는 C 언어를 기반으로 하는 프로그래밍 언어이지만 구문이 더 간단하고 동시성 지원이 더 강력합니다. 그러나 Go 언어에는 Golang이라는 별칭도 있어서 많은 사람들이 두 언어를 서로 다른 언어로 생각하게 됩니다. 그렇다면 Golang과 Go는 동일한가요?

C++와 C는 여러 면에서 유사하지만 많은 중요한 차이점을 지닌 두 가지 인기 있는 프로그래밍 언어입니다. 이 기사에서는 C++와 C 언어의 유사점과 차이점을 살펴보고 특정 코드 예제를 통해 차이점을 설명합니다. 1. 기본 구문 및 구조적 차이점 1.1 데이터 유형 정의 C 언어에서는 변수를 정의할 때 먼저 데이터 유형을 선언해야 합니다. 예: C++에서는 intnum 변수를 정의하는 동안 초기화할 수 있습니다. 예: intnum= 1.2 기능 정의

Vue가 프로젝트를 생성할 때 사용하는 sass는 CSS 보조 도구를 강화하기 위한 것이며 CSS의 확장입니다. sass는 buby 언어로 작성된 CSS 전처리 언어로 html과 동일한 엄격한 들여쓰기 스타일을 가지며 CSS 작성과 일치합니다. 사양. 중괄호와 세미콜론은 사용되지 않습니다.

C 언어와 Python은 각 분야에서 독특한 장점을 지닌 매우 인기 있는 프로그래밍 언어입니다. 이 기사에서는 C와 Python의 유사점과 차이점을 심층적으로 살펴보고 이를 특정 코드 예제와 비교할 것입니다. 1. 구문 및 구조적 차이점 먼저 C언어와 Python의 구문 및 구조의 차이점을 살펴보겠습니다. C 언어 예: #includeintmain(){inta=10;

C 언어와 Python은 널리 사용되는 두 가지 프로그래밍 언어이며 소프트웨어 개발 분야에서 중요한 역할을 합니다. 이 기사에서는 구문 구조, 데이터 유형, 객체 지향, 함수 등의 측면에서 C 언어와 Python의 유사점과 차이점을 논의하고 구체적인 코드 예제를 통해 이들 간의 차이점과 연결을 보여줍니다. 먼저 문법 구조부터 C언어와 Python을 비교해 보겠습니다. C 언어는 명확한 코드 구조를 가진 구조화된 언어이며 중괄호는 서로 다른 코드 블록을 구별하는 데 사용됩니다. Python은 스크립팅 언어입니다.

Vue 프로젝트 컴파일 sass 오류에 대한 해결 방법: 1. 이미지 소스 "cnpm install node-sass sass-loader --save-dev"를 사용하여 sass를 설치합니다. 2. "package.json"에서 "sass-loader" 버전을 변경합니다. to " "sass-loader": "^7.3.1","; 3. 페이지에서 직접 사용하거나 src 대신 @를 사용하세요.
