css学习之路:sass学习基础篇

SCSS

一、动态的样式语言

在这里插入图片描述

  • 让CSS有变量的概念
  • css有很多的缺点
    语法不够强大,没有变量和合理的样式复用机制,导致难以维护,我们就可以使用动态样式语言,赋予CSS新的特性。
  • 常见的动态样式语言
    • scss/sass(scss兼容sass,因为scss更接近css的语法) boot4
      • sass 是一个成熟、稳定、强大的 CSS 扩展语言解析器。
    • less boot3
      • LESS 为 CSS 赋予了动态语言的特性,如变量、继承、运算、函数。LESS 既可以在客户端上运行 (支持 IE 6+、Webkit、Firefox),也可以借助 Node.js 或者 Rhino 在服务端运行。
    • stylus
      • Stylus - 富于表现力、健壮、功能丰富的 CSS 预处理语言。

二、scss是什么

  • Scss是一款强化css的辅助工具
  • 它和css的语法超级像
  • 在css的基础上添加了变量,嵌套,混合,导入,函数等高级功能
  • 这些功能,让css更加强大与优雅

三、SCSS详解

在这里插入图片描述

四、scss的使用

SCSS在服务器端使用的

4.1、安装

安装SCSS的步骤

  1. 保证nodejs版本在8.11以上
  2. 在线安装 cmd 输入 npm install -g node-sass
  3. 离线安装 一定先安装32位scss,解压完文件后 全部移到到node文件下
  4. 验证 node-sass -v显示版本号

4.2、 SCSS转换成css文件(路径问题)

  • 单文件转换

    • 在项目路径下 node-sass scss文件 scss文件

      在这里插入图片描述

  • 多文件转换

    • 一次转一个文件夹中所有的文件 node-sass scss文件夹 -o css文件夹
  • 单文件监听

    • node-sass -w scss文件 css文件
    • 开启一个监听,监听某一个SCSS文件,如果这个SCSS文件被保存,自动转换成对应的CSS。同时监听一直保持开启状态
  • 多文件监听

    • node-sass -w scss文件夹 -o css文件夹

4.3、scss代码编写

4.3.1、变量 $_red=
  • 使用$声明变量。
  • 变量的名称可以包含-和_,其他规则与CSS选择器规则相同
  • 尽量见名知意。
  • 变量可以保存什么数据?
    • 颜色值
    • 数字
    • 属性
    • 字符串
    • 变量中可以放其他变量
  • 变量的作用域
    • 在最近的一组大括号中有效
    • 写在全局,就全局有效
  • 规则
    • 如果此变量之前被声明了,使用之前的值。
    • 如果此变量之前没声明,使用现在声明的值
    • !important(最高优先级)
4.3.2、嵌套
  • 嵌套有效的减少我们的代码量

    选择器1{
       样式声明;
       选择器2{
      	 样式声明;
       }
    }
    
    /* 会自动生成后代选择器 */
    /* 如果嵌套伪类选择器,需要在:前添加占位符,不然会有空格 */
    /* 例如 */
    a{
      color:#001;
      &:hover{
      	...
      }
        
    }
    
  • 案例

    /* 属性的嵌套 */
    div{
        border:{style:solid;width:2px;color:#000;}
    }
    /* 生成 */
    div{
        border-width:2px;
        border-style:solid;
        border-color:#000;
    }
    /* 群主的嵌套 */
    div,p{
        a{color:#111;}
    }
    /* 生成 */
    div a,p a{
        color:#111
    }
    
4.3.3、导入

在这里插入图片描述

  • scss文件以_作为前缀,是不会转换为css文件的,称这种文件为局部scss文件
  • 而不带_前缀的scss是必定会转化为css文件的,叫全局scss文件
  • 在全局scss文件中,导入局部的scss文件,所有的局部scss的代码都会在全局scss生成的css中存在
4.3.4、混合器 (可复用)
  • 把多个选择器都会使用的一部分样式封装起来,只写一遍

  • 需要时候就调用,实现代码重用

  • 声明混合器 @mixin 混合器名称{样式声明}

  • 在选择器中调用混合 @include 混合器名称

  • 带参数的混合器

    • @mixin 混合器名称(形参1,形参2。。。。){样式声明}
    • @include 混合名称(实参1,实参2。。。。)
  • 混合器使用最多的场景,是css hack (针对低版本的浏览器做兼容)

  • 案例

    
    /* 声明混合器 */
    @mixin my_border{
        border:1px solid #f00;
        box-shadow:10px 10px 5px 5px #f00;
        border-radius:50%
    }
    
    @mixin my_border2($width,$style,$color,$size){
    	  border:$width $style $color;
    	  border-radius:$size
    }
    
    /* 调用 */
    div{
        width:100px;
        height:100px;
        @include my_border
    }
    h2{
        @include my_border2(3px,dashed,#000,50%)
    }
    
    
4.3.5、继承
  • @extend 选择器名称

  • 一个选择器可以使用另一个选择器的所有样式

  • 案例

    /* scss 继承*/
    .my_parent{
        width:100%;
        height:100%;
    }
    .my_child{
        color:red;
        @extend .my_parent
    }
    
    /* css */
    .my_parent,.my_child{
        width:100px;
        height:100px
    }
    .my_child{
        color:red
    }
    
    
4.3.6、运算(加减乘除模)
  • scss中的运算会自动的转换单位

  • 但是相对单位不可以转换,会报错。

  • +

    • 带双引号的+不带双引号=带双引号

    • 不带双引号+带双引号=不带双引号的字符串

    • 案例

      <!-- 加法 -->
      p:before{
      	content:'xxxx'+yahe;
      	font-family:A+"rial";
      }
      
  • -

    • 在scss中,变量名称可以包含-

    • 所以scs是有时候分不清楚,我们写的-是减法还是变量的一部分

    • 需要在减号前后加空格

    • 案例

      <!-- 减法 -->
      $my-width:5%;
      $my-max-width:$my-width*4	
      p{width:$my-max-width - $my-width}
      
  • /

    • 在scss中,/号的作用,是除法和分隔符

    • 以下情况,会被认为是除法

      • 如果除号两边的值,有变量或者方法的返回值,我们认为是除法
      • 除法计算式被小括号包裹,认为是除法
      • 除法运算式,是其他运算式的一部分,认为是除法
    • 案例

       p{
           font:(10px/5px)+px;
           $width:1000px;
           width:$width/2;
           height:(500px/2);
           margin:5px+8px/2px;
       }
      
  • 插值变量 #{}

    Content:“zhangdaxin ate #{50+30} baozis”;
    #{ }
    
  • 颜色的运算

    • 采用分段计算方式

    • 红色与红色计算,绿色与绿色计算,蓝色与蓝色计算

    • #112233+#223344=#335577

    • rgb(1,2,3)+rgb(4,5,6)=rgb(5,7,9)

    • 注意:raba的计算,要求alpha必须相同才能计算

    • 案例

      p{
      	color:rgb(1,2,3)+rgb(1,2,4);
      	background:#112233+#445566;
      	border-color:rgba(1,1,1,0.5)+rgba(2,3,4,0.5)
      }
      
4.3.7、函数
  • scss中预定义了很多函数,有些函数甚至可以在CSS中使用

    rgba(red,green,blue,alpha)
    hsl(hue,saturation,lightness)
    hue:色调  0~360 分为3个色段  0~120 120~240 240~360
    saturation:饱和度0~100%
    lightness:亮度0~100%
    
    
  • 数学函数(跟js的Math对象超级相似)
    在这里插入图片描述

  • 字符串的函数

    unquote($str)去掉双引号
    quote($str)添加双引号
    to_upper_case($str)转大写
    to_lower_case($str)转小写
    
  • 自定义函数 @function函数名(){}

    
    /* 无参函数 */
    @function 函数名称(){
        @return 返回值
    }
    
    /* 带参函数 */
    @function 函数名称($参数1,$参数2){
        @return $参数1+$参数2
    }
    
    
4.3.8、指令 if-else if-else
$type:moon;
h2{
	@if $type===sun{
		color:#f00;
	}@else if $type===moon{
		color:#00f;
	}@else{
		color:#0f0;
	}
}

  • 混合器、函数和指令的综合示例
@mixin my_bg($color1,$color2){
    background:-webkit-linear-gradient(top,$color1,$color2)
    background:-o-linear-gradient(top,$color1,$color2)
    background:-moz-linear-gradient(top,$color1,$color2)
    background:-ms-linear-gradient(top,$color1,$color2)
}

@function get_bg($n){
    @if($n>95){
   	 @return 1;
    }@else if($n>80){
   	 @return 2;
    }@else if($n>60){
   	 @return 3;
    }@else{
   	 @return 4;
    }
}

div{
    $resule:get_bg(91);
    @if($resule==1){
   	 @include my_bg(#f00,#faa);
    }@else if($resule==2){
   	 @include my_bg(#ff0,#ffa); 
    }@else if($resule==3){
   	 @include my_bg(#00f,#ffa); 
    }@else if($resule==4){
   	 @include my_bg(#f00,#faa); 
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/295312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

厚积薄发11年,鸿蒙究竟有多可怕

12月20日中国工程院等权威单位发布**《2023年全球十大工程成就》。本次发布的2023全球十大工程成就包括“鸿蒙操作系统”在内。入围的“全球十大工程成就”&#xff0c;主要指过去五年由世界各国工程科技工作者合作或单独完成且实践验证有效的&#xff0c;并且已经产生全球影响…

云尚办公项目学习

完整的笔记可以参考这个专栏&#xff0c;写的挺详细的&#xff1a;云尚办公课件笔记&#xff0c;come on boy form-create前端组件 formProps记录了表单有哪些表单项&#xff0c;分别是哪些类型&#xff08;下拉&#xff0c;单选&#xff0c;输入框&#xff09; formOptions记…

周鸿祎分享大模型十大趋势:2024将出现杀手级应用

1月5日&#xff0c;“2023年风马牛年终秀”上&#xff0c;三六零&#xff08;601360.SH&#xff0c;下称“360”&#xff09;集团创始人周鸿祎分享了对2024年大模型发展趋势的十大预测&#xff0c;呼吁企业树立AI信仰&#xff0c;All in AI。他认为&#xff0c;创新才能破局&am…

shell脚本实现九九乘法表

9*9乘法表 判断服务是否开启 1.查看80端口是否被监听 [rootlocalhost ~]# ss -an | grep 80 tcp LISTEN 0 128 *:80 *:* 2.查看80端口/httpd服务是否开启 [rootlocalhost ~]# n…

【Python学习】Python学习2

目录 【Python学习】Python学习2 1.前言2.基本语法2.1标识符2.2保留字2.3行和缩进2.4多行语句2.5 Python 引号2.6 Python注释2.7 Python空行2.8 等待用户输入2.9 print 输出2.10 多个语句构成代码组2.11 命令行参数 参考 文章所属专区 Python学习 1.前言 主要是Python基本语…

《Python自动化测试九章经》

Python是当前非常流行的一门编程语言&#xff0c;它除了在人工智能、数据处理、Web开发、网络爬虫等领域得到广泛使用之外&#xff0c;他也非常适合软件测试人员使用&#xff0c;但是&#xff0c;对于刚入行的测试小白来说&#xff0c;并不知道学习Python语言可以用来完成哪些测…

kali-Linux安装ARL灯塔教程以及timeout of 20000ms exceeded 的解决方法

FLAG&#xff1a;别和妈妈诉苦&#xff0c;她帮不上&#xff0c;也睡不着。 专研方向: docker&#xff0c;ARL资产灯塔系统 每日emo&#xff1a;天冷了&#xff0c;你还在坚持吗&#xff1f; 欢迎各位与我这个菜鸟交流学习 kali安装ARL灯塔教程 1.安装docker环境&#xff0c;…

使用爬虫爬取热门电影

文章目录 网站存储视频的原理M3U8文件解读网站分析代码实现 网站存储视频的原理 首先我们来了解一下网站存储视频的原理。 一般情况下&#xff0c;一个网页里想要显示出一个视频资源&#xff0c;必须有一个<video>标签&#xff0c; <video src"xxx.mp4"&…

win7系统报错msvcp140.dll丢失的多种解决方法分享

在Windows 7操作系统中&#xff0c;msvcp140.dll是一个非常重要的动态链接库文件&#xff0c;它负责许多应用程序的正常运行。然而&#xff0c;由于各种原因&#xff0c;我们可能会遇到丢失msvcp140.dll的问题。当msvcp140.dll文件丢失或损坏时&#xff0c;可能会导致程序无法启…

Go语言中的HTTP请求和响应处理

在Web开发中&#xff0c;HTTP请求和响应是核心的交互方式。Go语言&#xff0c;作为一种高效且现代的编程语言&#xff0c;为开发者提供了简洁、强大的工具来处理HTTP请求和响应。本文将简要介绍在Go语言中如何处理HTTP请求和响应。 在Go语言中&#xff0c;HTTP请求和响应的处理…

c语言-函数指针

目录 前言一、函数指针1.1 函数指针定义1.2 函数指针调用函数1.3 函数指针代码分析 总结 前言 本篇文章介绍c语言中的函数指针以及函数指针的应用。 一、函数指针 函数指针&#xff1a;指向函数的指针。 函数在编译时分配地址。 &函数名 和 函数名代表的意义相同&#xf…

Linux下从sqlite3源码编译出sqlite3库及相关可执行程序

目录 1. 下载sqlite3源码并编译 2. 下载Tcl库并编译 3. 再次编译sqlite源码 1. 下载sqlite3源码并编译 打开SQLite Download Page&#xff0c;滚动到页面的下面&#xff0c;找到源码量最大的那个&#xff08;其它的估计也行&#xff0c;但源码最大的本人感觉功能最全&#…

Java集合框架深度解析-ArrayList

Java的集合框架提供了一组实现常用数据结构的类和接口。理解集合框架对于Java程序员来说至关重要&#xff0c;因为它们在日常编程中广泛应用。 为什么需要集合框架&#xff1f; 在编程中&#xff0c;我们经常需要存储和操作一组对象。集合框架提供了用于表示和操作对象组的通…

需方管理运维运营服务的心得

在确保供应商提供的运营维护服务达到需方质量标准&#xff0c;并保障供应商具备相应的服务条件与能力方面&#xff0c;需方必须采纳一整套综合性的管理措施。这包括但不限于方法论、技术工具、制度化流程、以及完备的文档记录等。以下是一份精炼的方案&#xff0c;涉及至关重要…

Dockerfile - 工作流程、构建镜像、文件语法

目录 一、Dockerfile 1.1、简介 1.2、Dockerfile 构建镜像的流程 1.3、Dockerfile 文件语法 1.3.1、注意事项 1.3.2、FROM 1.3.3、MAINTAINER&#xff08;官方已废弃&#xff09; 1.3.4、RUN 1.3.5、EXPOSE 1.3.6、WORKDIR 1.3.7、ADD 和 COPY 1.3.8、ENV 1.3.9、…

详解bookkeeper AutoRecovery机制

引言小故事 张三在一家小型互联网公司上班&#xff0c;由于公司实行的996&#xff0c;因此经常有同事“不辞而别”&#xff0c;为了工作的正常推进&#xff0c;团队内达成了某种默契&#xff0c;这种默契就是通过某个规则来选出一个同事&#xff0c;这个同事除了工作之余还有额…

【排序算法总结】

目录 1. 稳点与非稳定排序2. 冒泡排序3. 简单选择排序4. 直接插入排序5. 快排6. 堆排7. 归并 1. 稳点与非稳定排序 不稳定的&#xff1a;快排、堆排、选择原地排序&#xff1a;快排也是非原地排序&#xff1a;归并 和三个线性时间排序&#xff1a;桶排序 &#xff0c;计数&…

前缀和算法模板

一维前缀和 算法用途&#xff1a;快速求出数组中某一连续区间的和 一维前缀和算法模板 1、预处理出一个 dp 数组 要求原数组存储在 n 1 的空间大小中&#xff0c;其中后 n 个空间存数据。 dp数组&#xff0c;数组开 n 1个空间&#xff0c;dp[i] 表示 [ 1, i ] 区间内所有…

从Spring Cloud Alibaba开始聊架构

作为SpringCloudAlibaba微服务架构实战派上下册和RocketMQ消息中间件实战派上下册的作者胡弦。 另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.htmlhttps://item.jd…