微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sass学习笔记

参考《》《》强烈推荐后者,良心课程。

文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名 语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。

<h1 id="安装" data-source-line="6">安装

安装ruby   

安装 sass 

更新   

卸载   

编译 

实时编译 

文件编译   

输出风格:

嵌套输出方式 nested  nested 

展开输出方式 expanded

紧凑输出方式 compact

压缩输出方式 compressed

语法

语法比较多 只写几条看起来常用的吧。

1. 注释

显示这些注释

<span style="color: #008000;">/<span style="color: #008000;">多行注释 在css中可用<span style="color: #008000;">/

2. 变量 

全局变量 $variableName: variableValue;

selector {<span style="color: #ff0000;">
// 局部变量 会覆盖全局变量
$variableName:<span style="color: #0000ff;"> variableValue;<span style="color: #ff0000;">
// 使用变量
label:<span style="color: #0000ff;"> $variableName;
}<span style="color: #800000;">
// !default 如果这个变量被声明赋值了,那就用它声明的值,否则就用这个认值。
$variableName: variableValue !default;
// 全局变量
$variableName: variableValue !global;

// 一般我们定义的变量都为属性值,可直接使用,但是如果变量作为属性或在某些特殊情况下等则必须要以 #{<span style="color: #ff0000;">$variables}<span style="color: #800000;">形式使用。
//应用于class和属性
.border-#{<span style="color: #ff0000;">$borderDirection}{<span style="color: #ff0000;">
border-#{$borderDirection}<span style="color: #800000;">:1px solid #ccc;
}

3. 嵌套

{:; }header nav a {<span style="color: #ff0000;">
color
:<span style="color: #0000ff;">green
;
}
<span style="color: #008000;">/
<span style="color: #008000;"> 用scss表示
<span style="color: #008000;">*/
<span style="color: #800000;">
nav
{<span style="color: #ff0000;">
a {
color:<span style="color: #0000ff;"> red;<span style="color: #ff0000;">

header &amp; { // &amp; 表示当前选择器
  color</span>:<span style="color: #0000ff;"&gt;green</span>;
}<span style="color: #800000;"&gt;

}
}

<span style="color: #008000;">/<span style="color: #008000;"> 属性嵌套 <span style="color: #008000;">/<span style="color: #800000;">
.Box {<span style="color: #ff0000;">
border-top:<span style="color: #0000ff;"> 1px solid red;<span style="color: #ff0000;">
border-bottom:<span style="color: #0000ff;"> 1px solid green;
}
<span style="color: #008000;">/<span style="color: #008000;"> 在 Sass 中我们可以这样写:<span style="color: #008000;">*/<span style="color: #800000;">
.Box {<span style="color: #ff0000;">
border:<span style="color: #0000ff;"> {
top: 1px solid red;<span style="color: #ff0000;">
bottom:<span style="color: #0000ff;"> 1px solid green;
}<span style="color: #800000;">
}

<span style="color: #008000;">/<span style="color: #008000;"> 伪类/伪元素 嵌套 <span style="color: #008000;">/<span style="color: #800000;">
.clearfix{<span style="color: #ff0000;">
&:<span style="color: #0000ff;">before,&:after {
content:"";<span style="color: #ff0000;">
display:<span style="color: #0000ff;"> table;
}<span style="color: #800000;">
&:after {<span style="color: #ff0000;">
clear:<span style="color: #0000ff;">both;<span style="color: #ff0000;">
overflow:<span style="color: #0000ff;"> hidden;
}<span style="color: #800000;">
&:hover {<span style="color: #ff0000;">
...
}<span style="color: #800000;">
}

4. 混合宏 @mixin @include

用法和C语言的宏基本类似。可以带参数。

{:;:; } {:;:; } 数量值大于或等于“ 1 ”时,表示有多个阴影值,反之调用认的参数值“ 0 0 4px rgba(0,.3) ”。Box-shadow($shadow...) {= 1 { @include prefixer(Box-shadow,$shadow); }{:;Box-shadow,$shadow); }调用宏 {}Box-center {}

5. 继承 @include & 占位符 %

继承一个类的所有属性

{:; }{:;:; 添加当前选择器 .btn,.btn-primary } 调用时才生效 {:; }{:; }{}

6. 数学运算

可以直接在属性值的地方使用数学运算符

{:;:; }

7. 引入文件 @import

 文件 

可以在文件名前加下划线如    防止生成.css文件,引入时通过  就可以引入,所以在同一个目录不能同时存在带下划线和不带下划线的同名文件

如果文件的扩展名是 .css。 如果文件名以    开头。 如果文件名是 url()。 如果 @import 包含了任何媒体查询(media queries)。它会被编译成 CSS 的 @import 规则。

也可以通过一个 @import 引入多个文件。  

实例

项目目录()

_style.scss,fonts是下载的字体文件(https://icomoon.io/app/#/select)

没想过写个CSS也要写这么多注释。。。

_mixin.scss

属性 时间 @mixin transition($transition) {:;:;:;:;:; }{:;:;:;:;:; }{:;:;:;:;:; }{:;:; }

index.scss

$toolbar-size: 50px;
.toolbar
{<span style="color: #ff0000;">
position:<span style="color: #0000ff;"> fixed;<span style="color: #ff0000;"> // 固定定位
right:<span style="color: #0000ff;"> 10px;<span style="color: #ff0000;">
bottom:<span style="color: #0000ff;"> 10px;
}<span style="color: #800000;">
.toolbar-item {<span style="color: #ff0000;">
position:<span style="color: #0000ff;"> relative;<span style="color: #ff0000;"> // 子代使用absulote定位 所以这里要设置relative定位
display:<span style="color: #0000ff;"> block;<span style="color: #ff0000;"> // 因为a标签是内联元素 认不能设置宽高
margin-top:<span style="color: #0000ff;"> 1px;<span style="color: #ff0000;"> // 几个小方块的间距为1px
width:<span style="color: #0000ff;"> $toolbar-size;<span style="color: #ff0000;">
height:<span style="color: #0000ff;"> $toolbar-size;<span style="color: #ff0000;">

&amp;</span>:<span style="color: #0000ff;"&gt;after {
    content: ''</span>;<span style="color: #ff0000;"&gt;
    position</span>:<span style="color: #0000ff;"&gt; absolute</span>;<span style="color: #ff0000;"&gt;
    right</span>:<span style="color: #0000ff;"&gt; $toolbar-size</span>;<span style="color: #ff0000;"&gt;
    b<a href="https://www.jb51.cc/tag/ott/" target="_blank" class="keywords">ott</a>om</span>:<span style="color: #0000ff;"&gt; 0</span>;<span style="color: #ff0000;"&gt;
    width</span>:<span style="color: #0000ff;"&gt; 300px</span>;<span style="color: #ff0000;"&gt;
    height</span>:<span style="color: #0000ff;"&gt; 300px</span>;<span style="color: #ff0000;"&gt;
    background-repeat</span>:<span style="color: #0000ff;"&gt; no-repeat</span>;<span style="color: #ff0000;"&gt;
    white-space</span>:<span style="color: #0000ff;"&gt; pre</span>;<span style="color: #ff0000;"&gt;
    @include opacity(0);
    @include scale(0.01);
    @include transition(all 1s);
    @include transform-origin(95% 95%);
</span>}<span style="color: #800000;"&gt;

&amp;:hover </span>{<span style="color: #ff0000;"&gt;    // 当鼠标经过的时候 要向上移动<a href="https://www.jb51.cc/tag/xianshi/" target="_blank" class="keywords">显示</a><a href="https://www.jb51.cc/tag/wenzi/" target="_blank" class="keywords">文字</a>说明
    .toolbar-btn {
        &amp;</span>:<span style="color: #0000ff;"&gt;before {
            top: -$toolbar-size</span>;
        }<span style="color: #800000;"&gt;
        &amp;:after </span>{<span style="color: #ff0000;"&gt;
            top</span>:<span style="color: #0000ff;"&gt; 0</span>;
        }<span style="color: #800000;"&gt;
    }
    &amp;:after </span>{<span style="color: #ff0000;"&gt;
        @include opacity(1);    // 设置透明度变为完全不透明
        @include scale(1);      // 设置大小变为100%
    </span>}<span style="color: #800000;"&gt;
}

}
.toolbar-item-qq {<span style="color: #ff0000;">
&:<span style="color: #0000ff;">after {
background-image: url(../img/qq.png);<span style="color: #ff0000;">
width:<span style="color: #0000ff;"> 180px;<span style="color: #ff0000;">
height:<span style="color: #0000ff;"> 180px;
}<span style="color: #800000;">

.toolbar-btn </span>{<span style="color: #ff0000;"&gt;
    @extend .icon-qq;    // 继承字体样式 将 before 元素变为字体图标
    &amp;</span>:<span style="color: #0000ff;"&gt;before {
        color: #26b8f2</span>;
    }<span style="color: #800000;"&gt;

    &amp;:after </span>{<span style="color: #ff0000;"&gt;
        content</span>:<span style="color: #0000ff;"&gt; '加我\AQQ'</span>;<span style="color: #ff0000;"&gt; // \A 表示换行
    </span>}<span style="color: #800000;"&gt;
}

}
.toolbar-item-pay {<span style="color: #ff0000;">
&:<span style="color: #0000ff;">after {
background-image: url(../img/pay.png);
}<span style="color: #800000;">

.toolbar-btn </span>{<span style="color: #ff0000;"&gt;
    @extend .icon-paypal;    // 继承字体样式 将 before 元素变为字体图标
    &amp;</span>:<span style="color: #0000ff;"&gt;before {
        color: #f3281b</span>;
    }<span style="color: #800000;"&gt;

    &amp;:after </span>{<span style="color: #ff0000;"&gt;
        content</span>:<span style="color: #0000ff;"&gt; '为我\A捐款'</span>;<span style="color: #ff0000;"&gt; // \A 表示换行
    </span>}<span style="color: #800000;"&gt;
}

}
.toolbar-item-wechat {<span style="color: #ff0000;">
&:<span style="color: #0000ff;">after {
content: "\A不告\A诉你";<span style="color: #ff0000;">
color:<span style="color: #0000ff;"> #fff;<span style="color: #ff0000;">
font-size:<span style="color: #0000ff;"> 20px;<span style="color: #ff0000;">
line-height:<span style="color: #0000ff;"> 1.2;<span style="color: #ff0000;">
text-align:<span style="color: #0000ff;"> center;<span style="color: #ff0000;">
background-color:<span style="color: #0000ff;"> #000;<span style="color: #ff0000;">
width:<span style="color: #0000ff;"> 100px;<span style="color: #ff0000;">
height:<span style="color: #0000ff;"> 100px;
}<span style="color: #800000;">

.toolbar-btn </span>{<span style="color: #ff0000;"&gt;
    @extend .icon-wechat;    // 继承字体样式 将 before 元素变为字体图标
    &amp;</span>:<span style="color: #0000ff;"&gt;before {
        color: #46b942</span>;
    }<span style="color: #800000;"&gt;

    &amp;:after </span>{<span style="color: #ff0000;"&gt;
        content</span>:<span style="color: #0000ff;"&gt; '加我\A微信'</span>;<span style="color: #ff0000;"&gt; // \A 表示换行
    </span>}<span style="color: #800000;"&gt;
}

}
.toolbar-item-cool {<span style="color: #ff0000;">
.toolbar-btn {
@extend .icon-cool; // 继承字体样式 将 before 元素变为字体图标
&:<span style="color: #0000ff;">before {
color: #000;
}<span style="color: #800000;">

    &amp;:after </span>{<span style="color: #ff0000;"&gt;
        content</span>:<span style="color: #0000ff;"&gt; '我最\A可爱'</span>;<span style="color: #ff0000;"&gt; // \A 表示换行
    </span>}<span style="color: #800000;"&gt;
}

}
.toolbar-btn {<span style="color: #ff0000;">
&,&:<span style="color: #0000ff;">before,&:after {
width: $toolbar-size;<span style="color: #ff0000;">
height:<span style="color: #0000ff;"> $toolbar-size;<span style="color: #ff0000;">
position:<span style="color: #0000ff;"> absolute;<span style="color: #ff0000;">
left:<span style="color: #0000ff;"> 0;
}<span style="color: #800000;">

top: 0;
overflow: hidden;            // 让<a href="https://www.jb51.cc/tag/wenzi/" target="_blank" class="keywords">文字</a><a href="https://www.jb51.cc/tag/mo/" target="_blank" class="keywords">默</a>认位于溢出位置 然后将溢出部分隐藏
@extend [class^="icon-"];    // 继承字体的样式

&amp;:before,&amp;:after </span>{<span style="color: #ff0000;"&gt;
    content</span>:<span style="color: #0000ff;"&gt; ''</span>;<span style="color: #ff0000;"&gt;
    color</span>:<span style="color: #0000ff;"&gt; #fff</span>;<span style="color: #ff0000;"&gt;
    text-align</span>:<span style="color: #0000ff;"&gt; center</span>;<span style="color: #ff0000;"&gt;
    @include transition(top 1s);
</span>}<span style="color: #800000;"&gt;

&amp;:before </span>{<span style="color: #ff0000;"&gt;                   // <a href="https://www.jb51.cc/tag/mo/" target="_blank" class="keywords">默</a>认的图标<a href="https://www.jb51.cc/tag/xianshi/" target="_blank" class="keywords">显示</a>
    top</span>:<span style="color: #0000ff;"&gt; 0</span>;<span style="color: #ff0000;"&gt;
    background-color</span>:<span style="color: #0000ff;"&gt; #d0d6d9</span>;<span style="color: #ff0000;"&gt;
    font-size</span>:<span style="color: #0000ff;"&gt; 30px</span>;<span style="color: #ff0000;"&gt;
    line-height</span>:<span style="color: #0000ff;"&gt; $toolbar-size</span>;
}<span style="color: #800000;"&gt;

&amp;:after </span>{<span style="color: #ff0000;"&gt;                    // 鼠标悬浮时的<a href="https://www.jb51.cc/tag/wenzi/" target="_blank" class="keywords">文字</a><a href="https://www.jb51.cc/tag/xianshi/" target="_blank" class="keywords">显示</a>
    top</span>:<span style="color: #0000ff;"&gt; $toolbar-size</span>;<span style="color: #ff0000;"&gt;
    background-color</span>:<span style="color: #0000ff;"&gt; #98a1a6</span>;<span style="color: #ff0000;"&gt;
    font-size</span>:<span style="color: #0000ff;"&gt; 12px</span>;<span style="color: #ff0000;"&gt;
    padding-top</span>:<span style="color: #0000ff;"&gt; 12px</span>;<span style="color: #ff0000;"&gt;
    line-height</span>:<span style="color: #0000ff;"&gt; 1.2</span>;<span style="color: #ff0000;"&gt;
    white-space</span>:<span style="color: #0000ff;"&gt; pre</span>;<span style="color: #ff0000;"&gt;        // 为了实现<a href="https://www.jb51.cc/tag/wenzi/" target="_blank" class="keywords">文字</a>换行
</span>}<span style="color: #800000;"&gt;

}

index.html

Meta 默认显示 显示

显示效果

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐