scss基础和css扩展

ops/2025/3/19 10:37:14/

变量

        定义变量
//app.scss
$allpadding:20px; //声明颜色变量 $color
//使用
@import '@/assets/app.scss';.container{width: 100%;padding:$allpadding;}

⚠️scss中,中下划线和下划线是同一个东西 

$link-color: blue;
a {color: $link_color;
}//编译后a {color: blue;
}
        计算 

变量可进行加减乘除:http://t.csdnimg.cn/duYU9

width: 100px + 100px + 100px; //加法
width: 100px - 100px + 100px; //减法
width: 100px * 100 //乘法,注scss的乘法和除法是带单位的
width: (100px/3)  //注意这里需要带括号,如果不带括号会当场分割数值
width: $width / 3 //也可以不带括号,但是里面计算的一定要有声明的变量,因为这个语法css不认识,那么就会被解析成SCSS
width: 100 % 3px //SCSS也支持取模运算

嵌套

       基础嵌套 

scss和css一样可以进行嵌套:

.container{width: 100%;display: flex;flex-wrap: wrap;.btn{margin: 10px;}}
编译结果
.container{width: 100%;display: flex;flex-wrap: wrap;}
.container .btn{margin: 10px;}
        父级选择器
.container{a {color: red;    &:a {color:blue;}&-left: {color:black;}}
}
编译结果.container a {color: red;
}
.container a:hover {color: blue;
}
.container a-left {color: black;
}
        属性嵌套
/* SCSS */
font: {family: Helvetica, sans-serif;size: 18px;weight: bold;
}text: {align: center;transform: lowercase;overflow: hidden;
}/* CSS */
font-family: Helvetica, sans-serif;
font-size: 18px;
font-weight: bold;text-align: center;
text-transform: lowercase;
text-overflow: hidden;

导入scss

@import '@/assets/app.scss';

继承

        继承

scss中可以将一个样式继承于另一个样式,使用@extend


.aaaa {bakckground: red;
}.sprite-1 {@extend .aaaa;background-position: 0 -30px;
}.sprite-2 {@extend .aaaa;background-position: 0 -60px;
}
        占位符

scss继承时,你会发现,当.aaaa被继承编译后,你会发现它就没用,也就是说有没有一个办法使.aaaa不会出现在编译后的文件中,但它的功能不变,就出现了占位符


%aaaa {bakckground: red;
}.sprite-1 {@extend %aaaa;background-position: 0 -30px;
}.sprite-2 {@extend %aaaa;background-position: 0 -60px;
}

混合

在写css时,经常会有大量重复的代码,这时候混合就出现了。

        定义混合
@mixin mixin-name {property: value;
}
        使用混合
selector {@include mixin-name;
}

混合中也可以包含混合

@mixin mixin-name {@include mixin-name-one;
}
        混合传参

定义默认值color=blue,width=1px

@mixin bordered($color: blue, $width: 1px) {border: $width solid $color;
}
p { @include bordered(blue,2px); }

函数

        @if
  • (1)@if…(单向选择);
  • (2)@if…@else…(双向选择);
  • (3)@if…@else if…(多向选择);
 $num1: 8;.content {@if $num1 >= 20 { width: 150px; color:red } @else if $num1 <= 10{   /* 此样式块会被使用*/width: 200px; color:blue} @else { width: 350px; color:green }}
        @for

方式1:@for $i from 开始值 through 结束值

方式2:@for $i from 开始值 to 结束值

 /* SCSS */@for $i from 1 through 5 {.banner-#{$i} {background-image: url(/images/banner-#{$i}.png);}}​/* CSS 编译后 */.banner-1 {background-image: url(/images/banner-1.png); }​.banner-2 {background-image: url(/images/banner-2.png); }​.banner-3 {background-image: url(/images/banner-3.png); }​.banner-4 {background-image: url(/images/banner-4.png); }​.banner-5 {background-image: url(/images/banner-5.png); }
        @each

方法:@each $var in 列表值

{

    ……

}

 /* SCSS */@each $pic in about, news, project,contact {category-pic .#{$pic} {background-image: url(/images/pic/#{$pic}.png); }}​/* CSS 编译后 */category-pic .about {background-image: url(/images/pic/about.png); }​category-pic .news {background-image: url(/images/pic/news.png); }​category-pic .project {background-image: url(/images/pic/project.png); }​category-pic .contact {background-image: url(/images/pic/contact.png); }
        @while
 /* SCSS */$i: 6;@while $i > 0 {.item-#{$i} { width: 2em * $i; }$i: $i - 2;}/* CSS 编译后 */.item-6 {width: 12em;}.item-4 {width: 8em;}.item-2 {width: 4em;}

扩展

       justify-content
justify-content 是 SCSS 中的一个属性,用于控制flex容器内元素在主轴方向上的对齐方式。它可以取以下值:flex-start:flex容器内的元素从左到右排列,即左边对齐。
flex-end:flex容器内的元素从右到左排列,即右边对齐。
center:flex容器内的元素居中,即容器中心对齐。
space-between:flex容器内的元素在主轴方向上平均分布,即两端对齐。
space-around:flex容器内的元素在主轴方向上平均分布,并在两端保持相同的外边距,即around对齐。
stretch(默认值):flex容器内的元素会尽可能地扩展,以填充整个容器。

例子:设置内部元素横向自动排布换行:

  1. 将容器设置为 flex 布局。
  2. 允许容器内的子元素换行。如果子元素数量超过容器宽度,它们将自动换行。
  3. 将子元素平均分布在整个容器中,并在左右两边保持一定的外边距。
    display: flex;flex-wrap: wrap;justify-content: space-between;//使子元素平均分布在一行上


http://www.ppmy.cn/ops/19941.html

相关文章

ImportError: cannot import name ‘Config‘ from ‘mmcv‘ 问题解决

报错信息&#xff1a; Traceback (most recent call last):File "train.py", line 12, in <module>from mmcv import Config, DictAction ImportError: cannot import name Config from mmcv (/xxx/lib/python3.7/site-packages/mmcv/__init__.py) 问题原因&…

吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.3-13.5

目录 第 8 周 13、 聚类(Clustering)13.3 优化目标13.4 随机初始化13.5 选择聚类数 第 8 周 13、 聚类(Clustering) 13.3 优化目标 K-均值最小化问题&#xff0c;是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和&#xff0c;因此 K-均值的代价函数&#xff08;又…

Qt5怎么用QSetting生成配置文件、读取配置文件和保存配置文件

2024年4月22日&#xff0c;周一下午 在 Qt5 中&#xff0c;可以通过 QSettings 类生成、读取和保存配置文件。 QSettings 类提供了一个跨平台的接口&#xff0c;用于读取和写入应用程序的设置和配置信息&#xff0c;这些信息可以存储在不同的地方&#xff0c;如注册表&#xf…

从 Apache Doris 到 SelectDB Cloud:云原生架构下的弹性能力揭秘

随着云时代的到来&#xff0c;越来越多企业开始在公有云、私有云乃至 K8s 容器平台构建实时数据平台。云计算基础设施的革新&#xff0c;促使着数据仓库朝着云原生的方向发展。而用户日益复杂的业务负载和降本增效的需求&#xff0c;对于系统资源的精细化管理和成本效益等方面提…

Pytorch 之torch.nn初探 卷积--Convolution Layers

任务描述 本关任务&#xff1a; 本关提供了一个Variable 类型的变量input&#xff0c;按照要求创建一 Conv1d变量conv&#xff0c;对input应用卷积操作并赋值给变量 output&#xff0c;并输出output 的大小。 相关知识 卷积的本质就是用卷积核的参数来提取原始数据的特征&a…

Android 生成二维码

一、生成二维码工具类封装 1、二维码库 // 二维码implementation com.journeyapps:zxing-android-embedded:4.3.0 2、工具类 /*** 二维码* 处理工具*/public class QRCodeDealUtils {/*** param content 字符串内容* param size 位图宽&高(单位:px)* param log…

【机器学习】机器学习学习笔记 - 无监督学习 - k-means/均值漂移聚类/凝聚层次聚类/近邻传播聚类 - 05

pdf在线免费转word文档 https://orcc.online/pdf 不限次数、免费不需要注册。 无监督学习 (聚类) 聚类是一种无监督学习方法&#xff0c;是将数据划分为若干个簇&#xff0c;使得簇内的点尽可能相似&#xff0c;簇间尽可能不相似。 k-means 聚类 k-means 聚类算法是一种迭…

css中新型的边框设置属性border-block

border-block 是 CSS 中的一个属性&#xff0c;主要用于在样式表中一次性设置元素的逻辑块向边框的属性值。这个属性是简写属性&#xff0c;可以同时设置 border-block-width、border-block-style 和 border-block-color。其中&#xff0c;border-block-start 用于设置元素的开…