CSS预处理

CSS预处理
一、什么是CSS预处理器?

CSS预处理器定义了一种新的语言,其基本思想是用一种专门的编程语言,为CSS增加一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。

优点:使用CSS预处理器语言,可以让我们的CSS代码更加简洁、适应性更强、可读性更佳、更易于维护等诸多好处。

目前比较优秀的CSS预处理器语言有Less、Sass(Scss)、Stylus。这里我们学习Less和Sass。

Less和Sass包含了一套自定义的语法及一个解释器,用户根据这些语言定义自己的样式规则,这些规则会通过解析器,编译生成对应的CSS文件,只有在被编译后才能够被浏览器识别使用。编译Less、Sass的方法有很多,比如通过命令行编译、编辑器编译、在线编译、第三方工具等。

二、Less语法

里面不加字符串

Less语法学习是为了能够写代码更加便捷,

less学习网址[https://less.bootcss.com/]

首先创建index.less文件,不需要创建index.css文件。

1.首先在node.js安装less. (打开对应文件夹,输入cmd。输入npm i -g less进行安装)

2.安装成功之后,通过 lessc index.less index.css 命令。来生成个index.css文件。这时只需要在index.less中操作就行,index.css会自动跟着变化

  • 1.注释
    less有两种注释风格。
    标准的CSS注释/* code */,会保留到编译后的文件。
    单行注释 // code,只保留在less源文件中,编译后被省略。
  • 2.import导入样式
    引入.css文件 同于css的import命令
@import 'reset.css'

编译后:

@import reset.css

.css后缀名不能省略 引入.less文件可以省略扩展名

@import 'reset'

编译后:导入的文件会与当前的文件内容合并

  • 3.变量

Less允许开发者自定义变量,变量可以在全局样式中使用,变量使得样式修改起来更加简单。
(1)变量以@开头,变量名与变量值之间用冒号分割

@width: '20px'
#header {
    width: @width;
}

(2)变量嵌套在字符串时,必须写在@{}之中

@side: left;
.round {
    border-@{side}-radius: 5px;
}
  • 4.嵌套
    (1)选择器嵌套
p {
    font-size: 20px;
    a {
        text-decoration: none;
        &:hover { border-width: 1px }
        // 在嵌套在代码块内,可以使用&引用父元素。
    }
}
  • 5.混合
    混合可以将一个定义好的class A 轻松的引入到另一个 class B中,从而实现 class B 继承 classA中所有的属性。
    5.1混合之继承类,会显得有点冗余,只是照搬了继承元素的属性
.border {
    border: 1px dotted yellow;
}
.main {
    color: #fff;
    .border;
}

5.2混合参数没有设置默认值,此时调用必须传入参数

// 1.定义
.top (@top) {
    top: @top;
}
// 2.调用
#main {
    .top(30px);
}

5.3混合参数并且设置了默认值,调用时可以不用传入参数。

// 1.定义
.top (@top: 25px) {
    top: @top;
}
// 2.调用时不传参数,则使用默认值25px
#main {
    .top;
}
// 3.若调用时传入参数,则使用传入的值。
#cont {
    .top(50px);
}

5.4混合参数中使用@arguments来引用所有传入的变量

// 1.定义
.box-shadow (@x: 0,@y :0,@blur: 1px, @color: #000) {
    box-shadow: @arguments;
    -moz-box-shadow: @arguments;
    -webkit-box-shadow: @arguments;
}
// 2.调用
div {
    .box-shadow (10px, 5px)
}
  • 6.继承:extend伪类来实现样式的继承使用
    混合已经可以实现很简单的继承了,为什么还要使用extend来实现继承呢。这是因为混合实现继承的原理是把代码copy一份过来。编译后的css代码中会有大量的冗余代码,而extend则能很好的避免这一点问题。
.public {
    background: yellow;
}
li {
    &:extend(.public);
    list-style: none;
}
// 等同于
li:extend(.public) {
    list-style: none;
}

上面代码编译后的css结果是

.public, li {
    background: yellow;
}
li {
    list-style: none;
}
  • 7.运算
    任何的数字、颜色或者变量都可以参与运算,运算应该被包裹在括号中,以()进行优先级计算。
.width {
    width: (200px - 30)*2;
}
// 编译后
.width {
    width: 340px;
}
三、Sass语法学习

scss是sass的进阶版

  • 1.注释:Sass跟Less的注释语法一样
  • 2.Sass引入用@import url(reset.css)
    sass学习网址:[https://www.sass.hk/docs/]
  • 3.基本区别就是把less的@改为$即可

alt + tab可实现界面切换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值