sass使用笔记_html/css_WEB-ITnose
sass(Syntactically Awesome Style Sheets)是一个css预处理器,提供了许多便利的写法。sass坚持了DRY(don`t repeat yourself)的原则,它可以提高css的开发效率,并使css更利于维护。
1、安装
安装gulp-sass插件安装命令如下
npm install gulp-sass --save-dev
2、使用
sass有两种后缀文件名.sass和.scss
使用.sass的时候不能使用大括号,使用回车和至少两个空格来区分选择器和规则
示例:
p color:#f00;b background:#ddd;
使用.scss时,基本和平时写css差不多,使用大括号来区分选择器和规则。正因为scss可以兼容css,更符合我们平常的书写习惯,所以一般我们都采用scss为后缀名。
示例:
p{ color:#f00;}b{ background:#ddd;}
gulp-sass的使用
var gulp = require('gulp');var gulp-sass = require('gulp-sass');gulp.task('sass',function(){ gulp.src('./sass/**/*.scss') .pipe(sass(outputStyle:'compressed')) .pipe(gulp.dest('./css'));});
以上为gulp-sass的基本用法,即引用gulp和gulp-sass插件,然后读取scss文件进行编译,输出格式为compressed,并将编译成功的css文件输出到css文件夹。
欲了解更多关于gulp-sass插件的用法,请点击这里跳转
3、基本用法
3.1 变量
所有变量以$开头,sass使用冒号(:)来定义一个变量。
$blue:#1875e7;div{ color:$blue;}
以上代码将被编译成
div{color:#1875e7;}
如果变量需要嵌在字符串中,就必须写在#{}中
$side:left; div{ border-#{side}-radius:5px;}
以上代码将被编译成
div{border-left-radius:5px;}
3.2计算功能
sass允许在代码中使用算式。sass中的算术操作符有:
- 加(+)
- 减(-)
- 乘(*)
- 除(/)
- 取余(%)
注意上面的操作符只能用于单位相同的数值运算。
h2{ font-size:5px+2em;//错误!!!编译报错 font-size:5px+2;//7px}
此外,两个相同单位的数值相乘无法生成有效的css
h2{font-size:5px*2px;}//invalid css
/操作符本身就是css简写语法的一部分如:font:16px/24px Arial;但是sass重载了这个运算符,用于执行除法操作,下面让我们看它是如何解析的:
h2{ //不执行除法操作,原样输出 font-size:16px/24px; //使用差值语法之后,原样输出 font-size:#{$base-size}/#{$line-height}; //使用括号包裹之后,执行除法操作 font-size:(16px/24px); //使用变量,执行除法操作 font-size:$base-size/$line-height; //调用函数,执行除法操作 opacity:random(4)/5; //使用算术操作符,执行除法操作 padding-right:2px/4px+3px;}
操作符的优先级:
- 括号优先级最高
- 乘法,除法优先于加法,减法
写一个简单的计算示例:
$var:2;body{ margin:(14px/2); top:50px+100px; right:$var*10%;}
以上代码将被编译成
body{margin:7px;top:150px;right:20%;}
3.3嵌套
就是我写代码是最最常用的用法ps:属性也可以嵌套,比如:
p{ border:{ color:red; }}
注意:border后面必须加上冒号
3.4注释
sass中有两种注释
//......(编译后被省略)/*......*/(保留到编译后)
4、代码的重用
4、1继承
sass允许一个选择器继承另一个选择器
.class1{}.class2{ @extend .class1; .......}
4.2 Mixin
Mixin有点像C语言的宏,是可以重用的代码块使用@Mixin定义一个代码块
@mixin left{ float:left; margin-left:10px;}
使用@include命令,调用mixin
div{ @include left}
mixin的强大之处在于,可以指定参数和缺省值
@mixin left($value:10px){ float:left; margin-right:$value;}
使用的时候加入参数
div{ @include left(20px);}
4.3 颜色函数
sass提供了一些内置的颜色函数,以便生成系列颜色
lighten(#ccc,10%);darken(#ccc,10%);grayscale(#ccc);complement(#ccc);
4.4插入文件
@import命令,插入外部文件@import "......";@import可以导入css文件,也可以导入sass文件导入css文件,仍是以@import存在,这种方式在css中是不推荐使用的,因为,@import引用的CSS会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢的时候还挺明显。导入sass文件的时候,在编译的时候实际是把两个sass文件合并,编译成一个css文件。
5、高级用法
5、1条件语句
@if...@else....
@mixin txt($weight){ @if $weight == bold {font-weight:bold;} @else if $weight == light {font-weight:100;} @else if $weight == heavy {font-weight:900;} @else {font-size:normal;}}.txt1{ @include txt(bold); }.txt2{ @include txt(light); }.txt3{ @include txt(heavy); }
以上代码将被编译成:
.txt1{font-weight:blod;}.txt2{font-weight:100;}.txt3{font-weight:900;}
5、2循环语句
@for@for有两种使用方式:from start to end,遍历范围[start,end-1]from start through end,遍历范围[start,end]
@for $i from 1 to 10{ .border-#{$i}{ border:#{$i}px solid blue; }}
这段sass代码会被编译成
.border-1{border:1px solid blue;}.border-2{border:2px solid blue;}.border-3{border:3px solid blue;}.border-4{border:4px solid blue;}.border-5{border:5px solid blue;}.border-6{border:6px solid blue;}.border-7{border:7px solid blue;}.border-8{border:8px solid blue;}.border-9{border:9px solid blue;}
@while
$i:1; @while $i<5{ .item-#{$i}{width:2em*$i;} $i:$i+1;}
以上代码将被编译成
.item-1 {width: 2em; }.item-2 {width: 4em; }.item-3 {width: 6em; }.item-4 {width: 8em; }
@each@each指令同样可以用于循环输出,和@for的区别在于,@each是通过遍历list或者map实现循环输出的。
@each $member in a,b,c,d{ .#{$member}{ background-image:url("/images/#{$member}.jpg"); }}
以上代码将被编译成
.a{background-image:url("/image/a.jpg");}.b{background-image:url("/image/b.jpg");}.c{background-image:url("/image/c.jpg");}.d{background-image:url("/image/d.jpg");}
5、3自定义函数
sass允许用户自定义函数
@function double($n){ @return $n*2;}div{ width:double(5px);}
以上代码将被编译成
div{width:10px}
在我们的项目中经常会被用来计算百分比,或者根据html元素的font-size大小来计算rem比如
@function to_rem($px){ @return $px/50 + rem;}.a{width:to_rem(30);}
以上代码将被编译成:
.a{width:0.6rem}
本文整理自网络及《sass与compass实战》,之后将继续完善更新。参考文章:Sass的表达式和控制命令

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

HTML、CSS和JavaScript在網頁開發中的角色分別是:HTML負責內容結構,CSS負責樣式,JavaScript負責動態行為。 1.HTML通過標籤定義網頁結構和內容,確保語義化。 2.CSS通過選擇器和屬性控製網頁樣式,使其美觀易讀。 3.JavaScript通過腳本控製網頁行為,實現動態和交互功能。

HTML是構建網頁結構的基石。 1.HTML定義內容結構和語義,使用、、等標籤。 2.提供語義化標記,如、、等,提升SEO效果。 3.通過標籤實現用戶交互,需注意表單驗證。 4.使用、等高級元素結合JavaScript實現動態效果。 5.常見錯誤包括標籤未閉合和屬性值未加引號,需使用驗證工具。 6.優化策略包括減少HTTP請求、壓縮HTML、使用語義化標籤等。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增強WebevebDevelopment。
