less和sass学习

less

mixi

将一系列的属性从一个规则集引入到另一个规则集的方式。

  • 普通混合 - center会编译到css中
.center{  
    position: absolute;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    margin: auto;
    background: @color;
    height: 100px;
    width: 100px;
}
.inner1 {
    .center
}

.inner2 {
    .center
}

<div class="inner1">

</div>
<div class="inner2">

</div>

  • 不带输出混合 - .center()不会编译到
.center(){  
    position: absolute;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    margin: auto;
    background: @color;
    height: 100px;
    width: 100px;
}
.inner1 {
    .center
}

.inner2 {
    .center
}

  • 带参数的混合
.center(@w, @h, @bg) { // 参数
    position: absolute;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    margin: auto;
    background: @bg;
    height: @h;
    width: @w;
}
.inner1 {
    .center(100px, 100px, red);
}

.inner2 {
    .center(200px, 200px, orange);
}

  • 带参数有默认值的混合
.center(@w:100px, @h:200px, @bg:red) { // 参数
    position: absolute;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    margin: auto;
    background: @bg;
    height: @h;
    width: @w;
}
.inner1 {
    .center();
}

.inner2 {
    .center(200px, 200px, orange);
}

  • 命令参数- 指定的实参给对应的形参
.center(@w:100px, @h:200px, @bg:red) { // 参数
    position: absolute;
    left: 0px;
    right: 0px;
    top: 0px;
    bottom: 0px;
    margin: auto;
    background: @bg;
    height: @h;
    width: @w;
}
.inner1 {
    .center(@bg:orange);
}

.inner2 {
    .center(200px, 200px, orange);
}

  • 规则匹配

// 对于三角形的方向进行编写

// 定义通用的参数,@_代表对应的.trange(L/R/T/B,@w, @bg)都会先表用此选择器,再调用自己,目的是抽离相同的参数
// 这些内容在 trangle.less中
.trangle(@_,  @w, @bg) {
    width: 0px;
    height: 0px;
    overflow: hidden;
}


.trangle(R, @w, @bg) {
    border-width: @w;
    border-style: dashed dashed dashed solid;
    border-color: transparent transparent transparent @bg;
}

.trangle(L, @w, @bg) {
    border-width: @w;
    border-style: dashed solid dashed solid;
    border-color: transparent @bg transparent transparent;
}

.trangle(B, @w, @bg) {
    border-width: @w;
    border-style: solid dashed dashed dashed;
    border-color: @bg transparent transparent transparent;
}

.trangle(T, @w, @bg) {
    border-width: @w;
    border-style: dashed dashed solid dashed;
    border-color: transparent transparent @bg transparent;
}
 
// 使用
@import './trangle.less';
.trangle1 {
    .trangle(B, 40px, red);
}
  • arguments参数

.border(@1, @2, @3){
    border: @arguments;
}


.box {
    .border(1px, solid, black)
}


less计算

可以进行加减乘除

.box {
    width: (100 + 100px); //是200px
}

继承(extend)

  • 没有参数形式,灵活度不高

@import "./extend/extend.less";

* {
    margin: 0px;
    padding: 0px;
}

#wrap {
    position: relative;
    width: 300px;
    height: 300px;
    border: 1px  solid;
    margin: 0 auto;

    // .inner:extend(.center) {
    .inner {
        // &:extend(.center); // 一个公共对象
        &:extend(.center all); // 多个公共对象

        &:nth-child(1) {
            width: 100px;
            height: 100px;
            background-color: orange;
        }
        

        &:nth-child(2) {
            width: 50px;
            height: 50px;
            background-color: red;        
        }
    }
}


sass

SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。

参考

<think>嗯,用户想了解LessSass的特点、使用方法区别。正好手头有五个相关引用,需要仔细梳理这些信息。 用户可能是个前端开发者,正在为项目选择CSS预处理器。从引用看,用户提供的资料已经覆盖了核心差异点,但需要整理得更系统化。 先看基础定位:引用[1]明确指出两者都是CSS高级语言,Sass功能更强大接近编程语言,Less更易上手。这是最根本的差异点,应该放在开头强调。 语法差异方面,引用[2][3]提到关键信息:Less保持.less扩展名标准CSS语法,Sass早期用缩进式.sass格式,后来改进为Scss——兼容CSS的花括号语法。需要明确说明这是历史演变形成的两种语法选择。 变量混入功能在引用[4][5]有详细对比:Less用@声明变量,Sass用$。不过用户可能更关心实际效果,比如引用[4]那个颜色渐变的例子就很直观,可以保留。混入(mixin)的示例代码也很有说服力,能展示如何重用样式规则。 编译环境部分要特别注意:引用[4]提到Less有客户端方案,可以直接在浏览器中引入less.js处理——这对初者很友好。而Sass依赖Ruby环境,后来虽然有了LibSass的C++版本,但总体环境要求更高。 关于进阶功能,引用[1][5]都提到Sass的编程特性更丰富。比如条件语句、循环这些Less不支持的功能,在Sass里可以实现复杂的样式逻辑。用户如果是开发大型项目,这点可能成为关键因素。 最后组织回答结构时,考虑把特点使用方法合并成两部分,区别单独作为章节。在区别对比里重点突出:语法差异、编译方式、功能强度这三个维度。工具推荐部分补充实际开发场景的建议,比如小型项目用Less更轻快,复杂系统用Sass更强大。 相关问题设计应该覆盖延伸需求:为什么需要预处理器(基础认知)、如何选择(决策参考)、具体工具使用(实践指导)、以及替代方案(拓展视野),这样形成完整知识链。 </think>以下是LessSass的详细对比分析,结合其核心特点、使用方法主要区别: --- ### **一、核心特点** 1. **Less** - **语法**:完全兼容标准CSS(`.less`文件),使用`@`声明变量 - **入门难度**:简洁清晰,学习曲线平缓 - **运行环境**:支持客户端编译(浏览器中通过`less.js`解析)Node.js服务端编译 - **功能**:提供变量、嵌套、混入(Mixins)、运算等基础功能 *示例:* ```less @primary-color: #0982C1; // 变量 .border-radius(@radius: 5px) { // 混入 border-radius: @radius; } .header { color: @primary-color; .border-radius(10px); } ``` 2. **Sass/Scss** - **语法分支**: - **Sass**:缩进语法(`.sass`),无花括号/分号 - **Scss**(主流):兼容CSS的括号语法(`.scss`),支持直接嵌入CSS代码 - **编程能力**:支持条件语句、循环、函数等高级特性,接近完整编程语言 - **依赖环境**:需通过Ruby或LibSass(C++库)编译,不可直接在浏览器运行 *示例:* ```scss $primary-color: #0982C1; // 变量(使用$) @mixin border-radius($radius: 5px) { // 混入 border-radius: $radius; } .header { color: $primary-color; @include border-radius(10px); // 调用混入 } ``` --- ### **二、使用方法** | **项目** | **Less** | **Sass** | |----------------|-----------------------------------|-----------------------------------| | **文件扩展名** | `.less` | `.sass`(缩进) / `.scss`(标准) | | **变量符号** | `@var` | `$var` | | **混入语法** | `.mixin() { }`(直接调用) | `@mixin`定义 + `@include`调用 | | **编译方式** | 客户端(less.js)或Node.js | Ruby/LibSass/dart-sass等编译器 | | **浏览器支持** | 可直接引入`.less`文件+`less.js`[^4] | 必须预编译为CSS | > **编译示例(Node环境)**: > ```bash > # Less编译 > npm install -g less > lessc styles.less styles.css > > # Sass编译(dart-sass) > npm install -g sass > sass styles.scss styles.css > ``` --- ### **三、核心区别** | **对比维度** | **Less** | **Sass** | |--------------------|-----------------------------------|-----------------------------------| | **语法亲性** | 更贴近CSS,适合新手快速上手[^1] | 缩进语法(.sass)有学习门槛 | | **编程能力** | 基础逻辑操作(运算、函数) | 支持循环、条件语句等高级特性[^1] | | **编译环境要求** | 宽松(支持浏览器端)[^1][^4] | 强制依赖编译器(如Ruby/Node) | | **混入(Mixin)参数**| 支持默认参数传参[^5] | 相同能力,语法更严谨(需@include)| | **社区生态** | 轻量级工具为主 | 框架支持更强(如Compass/Bourbon) | --- ### **四、选择建议** - **选Less**: 项目简单、需快速实现CSS增强;希望直接在浏览器调试;团队前端经验较浅[^1][^4] - **选Sass**: 大型项目需复杂逻辑控制;团队熟悉编程范式;需深度定制化样式框架[^1][^3] > **工具链参考**: > - Less:[官方编译器](https://lesscss.org/) > - Sass:[Dart Sass](https://sass-lang.com/dart-sass)(官方推荐) --- ### **相关问题** 1. 在Vue/React项目中如何集成LessSass? 2. Sass的`@extend`继承功能与Less的混入有何本质区别? 3. 如何处理Less/Sass的浏览器兼容性问题(如自动添加前缀)? 4. 除了Less/Sass,还有哪些现代CSS处理方案值得关注?(如PostCSS) [^1]: SassLess的核心定位及学习曲线差异 [^2]: 文件扩展名与基础语法区别 [^3]: Sass缩进语法到Scss的演化 [^4]: Less的浏览器端编译能力与变量操作示例 [^5]: Less/Sass的混入参数实现方式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值