sass学习研究_html/css_WEB-ITnose
这篇文章是算是前两天学习sass的一个摘要和总结吧,简单记载下。希望对大家有所帮助
对于什么是sass,我想现在大家可能都有所了解了。其实就是css的一种开发工具,或者也可以说是将css编程化。其实和less是有很大的相似点的。或者说几乎都是相同的。但是对于这两种的高级用法,其实个人更加的偏向于sass!
关于sass的安装以及编译之类的这个东西上网一查一大把的就不多说了
我这里是用koala编译的。
下面简单的总结下sass的几个特点吧。
1、变量:
sass中允许使用变量,在sass中变量都是以$开头的。
$blue:#249804;
div{
color:$blue;
}
如果需要将变量嵌入在字符串中则就必须写在#{}中
类似于我在汇联易中自定义的栅格宽度的sass写法:
@mixin colWidth($value:20%) {
-webkit-box-flex: 0;
-webkit-flex: 0 0 $value;
-moz-box-flex: 0;
-moz-flex: 0 0 $value;
-ms-flex: 0 0 $value;
flex: 0 0 $value;
}
$i:1;
@while $i
.col-#{$i}{
@include colWidth($i*1%);
$i:$i+1;
}
}
//这里用到的Mixin和循环后面会讲到。
变量非常的简单,基本也就这样。
2、计算功能
这个非常的简单,举个例子就可以了
在上面的例子中也用到了,比如$i*1%;
再比如:margin:(10px+2px);
3、嵌套
这里的嵌套给我的感觉就类似于dom树的树状结构似的。
很简单,举个例子就可以了
.hly{
.expense-type-icon-list {
box-shadow: inset 0px 3px 5px 3px rgba(0, 0, 0, .26);
.scroll {
float: left;
.scroll-content-container {
width: 35em;
padding: 8px 10px;
float: left;
img {
float: left;
margin-left: 5px;
}
img:first-child {
margin-left: 0px;
}
}
}
}
}
对应的生成出来的css:
.hly .create-invoice .expense-type-icon-list {
box-shadow: inset 0px 3px 5px 3px rgba(0, 0, 0, 0.26); }
.hly .create-invoice .expense-type-icon-list .scroll {
float: left; }
.hly .create-invoice .expense-type-icon-list .scroll .scroll-content-container {
width: 35em;
padding: 8px 10px;
float: left; }
.hly .create-invoice .expense-type-icon-list .scroll .scroll-content-container img {
float: left;
margin-left: 5px; }
.hly .create-invoice .expense-type-icon-list .scroll .scroll-content-container img:first-child {
margin-left: 0px; }
4、继承
sass允许一个选择器去继承另一个选择器,比如现在有个class1,
.class1{
border:1px soild #ddd;
}
现在有class2要继承class1的属性,则用@extend命令
.class2{
@extend .class1;
font-size:1.5em;
}
5、Mixin
这个可以理解为宏定义,angularjs中的指令,在变量的举例中就有说到了。这里再具体的说下
这里我们通过一个mixin来定义一个代码块
还是拿上面的例子:
@mixin colWidth($value:20%) {
-webkit-box-flex: 0;
-webkit-flex: 0 0 $value;
-moz-box-flex: 0;
-moz-flex: 0 0 $value;
-ms-flex: 0 0 $value;
flex: 0 0 $value;
}
用@include来调用它。
div{
@include colWidth(30%);
}
看到这里大家可能会有个疑问,为什么这里的mixin中有个参数在里面?
其实这个也就是Mixin的强大之处了(当然,你也可以不指定)
当指定了以后,我们可以传入不同的值,当然也可以缺省,当缺省的时候就是默认的指,例如上面的例子就是20%
6、颜色函数
说实话这个我不是很懂,因为基本我觉得是用不到的。简单从网上找了些例子:
lighten(#cc3, 10%) // #d6d65c
darken(#cc3, 10%) // #a3a329
grayscale(#cc3) // #808080
complement(#cc3) // #33c
大家这个也可以多查查。
7、插入文件
简单的一个命令@import
@import("path/fileName.scss");
如果是.css的文件
@import "fileName.css";
8、条件语句
从这里开始应该可以说是sass的一些高级的用法了吧
@if可以用来判断
div{
@if 1+2 ==3 {border:1px soild #ddd};
@if 3
}
当然,既然存在if,必然少不了else!用法如下:
@if lightness($color) > 30% {
background-color: #000;
} @else {
background-color: #fff;
}
9、循环语句
sass支持for循环,while循环以及each命令
for循环:
@for $i form 1 to 10{
.class-#{i}{
margin-left:#{i}px;
}
}
while循环(同样是汇联易中的例子):
@mixin colWidth($value:20%) {
-webkit-box-flex: 0;
-webkit-flex: 0 0 $value;
-moz-box-flex: 0;
-moz-flex: 0 0 $value;
-ms-flex: 0 0 $value;
flex: 0 0 $value;
}
$i:1;
@while $i
.col-#{$i}{
@include colWidth($i*1%);
$i:$i+1;
}
}
each例子:
@each $member in a, b, c, d {
.#{$member} {
background-image: url("/image/#{$member}.jpg");
}
}
10、自定义函数
当然也是有特殊符号的:@function @return
@function double($i){
@return $i*2;
}
div{
margin:double(2em);
}
最后说一句,在项目中尽量还是少用sass的高级用法,因为可能项目跑起来编译特别慢,甚至会卡在高级用法中编译不出sass别的样式
比如我自定的栅格用的Mixin,这个在项目能够很快被编译,但是配合了while循环就会卡死。后来我是引入koala编译出来的css文件引入到项目中的~

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本文讨论了HTML< Progress>元素,其目的,样式和与< meter>元素。主要重点是使用< progress>为了完成任务和LT;仪表>对于stati

本文讨论了html< datalist>元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

本文讨论了HTML< meter>元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了< meter>从< progress>和前

本文解释了HTML5< time>语义日期/时间表示的元素。 它强调了DateTime属性对机器可读性(ISO 8601格式)的重要性,并在人类可读文本旁边,增强Accessibilit

本文讨论了使用HTML5表单验证属性,例如必需的,图案,最小,最大和长度限制,以直接在浏览器中验证用户输入。

本文讨论了视口元标签,这对于移动设备上的响应式Web设计至关重要。它解释了如何正确使用确保最佳的内容缩放和用户交互,而滥用可能会导致设计和可访问性问题。

本文讨论了< iframe>将外部内容嵌入网页,其常见用途,安全风险以及诸如对象标签和API等替代方案的目的。
