scss/less语法以及在vue项目中的使用(转载)

1.scss与less都是css的预处理器,首先我们的明白为什么要用scss与less,因为css只是一种标记语言,其中并没有函数变量之类的,所以当写复杂的样式时必然存在局限性,不灵活,而scss与less正好为css提供这些,让css可以像编程一样灵活书写样式,而且scss与还提供了一些css兼容性的处理,所以运用scss就不需要像写css时队友的语法需要做hack处理。SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能。也就是说,任何标准的 CSS3 样式表都是具有相同语义的有效的 SCSS 文件。

2.本文我们只对scss介绍,其实less都差不多,当你使用scss语法是要用.scss后缀,使用sass语法时用.sass后缀。
3.在vue项目中的使用:

  •      安装:在命令行中输入:npm install node-sass sass-loader --save-dev
  •      在样式中声明使用scss:<style lang=scss scoped><style>(到这里就可以愉快的使用scss语法了)
  •      注:在webpack.config.js中不需要配置使用sass-loader,因为vue-loader会自动解析

4. scss常用语法简介:

1.自定义变量以及子元素书写:

<style lang=scss scoped>
/*scss的使用:*/
/*1.自定义变量*/
$color:pink; 
$width:200px;
$height:200px;
$right:right;
$num:2;
.test{
    background:$color;
    width:$width;
    height:$height;
    margin:30px auto;
    /*插入变量*/
    border-#{$right}:2px solid blue;
    /*子元素的书写 选择器嵌套*/
    p{
        color:orange;
        font-size: 30px;
    }
}

2.样式的加减乘除以及继承样式:

.p{
    background:yellowgreen;
}
.test2{
    /*样式的加减乘除,自定义变量再使用*/
    width:$num*100px;
    height:$num*50px;
    border:(1px+1px) solid orange;
    /*样式的继承*/
    @extend .p;
}

3.样式的复用:

/*代码的复用,相当于自定义一个函数,并且可以 传参*/
@mixin box($height){
    height:$height;
    width:200px;
    border:1px solid deeppink;
}
.test3{
    /*调用*/
    @include box(200px);
}

4.使用if语句:

/*使用if语句判断使用哪套样式,lightness是scss中的一个函数,用来判断色彩度,$color为传入的自定义参数*/
.test4{
    @if lightness($color)<30%{
        width:50px;
        height:50px;
        background:cyan;
    }@else{
        width:50px;
        height:50px;
        background:yellow;
    }
}

5.scss的三种循环:for   while   each:

/*循环语法,包括最常见的三种循环方法,for,while,each,*/
/*其中循环包含开始不包含结束量,如下不包含5*/
@for $i from 1 to 5{
    .R#{$i}{
        width:$i*20px;
        height:$i*20px;
        /*注意:变量带单位时不能写成($i)px;应该写:#{$i}px*/
        border:#{$i}px solid olive;
    }
}

6.scss中的函数:

/*函数使用*/
@function double ($num){
    @return $num*2
}
.test5{
    font-size: double(20px);
    color:gold;
}

 

相关推荐:

为什么在大型Python项目中推荐使用Monorepo环境管理?

Monorepo是应对跨子包频繁修改、版本对齐成本高、CI耗时爆炸等痛点的止损方案;需统一依赖管理、确保本地与CI环境一致,并严守子包独立测试边界。 Monorepo不是“更先进”,而是对特定规模和协作模式的项目更可控——当Python项目中出现跨子包频繁修改、版本对齐成本高、CI耗时爆炸或本地开发...

为什么在Python项目中推荐使用Poetry管理包依赖?

poetryinstall与pipinstall-rrequirements.txt的本质差异在于:前者是“解析后装”,基于poetry.lock中已验证的完整依赖图确保版本兼容并自动激活专属虚拟环境;后者是“盲装”,仅按文本顺序安装、不解析依赖冲突、不隔离环境,易导致静默覆盖和全局污染。 因为pi...

如何提升Python项目的静态检查性能_使用Ruff替代Flake8和Isort

Ruff比flake8+isort快10–100倍,因其用Rust实现单二进制、零解释器开销、AST复用与并行遍历,而非单纯依赖语言性能;迁移需分阶段配置对齐,避免规则差异导致误报或语义错误。 ruff确实能显著提升Python项目的静态检查性能——它用Rust编写,单进程、零依赖、启动快、检查快,...

如何在 Poetry 项目外直接导入其模块(无需安装或打包)

本文介绍一种轻量、临时的解决方案,让位于Poetry项目外部的Python脚本(如scripts/script.py)能直接导入Poetry项目内(如modules-project/modules/)的模块及其依赖,无需重新初始化Poetry项目、发布包或修改系统路径。 本文介绍一种轻量、临时的解决...

Python项目中多进程消费同一个RabbitMQ队列怎么保障数据一致性?

RabbitMQ本身保证单条消息只投递一次给一个消费者,数据一致性问题源于业务逻辑并发执行导致的竞态,而非消息重复投递;basic_ack仅确认消息接收,不保障业务执行唯一性,故无法解决数据一致性问题。 多进程消费同一个RabbitMQ队列时,数据一致性问题不来自RabbitMQ本身(它天然保证单条...