博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sass入门
阅读量:7178 次
发布时间:2019-06-29

本文共 3572 字,大约阅读时间需要 11 分钟。

同步发布在

安装

Sass是基于ruby的,要先安装ruby环境。, ruby安装好以后用以下命令安装sass

gem install sasssass -v //检查是否安装成功

接下来就可以学习sass了

使用

sass提供命令把scss转换成css;sass文件扩展名有2种,sass和scss。

  1. sass是以严格的语法规则来书写的,不带大括号"{}"和分号";"

  2. scss则是和css类似的语法方式书写的。

这里我们用学习成本低的,适合开发者入手的scss学起。

编译

准确的说只是个转换而已,把sass或scss转换成css。

//通过以下命令把scss 转换成 csssass input.scss output.css

但是在实际项目里面不可能只有一个css,而且css改动非常频繁,每次改动岂不是要进行转换一次?

sass提供监听命令,--watch 可以监听一个或者整个目录的scss的变化,每次保存(并且有变动scss都进行转换;通过以下命令:

//意思是把LearnSass目录下的scss全部转换成css,然后保存在LearnCss目录下sass --watch LearnSass:LearnCss

SASS开源社区提供一个,以下例子都可以运行。

开始学习sass的语法

变量

用来存储一些重复的CSS值(在整个站点中一致的值),sass用$定义变量:

$font-stack:    Helvetica, sans-serif;$primary-color: #333;body {  font: 100% $font-stack;  color: $primary-color;}

$primary-color: 变量的一致性可以使得在改变颜色后不用去整个站点替换,只需要改变这个变量的值即可。

编译后,如下:

body {    font: 100% Helvetica, sans-serif;    color: #333;}

嵌套

Sass可以明确的体现层次关系:

nav{    ul{        list-style: none;    }    li{        display: inline-block;    }    a{        display: block;        padding: 6px 12px;        text-decoration: none;    }}

转换后的css:

nav ul {    list-style: none;}nav li {    display: inline-block;}nav a {    display: block;    padding: 6px 12px;    text-decoration: none;}

很明显Sass的写法更容易体现HTML的层次关系。

Partials

有时候你也许不需要每个scss文件都去转换成css,那么Sass定义了一个规则,用"_"下划线开头的Sass文件则不会被转换。

比如用到:

@import '_partials';

** 导入一个css,_partials后缀scss可以省略,但是单引号必须要有!**

导入

//_partials.scss文件html,body,ul,ol{    margin: 0;    padding: 0;}body {    background-color: $back-color;    font-family: $font-stack;}
//Basics.scss文件$font-stack: "Microsoft Yahei";$back-color: #eee;@import '_partials';

最终看到的css文件是这样的:

//Basics.css文件html,body,ul,ol {    margin: 0;    padding: 0;}body {    background-color: #eee;    font-family: "Microsoft Yahei";}

可以看到在主scss文件中的变量在导入的scss文件中可以使用

Mixin

有点像是一个函数。

现在css3各大浏览器的写法都不一样,一条样式要写3,4遍麻烦……
用Mixin生成每个浏览器供应商的前缀。

@mixin border-radius($radius) {  -webkit-border-radius: $radius;     -moz-border-radius: $radius;      -ms-border-radius: $radius;          border-radius: $radius;}//使用@include命令,调用这个mixin。.box {     @include border-radius(10px);     width: 100px;    height: 60px;    border: 1px solid;}

@include命令用来调用定义的 Mixin。

对应的css:

.box {    -webkit-border-radius: 10px;       -moz-border-radius: 10px;        -ms-border-radius: 10px;            border-radius: 10px;     width: 100px;    height: 60px;    border: 1px solid;}

继承

使用@extend命令可以引用一个选择器的样式。

.message {    border: 1px solid #ccc;    padding: 10px;    color: #333;}.success {    @extend .message;    border-color: green;}.error {    @extend .message;    border-color: red;}.warning {    @extend .message;    border-color: yellow;}

这样的写法可以避免HTML元素上多写类名。这样合理的体现了代码重用。

转换后的css:

.message,.success,.error,.warning {    border: 1px solid #ccc;    padding: 10px;    color: #333;}.success {    border-color: green;}.error {    border-color: red;}.warning {    border-color: yellow;}

计算

Sass提供简单的计算,提供标准运算符:+, -, *, /,和%。

.container { width: 100%; }.roleHeight{    height: 100px;    border: 1px solid;    margin-top: 20px;}article[role="main"] {    @extend .roleHeight;    float: left;    width: 600px / 960px * 100%;}aside[role="complementary"] {    @extend .roleHeight;    float: right;    width: 300px / 960px * 100%;}

这是最经典的左右布局。转换后的css:

.container {    width: 100%;}.roleHeight,article[role="main"],aside[role="complementary"] {    height: 100px;    border: 1px solid;    margin-top: 20px;}article[role="main"] {    float: left;    width: 62.5%;}aside[role="complementary"] {    float: right;    width: 31.25%;}

到这里相信对Sass的用法也简单了解了,以后的文章会具体介绍下,在项目中的实际使用。

转载于:https://www.cnblogs.com/cyclone77/p/6207993.html

你可能感兴趣的文章
世界观的内涵是认识论模型
查看>>
Cocos2d-x 3.1.1 Lua演示样例 ActionsProgressTest(进度条)
查看>>
win 下g++ 安装、环境配置等
查看>>
android:如何通过自定义工程模板让新建的工程都默认支持lambda表达式
查看>>
js日期格式化函数
查看>>
Spring 之 控制反转(IoC), 依赖注入(DI)和面向切面(AOP)
查看>>
在字符串S1中删除字符串S2中所包含的字符【转】
查看>>
微软工作这二年
查看>>
二叉搜索树
查看>>
复旦版最佳医院排行 沪21家医院入选全国百佳
查看>>
PHP file_get_contents设置超时处理方法
查看>>
ylbtech-LanguageSamples-XMLdoc
查看>>
27 Best Free Eclipse Plug-ins for Java Developer to be Productive
查看>>
Android应用icon和闪屏splash的尺寸
查看>>
C++强制类型转换操作符 dynamic_cast
查看>>
Image Lazy Load:那些延时加载图片的开源插件(jQuery)
查看>>
VC++ 中ListCtrl经验总结
查看>>
我在tmux中最不可少的配置: 用鼠标切换窗口/调节分屏大小
查看>>
tamper绕WAF详解
查看>>
Static Classes and Static Class Members
查看>>