Vue进阶(幺柒捌):延伸阅读Sass、Scss、Less与Stylus编程特性_stylus sass(1)

Vue

  • 什么是MVVM?

  • mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

  • 组件之间的传值?

  • Vue 双向绑定原理

  • 描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?

  • 虚拟 DOM 实现原理

  • Vue 中 key 值的作用?

  • Vue 的生命周期

  • Vue 组件间通信有哪些方式?

  • vue 中怎么重置 data?

  • 组件中写 name 选项有什么作用?

  • Vue 的 nextTick 的原理是什么?

  • Vuex 有哪几种属性?

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

    border: 1px solid #eee
    }
    ul,ol {
    color:#333;
    text-transform:uppercase;
    }


#### 3.2 LESS继承


`LESS`支持的继承和`Sass`与`Stylus`不一样,他不是在选择器上继承,而是将`Mixins`中的样式嵌套到每个选择器里面。这种方法的缺点就是在每个选择器中会有重复的样式产生。



.block {
margin: 10px 5px;
padding: 2px;
}
p {
.block;/*继承.block选择器下所有样式*/
border: 1px solid #eee;
}
ul,ol {
.block; /*继承.block选择器下所有样式*/
color: #333;
text-transform: uppercase;
}


转译出来的`CSS`代码:



.block {
margin: 10px 5px;
padding:2px;
}
p {
margin: 10px 5px;
padding:2px;
border: 1px solid #eee
}
ul,ol {
margin: 10px 5px;
padding:2px;
color:#333;
text-transform:uppercase;
}


正如所看到的,上面的代码“`.block`”的样式将会被插入到相应的你要继承的选择器中,但需要注意的是优先级的问题。


### 四、运算符(Operations)


`CSS预处理器`语言还具有运算的特性,其简单的讲,就是对数值型的`Value`(如:数字、颜色、变量等)进行加减乘除四则运算。这样的特性在`CSS`样式中是想都不敢想的,但在`CSS预处理器`语言中对样式做一些运算一点问题都没有了,例如:



@base_margin: 10px;
@double_margin: @base_margin * 2;
@full_page: 960px;
@half_page: @full_page / 2;
@quarter_page: (@full_page / 2) / 2;


上面代码是`LESS`的运算示例,声明一下,在取得“`@quarter_page`”变量时,我们可以直接除以4,但是在这里,我们只是想演示一下圆括号组成的“运算顺序”。在复合型运算中,小括号也是很有必要的,例如:



border: (@width / 2) solid #000;


`Sass`在数字运算上要比`LESS`更专业,他可以直接换算单位了。`Sass`可以处理无法识别的度量单位,并将其输出。这个特性很明显是一个对未来的尝试——证明`W3C`作出的一些改变。


`Stylus`的运算是三款预处理器语言中最强大的一款,他拥有其他程序语言一样的运算功能,简单点的加减乘除,复杂的有关系运算、逻辑运算等。受限于篇幅,感兴趣的同学可以到官网上仔细阅读。


### 五、颜色函数


颜色函数是`CSS预处理器`语言中内置的颜色函数功能,这些功能可以对颜色进行处理,例如颜色的变亮、变暗、饱和度控制、色相控制,渐变颜色等处理十分的方便。


#### 5.1 Sass 颜色函数



lighten( c o l o r , 10 color, 10%); /\* 返回的颜色在 color,10color基础上变亮10% */
darken( c o l o r , 10 color, 10%); /\* 返回的颜色在 color,10color基础上变暗10% */
saturate( c o l o r , 10 color, 10%); /\* 返回的颜色在 color,10color基础上饱和度增加10% */
desaturate( c o l o r , 10 color, 10%); /\* 返回的颜色在 color,10color基础上饱和度减少10% */
grayscale(KaTeX parse error: Undefined control sequence: \* at position 11: color); /\̲*̲ 返回color的灰度色*/
complement(KaTeX parse error: Undefined control sequence: \* at position 10: color); /\̲*̲ 返回color的补色 */
invert(KaTeX parse error: Undefined control sequence: \* at position 14: color); /\̲*̲ 返回color的反相色 */
mix($color1, $color2, 50%); /* $color1 和 $color2 的 50% 混合色*/


这只是`Sass`中颜色函数的一个简单列表,更多详细的介绍可以阅读`Sass文档`。


颜色函数可以运用到任何一个元素上,只要其有颜色的属性,下面是一个简单的例子:



$color: #0982C1;
h1 {
background: c o l o r ; b o r d e r : 3 p x s o l i d d a r k e n ( color; border: 3px solid darken( color;border:3pxsoliddarken(color, 50%);/*边框颜色在$color的基础上变暗50%*/
}


#### 5.2 LESS 颜色函数



lighten(@color, 10%); /* 返回的颜色在@color基础上变亮10% */
darken(@color, 10%); /* 返回的颜色在@color基础上变暗10%*/
saturate(@color, 10%); /* 返回的颜色在@color基础上饱和度增加10% */
desaturate(@color, 10%); /* 返回的颜色在@color基础上饱和度降低10%*/
spin(@color, 10); /* 返回的颜色在@color基础上色调增加10 */
spin(@color, -10); /* 返回的颜色在@color基础上色调减少10 */
mix(@color1, @color2); /* 返回的颜色是@color1和@color2两者的混合色 */


`LESS`的完整颜色函数功能,请阅读`LESS文档`。


下面是`LESS`中如何使用一个颜色函数的简单例子:



@color: #0982C1;
h1 {
background: @color;
border: 3px solid darken(@color, 50%);
}


#### 5.3 Stylus 颜色函数



lighten(color, 10%); /* 返回的颜色在’color’基础上变亮10% */
darken(color, 10%); /* 返回的颜色在’color’基础上变暗10% */
saturate(color, 10%); /* 返回的颜色在’color’基础上饱和度增加10% */
desaturate(color, 10%); /* 返回的颜色在’color’基础上饱和度降低10% */


有关于`Stylus`的颜色函数介绍,请阅读`Stylus文档`。


下面是`Stylus`颜色函数的一个简单实例:



color = #0982C1
h1
background color
border 3px solid darken(color, 50%)


从上面展示的部分颜色函数可以告诉我们,`Sass`、`LESS`和`Stylus`都具有强大的颜色函数功能,功能特性上都大同小异,只是在使用方法上略有不同。而且他们都具有相同的一个目的,就是方便操作样式中的颜色值。


### 六、导入(Import)


在`CSS`中,并不喜欢用`@import`来导入样式,因为这样的做法会增加`http`的请求。但是在`CSS预处理器`中的导入(`@import`)规则和`CSS`的有所不同,它只是在语义上导入不同的文件,但最终结果是生成一个`CSS`文件。


如果你是通过“`@import ‘file.css`’”导入“`file.css`”样式文件,那效果跟普通`CSS`导入样式文件一样。


**注意:导入文件中定义了变量、混合等信息也将会被引入到主样式文件中,因此需要避免他们的相互冲突。**


`Sass`、`LESS`和`Stylus`三款`CSS预处理器`语言,导入样式的方法都是一样:


被导入文件的样式:



/* file.{type} */
body {
background: #EEE;
}


需要导入样式的文件:



@import “reset.css”;
@import “file.{type}”;
p {
background: #0982C1;
}


转译出来的CSS代码:



@import “reset.css”;
body {
background: #EEE;
}
p {
background: #0982C1;
}


### 七、注释(Comment)


`CSS预处理器`语言中的注释是比较基础的一部分,这三款预处理器语言除了具有标准的`CSS`注释之外,还具有单行注释,只不过单行注释不会被转译出来。


#### 7.1 Sass、LESS和Stylus多行注释


多行注释和`CSS`的标准注释,他们可以输出到`CSS`样式中,但在`Stylus`转译时,只有在“`compress`”选项未启用的时候才会被输出来。



/*
*我是注释
*/
body
padding 5px


#### 7.2 Sass、LESS和Stylus单行注释


单行注释跟`JavaScript`语言中的注释一样,使用双斜杠(`//`),但单行注释不会输出到`CSS`中。



//我是注释
@mainColor:#369;//定义主体颜色


在`Stylus`中除了以上两种注释之外,他还有一种注释,叫作**多行缓冲注释**。这种注释跟多行注释类似,不同之处在于始的时候,这里是”`/*!`”。这个相当于告诉`Stylus`压缩的时候这段无视直接输出。



/*!
*给定数值合体
*/
add(a, b)
a + b


上面从九个常用的特性对`Sass`、`LESS`和`Stylus`三款`CSS预处理器`语言的使用做了对比,在某些特性上可以说是一模一样,而有一些特性上功能其实一样,只是在部分书写规则上有所不同。当然有些特性是完全不同。在这里主要是从使用方法上做为一个比较,主要目的是让大家经过对比之后,使自己选择哪一款`CSS预处理器`语言有所方向和帮助。


### 八、CSS预处理器的高级应用


我们知道,`Sass`、`LESS`和`Stylus`都具有变量、混合、嵌套、函数和作用域等特性,但这些特性都是一些普通的特性。其实除了这些特性之外,他们还拥有一些很有趣的特性有助于我们的开发,例如条件语句、循环语句等。接下来,我们同样从使用上来对比一下这三款`CSS预处理器`语言在这方面应用又有何不同异同。


#### 8.1 条件语句


说到编程,对于编程基本控制流,大家并不会感到陌生,除了循环就是条件了。条件提供了语言的可控制,否则就是纯粹的静态语言。提供的条件有导入、混合、函数以及更多。在编程语言中常见的条件语句:



if/else if/else


`if`表达式满足(`true`)的时候执行后面语句块,否则,继续后面的`else if`或`else`。


在这三款`CSS3预处理器`语言中都具有这种思想,只不过`LESS`中表达的方式略有不同,接下来我们依次看看他们具体如何使用。


##### 8.1.1 Sass 条件语句


`Sass`样式中的条件语句和其他编程语言的条件语句非常相似,在样式中可以使用“`@if`”来进行判断:



p {
@if 1 + 1 == 2 { border: 1px solid; }
@if 5 < 3 { border: 2px dotted; }
@if null { border: 3px double; }
}


编译出来的CSS:



p {
border: 1px solid;
}


在`Sass`中条件语句还可以和`@else if`、`@else`配套使用:



$type: monster;
p {
@if $type == ocean {
color: blue;
} @else if $type == matador {
color: red;
} @else if $type == monster {
color: green;
} @else {
color: black;
}
}


转译出来的`CSS`:



p {color:green;}


##### 8.1.2 Stylus 条件语句


`Stylus`条件语句的使用和其他编程语言的条件语句使用基本类似,不同的是他可以在样式省略大括号(`{}`):



box(x, y, margin = false)
padding y x
if margin
margin y x
body
box(5px, 10px, true)


`Stylus`同样可以和`else if`、`else`配套使用:



box(x, y, margin-only = false)
if margin-only
margin y x
else
padding y x


`Stylus`除了这种简单的条件语句应用之外,他还支持后缀条件语句。这就意味着`if`和`unless`(熟悉Ruby程序语言的用户应该都知道unless条件,其基本上与if相反,本质上是“`(!(expr))`”)当作操作符;当右边表达式为真的时候执行左边的操作对象。


例如,我们定义了`negative()`来执行一些基本的检查。下面我们使用块式条件:



negative(n)
unless n is a ‘unit’
error(‘无效数值’)
if n < 0
yes
else
no


接下来,我们利用后缀条件让我们的方法简洁:



negative(n)
error(‘无效数值’) unless n is a ‘unit’
return yes if n < 0
no


当然,我们可以更进一步。如这个“`n < 0 ? yes : no`”可以用布尔代替:“`n < 0`”。后缀条件适合于大多数的单行语句。如“`@import,@charset`”混合书写等。当然,下面所示的属性也是可以的:



pad(types = margin padding, n = 5px)
padding unit(n, px) if padding in types
margin unit(n, px) if margin in types

body
pad()

body
pad(margin)

body
apply-mixins = true
pad(padding, 10) if apply-mixins


上面代码转译出来的`CSS`:



body {
padding: 5px;
margin: 5px;
}
body {
margin: 5px;
}
body {
padding: 10px;
}


##### 8.1.3 LESS 条件语句


`LESS`的条件语句使用有些另类,他不是我们常见的关键词`if`和`else if`之类,其实现方式是利用关键词“`when`”。



.mixin (@a) when (@a >= 10) {
background-color: black;
}
.mixin (@a) when (@a < 10) {
background-color: white;
}
.class1 { .mixin(12) }
.class2 { .mixin(6) }


转译出来的`CSS`:



.class1 {
background-color: black;
}
.class2 {
background-color: white;
}


利用`When`以及`<、>、=、<=、>=`是十分简单和方便的。`LESS`并没有停留在这里,而且提供了很多类型检查函数来辅助条件表达式,例如:`iscolor`、`isnumber`、`isstring`、`iskeyword`、`isurl`等等。



.mixin (@a) when (iscolor(@a)) {
background-color: black;
}
.mixin (@a) when (isnumber(@a)) {
background-color: white;
}
.class1 { .mixin(red) }
.class2 { .mixin(6) }


转译出来的CSS



.class1 {
background-color: black;
}
.class2 {
background-color: white;
}


另外,`LESS`的条件表达式同样支持`AND`和`OR`以及`NOT`来组合条件表达式,这样可以组织成更为强大的条件表达式。需要特别指出的一点是,`OR`在`LESS`中并不是`or`关键词,而是用,来表示`or`的逻辑关系。



.smaller (@a, @b) when (@a > @b) {
background-color: black;
}
.math (@a) when (@a > 10) and (@a < 20) {
background-color: red;
}
.math (@a) when (@a < 10),(@a > 20) {
background-color: blue;
}
.math (@a) when not (@a = 10) {
background-color: yellow;
}
.math (@a) when (@a = 10) {
background-color: green;
}

.testSmall {.smaller(30, 10) }
.testMath1 {.math(15)}
.testMath2 {.math(7)}
.testMath3 {.math(10)}


转译出来的CSS



.testSmall {
background-color: black;
}
.testMath1 {
background-color: red;
background-color: yellow;
}
.testMath2 {
background-color: blue;
background-color: yellow;
}
.testMath3 {
background-color: green;
}


#### 8.2 循环语句


`Sass`和`Stylus`还支持`for`循环语句,而`LESS`并没支持`for`循环语句,但值得庆幸的是,在`LESS`中可以使用`When`来模拟出`for`循环的特性。


##### 8.2.1 Sass 循环语句


`Sass`中使用`for`循环语句需要使用`@for`,并且配合“`from`”和“`through`”一起使用,其基本语法:



@for $var from through {语句块}


我们来看一个简单的例子:



@for KaTeX parse error: Expected '}', got '#' at position 30: …gh 3 { .item-#̲{i} { width: 2em * $i; }
}


转译出来的CSS代码:



.item-1 { width: 2em; }
.item-2 { width: 4em; }
.item-3 { width: 6em; }


在`Sass`中循环语句除了`@for`语句之外,还有`@each`语句和`@while`语句


`@each`循环语法:



@each $var in {语句块}




**web浏览器中的javascript**

*   客户端javascript
*   在html里嵌入javascript
*   javascript程序的执行
*   兼容性和互用性
*   可访问性
*   安全性
*   客户端框架
*   **[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

![](https://img-blog.csdnimg.cn/img_convert/ed2c4f9602fb053965a21c047d1291e6.png)  

**window对象**

*   计时器

*   浏览器定位和导航

*   浏览历史

*   浏览器和屏幕信息

*   对话框

*   错误处理

*   作为window对象属性的文档元素

![](https://img-blog.csdnimg.cn/img_convert/81adbbfdefca6b401d7dc4e6acd9207d.png)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值