由于没有办法在网络上找到适合顾客的模板,同时之前自己写css也没有很好的管理方式,最终选择了scss。

Nested

#main p {
color: #00ff00;
width: 97%; .redbox {
background-color: #ff0000;
color: #000000;
}
}
》》》》》》》》》》》》》》》》》》》》
#main p {
color: #00ff00;
width: 97%; }
#main p .redbox {
background-color: #ff0000;
color: #000000; }

注意被嵌套的写法,尽量不要嵌套太多层,这样在渲染时,会影响性能

引用父选择符: &

a {
font-weight: bold;
text-decoration: none;
&:hover { text-decoration: underline; }
body.firefox & { font-weight: normal; }
} 》》》》》》》》》》》》》》》》》》》》》》》》》》》》
a {
font-weight: bold;
text-decoration: none; }
a:hover {
text-decoration: underline; }
body.firefox a {
font-weight: normal; }

嵌套属性

.funky {
font: 2px/3px {
family: fantasy;
size: 30em;
weight: bold;
}
} 》》》》》》》》》》》》》》》》
.funky {
font: 2px/3px;
font-family: fantasy;
font-size: 30em;
font-weight: bold; }

分开font的属性是比较好管理的,尽管代码多了许多

Placeholder Selectors: %foo

//如果没有找到%extreme,就不会编译出东西
#context a%extreme {
color: blue;
font-weight: bold;
font-size: 2em;
}
//。notice 或者#notice 都可以接受
.notice {
@extend %extreme;
} 》》》》》》》》》》》》》》》》
#context a.notice {
color: blue;
font-weight: bold;
font-size: 2em; }

这是个好的处理方式,一般是使用在配搭属性,或tagName

Comments: /* */ and //

/*编译后看到我 */
body { color: black; } // 你看不到我
a { color: green; } 》》》》》》》》》》》》》》》》
/*编译后看到我 */
body {
color: black; } a {
color: green; }

SassScript

Interactive Shell

不知道。。。

Variables: $

$width: 5em;

》》》》》》》》》》》
#main {
width: $width;
}

如果你看到!取代$ , 或者 : 取代 = :,可以确定那是旧版本的,官方说已被弃用

数据类型

SassScript 支持六种主要的数据类型:

  • 数字(例如 1.21310px
  • 文本字符串,无论是否有引号(例如 "foo"'bar'baz、important
  • 颜色(例如 blue#04a3f9rgba(255, 0, 0, 0.5)
  • 布尔值(例如 truefalse
  • 空值(例如 null
  • 值列表,用空格或逗号分隔(例如 1.5em 1em 0 2emHelvetica, Arial, sans-serif

字符串

虽然说可以接受“”或没有引号,但在编译#{}时,就例外,这要注意

@mixin firefox-message($selector) {
body.firefox #{$selector}:before {
content: "Hi, Firefox users!";
}
} @include firefox-message(".header"); 》》》》》》》》》》》》》》
body.firefox .header:before {
content: "Hi, Firefox users!"; }

如果没有给引号,就error,因为.header 是class,而文本都是string,这就是要注意的

Lists

文章说他不常用,那我没好解释这功能了。

运算

所有数据类型都支持等式运算 (== and !=)。 另外,每种数据类型也有其支持的特殊运算符。

数字运算

加 +、减 -、乘 *、除 /和取模 %

数字也支持关系运算(<><=>=), 等式运算(==!=)被所有数据类型支持。

p {
width: 1in + 8pt;
} 》》》》》》》》》》》》》 p {
width: 1.111in; }
除法运算和 /
p {
font: 10px/8px; // 纯 CSS,不是除法运算
$width: 1000px;
width: $width/2; // 使用了变量,是除法运算
width: round(1.5)/2; // 使用了函数,是除法运算
height: (500px/2); // 使用了圆括号,是除法运算
margin-left: 5px + 8px/2px; // 使用了加(+)号,是除法运算
}
》》》》》》》》》》》》》》》》》
p {
font: 10px/8px;
width: 500px;
height: 250px;
margin-left: 9px; }

如果你希望在纯 CSS 中使用变量和 /, 你可以用 #{} 包住变量。 例如:

p {
$font-size: 12px;
$line-height: 30px;
font: #{$font-size}/#{$line-height};
}
》》》》》》》》》》》》》
p {
font: 12px/30px; }

颜色运算

p {
color: #010203 + #040506;
}
》》》》》》》
p {
color: #050709; }
----------------------- p {
color: #010203 * 2;
}
》》》》》》》
p {
color: #020406; } ----------------------- p {
color: rgba(255, 0, 0, 0.75) + rgba(0, 255, 0, 0.75);
}
》》》》》》》
p {
color: rgba(255, 255, 0, 0.75); } ----------------------- $translucent-red: rgba(255, 0, 0, 0.5);
p {
color: opacify($translucent-red, 0.3);
background-color: transparentize($translucent-red, 0.25);
}
》》》》》》》
p {
color: rgba(255, 0, 0, 0.9);
background-color: rgba(255, 0, 0, 0.25); } ----------------------- $translucent-red: rgba(255, 0, 0, 0.5);
$green: #00ff00;
div {
filter: progid:DXImageTransform.Microsoft.gradient(enabled='false', startColorstr='#{ie-hex-str($green)}', endColorstr='#{ie-hex-str($translucent-red)}');
}
》》》》》》》
div {
filter: progid:DXImageTransform.Microsoft.gradient(enabled='false', startColorstr=#FF00FF00, endColorstr=#80FF0000);
}

字符串运算

p {
cursor: e + -resize;
}
》》》》》》》》》》》
p {
cursor: e-resize; } ------------------------ p:before {
content: "Foo " + Bar;
font-family: sans- + "serif";
}
》》》》》》》》》》》
p:before {
content: "Foo Bar";
font-family: sans-serif; } ------------------------ p {
margin: 3px + 4px auto;
}
》》》》》》》》》》》
p {
margin: 7px auto; } ------------------------ p:before {
content: "I ate #{5 + 10} pies!";
}
》》》》》》》》》》》
p:before {
content: "I ate 15 pies!"; } ------------------------ $value: null;
p:before {
content: "I ate #{$value} pies!";
}
》》》》》》》》》》》
p:before {
content: "I ate pies!"; }

布尔运算

支持布尔值做 andor 和 not 运算。

List Operations

我看文章一直避开这list功能,也许是好东西,只是解释不了?

圆括号

p {
width: (1em + 2em) * 3;
}
》》》》》》》》》》》》》
p {
width: 9em; }

函数

p {
color: hsl(0, 100%, 50%);
}
》》》》》》》》》》
p {
color: #ff0000; }
p {
color: hsl($hue: 0, $saturation: 100%, $lightness: 50%);
}

这个也可以编译

Interpolation: #{}

$name: foo;
$attr: border;
p.#{$name} {
#{$attr}-color: blue;
}
》》》》》》》》
p.foo {
border-color: blue; } ----------------- p {
$font-size: 12px;
$line-height: 30px;
font: #{$font-size}/#{$line-height};
}
》》》》》》》》》
p {
font: 12px/30px; }

变量默认值: !default

通过在值的末尾处添加 !default 标记来为其指定。 也就是说,如果该变量已经被赋值, 就不会再次赋值, 但是,如果还没有被赋值,就会被指定一个值。

$content: "First content";
$content: "Second content?" !default;
$new_content: "First time reference" !default; #main {
content: $content;
new-content: $new_content;
} 》》》》》》》》》》》》》》
#main {
content: "First content";
new-content: "First time reference"; } ---------------------------------------
$content: null;
$content: "Non-null content" !default; #main {
content: $content;
} 》》》》》》》》》》》》》》》
#main {
content: "Non-null content"; }

我自己在解释一次,在赋值时,如果有值就不会改变,如果没有值(null)会去找suffix 是!default还赋值

@import

@import "foo.css";
@import "foo" screen;
@import "http://foo.com/bar";
@import url(foo);
@import "rounded-corners", "text-shadow";

import就和css的一样,scss有多些功能。如果你import “color”,会找到color.scss 或 color.sass

$family: unquote("Droid+Sans");
@import url("http://fonts.googleapis.com/css?family=#{$family}");
>>>>>>>
@import url("http://fonts.googleapis.com/css?family=Droid+Sans");

你有一个文件叫做 _colors.scss。 这样就不会生成 _colors.css 文件了

另个例子:你有个 example.scss

.example {
color: red;
}
#main {
@import "example";
}
》》》》》
#main .example {
color: red;
}

该指令仅允许在文档的基础水平,像@mixin或@charset,未在被@imported嵌套上下文文件允许的。

这是不可能混入或控制指令中嵌套@import。(@ = 指令)

@media

.sidebar {
width: 300px;
@media screen and (orientation: landscape) {
width: 500px;
}
}
》》》》》
.sidebar {
width: 300px; }
@media screen and (orientation: landscape) {
.sidebar {
width: 500px; } } ------- @media screen {
.sidebar {
@media (orientation: landscape) {
width: 500px;
}
}
}
》》》》》
@media screen and (orientation: landscape) {
.sidebar {
width: 500px; } } ------ $media: screen;
$feature: -webkit-min-device-pixel-ratio;
$value: 1.5; @media #{$media} and ($feature: $value) {
.sidebar {
width: 500px;
}
}
》》》》》
@media screen and (-webkit-min-device-pixel-ratio: 1.5) {
.sidebar {
width: 500px; } }

@extend

心里准备一下,这个extend只能用心了,没有什么逻辑啦~只好背了。。。

.error {
border: 1px #f00;
background-color: #fdd;
}
.seriousError {
@extend .error;
border-width: 3px;
}
》》》》
.error, .seriousError {
border: 1px #f00;
background-color: #fdd;
} .seriousError {
border-width: 3px;
}

这样设计可以避免bug的出现,如果你要使用seriousError,可以直接调用,因为error和serioursError已经分开了,同时error而赋值于seriourError

如果要扩张,只需对error扩张就行了。如:给error一张背景

.error {
border: 1px #f00;
background-color: #fdd;
}
.error.intrusion {
background-image: url("/image/hacked.png");
}
.seriousError {
@extend .error;
border-width: 3px;
}
》》》》
.error, .seriousError {
border: 1px #f00;
background-color: #fdd; } .error.intrusion, .seriousError.intrusion {
background-image: url("/image/hacked.png"); } .seriousError {
border-width: 3px; }

 

extend single element 

.hoverlink {
@extend a:hover;
}
a:hover {
text-decoration: underline;
}
>>>>
a:hover, .hoverlink {
text-decoration: underline; } ---- .hoverlink {
@extend a:hover;
}
.comment a.user:hover {
font-weight: bold;
}
>>>>
.comment a.user:hover, .comment .user.hoverlink {
font-weight: bold; } ---- .error {
border: 1px #f00;
background-color: #fdd;
}
.attention {
font-size: 3em;
background-color: #ff0;
}
.seriousError {
@extend .error;
@extend .attention;
border-width: 3px;
}
>>>>
.error, .seriousError {
border: 1px #f00;
background-color: #fdd; } .attention, .seriousError {
font-size: 3em;
background-color: #ff0; } .seriousError {
border-width: 3px; } ---- .error {
border: 1px #f00;
background-color: #fdd;
}
.seriousError {
@extend .error;
border-width: 3px;
}
.criticalError {
@extend .seriousError;
position: fixed;
top: 10%;
bottom: 10%;
left: 10%;
right: 10%;
}
>>>>
.error, .seriousError, .criticalError {
border: 1px #f00;
background-color: #fdd; } .seriousError, .criticalError {
border-width: 3px; } .criticalError {
position: fixed;
top: 10%;
bottom: 10%;
left: 10%;
right: 10%; } ---- #fake-links .link {
@extend a;
} a {
color: blue;
&:hover {
text-decoration: underline;
}
}
>>>>
a, #fake-links .link {
color: blue; }
a:hover, #fake-links .link:hover {
text-decoration: underline; } ---- #admin .tabbar a {
font-weight: bold;
}
#demo .overview .fakelink {
@extend a;
}
>>>>
#admin .tabbar a,
#admin .tabbar #demo .overview .fakelink,
#demo .overview #admin .tabbar .fakelink {
font-weight: bold; } ---- #admin .tabbar a {
font-weight: bold;
}
#admin .overview .fakelink {
@extend a;
}
>>>>
#admin .tabbar a,
#admin .tabbar .overview .fakelink,
#admin .overview .tabbar .fakelink {
font-weight: bold; } ---- // This ruleset won't be rendered on its own.
#context a%extreme {
color: blue;
font-weight: bold;
font-size: 2em;
}
.notice {
@extend %extreme;
}
>>>>
#context a.notice {
color: blue;
font-weight: bold;
font-size: 2em; }

!optional

a.important {
@extend .notice !optional;
}

如果没有找到.notice 会error,但是加上optional就不会了error了。

@extend in Directives

@media print {
.error {
border: 1px #f00;
background-color: #fdd;
}
.seriousError {
@extend .error;
border-width: 3px;
}
} 》》》》
.error {
border: 1px #f00;
background-color: #fdd;
} @media print {
.seriousError {
// INVALID EXTEND: .error is used outside of the "@media print" directive
@extend .error;
border-width: 3px;
}
}

官方解释@media无法知道@media外的css rules。我才可能是先把error给编译好,这时找没有error

@debug 

@warn

@debug 10em + 12em;
》》》》
Line 1 DEBUG: 22em

Control Directives

@if

p {
@if 1 + 1 == 2 { border: 1px solid; }
@if 5 < 3 { border: 2px dotted; }
@if null { border: 3px double; }
}
》》》》
p {
border: 1px solid; } ---- $type: monster;
p {
@if $type == ocean {
color: blue;
} @else if $type == matador {
color: red;
} @else if $type == monster {
color: green;
} @else {
color: black;
}
}
》》》》
p {
color: green; }

@for

@for $i from 1 through 3 {
.item-#{$i} { width: 2em * $i; }
}
》》》》
.item-1 {
width: 2em; }
.item-2 {
width: 4em; }
.item-3 {
width: 6em; }
@for $var from <start> through <end>

@each

@each $animal in puma, sea-slug, egret, salamander {
.#{$animal}-icon {
background-image: url('/images/#{$animal}.png');
}
}
》》》》
.puma-icon {
background-image: url('/images/puma.png'); }
.sea-slug-icon {
background-image: url('/images/sea-slug.png'); }
.egret-icon {
background-image: url('/images/egret.png'); }
.salamander-icon {
background-image: url('/images/salamander.png'); }

@each $var in <list>

@while

$i: 6;
@while $i > 0 {
.item-#{$i} { width: 2em * $i; }
$i: $i - 2;
}
》》》》
.item-6 {
width: 12em; } .item-4 {
width: 8em; } .item-2 {
width: 4em; }

Mixin Directives

@mixin large-text {
font: {
family: Arial;
size: 20px;
weight: bold;
}
color: #ff0000;
}
.page-title {
@include large-text;
padding: 4px;
margin-top: 10px;
}
》》》》
.page-title {
font-family: Arial;
font-size: 20px;
font-weight: bold;
color: #ff0000;
padding: 4px;
margin-top: 10px; }

基本就是这样

@mixin silly-links {
a {
color: blue;
background-color: red;
}
} @include silly-links;
》》》》
a {
color: blue;
background-color: red; }
@mixin compound {
@include highlighted-background;
@include header-text;
} @mixin highlighted-background { background-color: #fc0; }
@mixin header-text { font-size: 20px; }

mixin recursion is forbidden. 被禁止!

Arguments

@mixin sexy-border($color, $width) {
border: {
color: $color;
width: $width;
style: dashed;
}
} p { @include sexy-border(blue, 1in); }
》》》》
p {
border-color: blue;
border-width: 1in;
border-style: dashed; }
@mixin sexy-border($color, $width: 1in) {
border: {
color: $color;
width: $width;
style: dashed;
}
}
p { @include sexy-border(blue); }
h1 { @include sexy-border(blue, 2in); }
》》》》
p {
border-color: blue;
border-width: 1in;
border-style: dashed; } h1 {
border-color: blue;
border-width: 2in;
border-style: dashed; }
@mixin sexy-border($color) {
&:focus {
border-color: $color;
outline:;
box-shadow: rgba(red($color), green($color), blue($color), .6);
}
}
p { @include sexy-border(#66afe9); }
》》》》
p:focus {
border-color: #66afe9;
outline:;
box-shadow: rgba(102, 175, 233, 0.6); }

Keyword Arguments

p { @include sexy-border($color: blue); }
h1 { @include sexy-border($color: blue, $width: 2in); }

在给变量时,可以知道是什么变量。

Variable Arguments

@mixin box-shadow($shadows...) {
-moz-box-shadow: $shadows;
-webkit-box-shadow: $shadows;
box-shadow: $shadows;
} .shadows {
@include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);
}
》》》》
.shadows {
-moz-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
-webkit-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
}
@mixin colors($text, $background, $border) {
color: $text;
background-color: $background;
border-color: $border;
} $values: #ff0000, #00ff00, #0000ff;
.primary {
@include colors($values...);
}
》》》》
.primary {
color: #ff0000;
background-color: #00ff00;
border-color: #0000ff;
}

Passing Content Blocks to a Mixin

@mixin apply-to-ie6-only {
* html {
@content;
}
}
@include apply-to-ie6-only {
#logo {
background-image: url(/logo.gif);
}
}
》》》》
* html #logo {
background-image: url(/logo.gif);
}

Variable Scope and Content Blocks(暂时理解不了)

$color: white;
@mixin colors($color: blue) {
background-color: $color;
@content;
border-color: $color;
}
.colors {
@include colors { color: $color; }
}
》》》》
.colors {
background-color: blue;
color: white;
border-color: blue;
}
#sidebar {
$sidebar-width: 300px;
width: $sidebar-width;
@include smartphone {
width: $sidebar-width / 3;
}
}

Function Directives

$grid-width: 40px;
$gutter-width: 10px; @function grid-width($n) {
@return $n * $grid-width + ($n - 1) * $gutter-width;
} #sidebar { width: grid-width(5); }
//#sidebar { width: grid-width($n: 5); }
>>>>
#sidebar {
width: 240px; }

Output Style

:nested

:expanded

:compact

:compressed

   



scss 学习笔记的更多相关文章

  1. scss学习笔记

    1.引用父选择符: & #main { color: black; a { font-weight: bold; &:hover { color: red; } } } 2.font: ...

  2. SCSS学习笔记(一)

    SCSS的由来 SCSS就是加强版的CSS,要讲SCSS那就一定要从SASS讲起 SASS Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hamp ...

  3. Sass学习笔记之入门篇

    Sass又名SCSS,是CSS预处理器之一,,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法,同时提供多种功能来创建可维护和管理的样 ...

  4. Ionic2学习笔记(6):Navigation

    作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5551535.html           Ionic2中创建一个页面很方便,在页面之间相互切换也很方 ...

  5. Ionic2学习笔记(1):新建一个页面

    作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5532323.html                 新建一个页面: 借上一篇中的HelloWorl ...

  6. Sass学习笔记(补充)

    阅读目录 1. Sass和SCSS的区别 2. @while循环 3. @at-root 4. @content 5. 凸显注释 6. CSS输出样式 7. 重置浏览器样式 8. Sass调试和@de ...

  7. sass个人学习笔记

    Materliu 在慕课的视频: http://www.imooc.com/learn/364 . http://www.imooc.com/wiki/371 sass入门:http://www.w3 ...

  8. Ruby学习笔记4: 动态web app的建立

    Ruby学习笔记4: 动态web app的建立 We will first build the Categories page. This page contains topics like Art, ...

  9. Angular6 学习笔记——内容投影, ViewChild和ContentChild

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

随机推荐

  1. 使用python爬虫抓站的一些技巧总结:进阶篇

    Reference:http://python.jobbole.com/82000/ 一.gzip/deflate支持 现在的网页普遍支持gzip压缩,这往往可以解决大量传输时间,以VeryCD的主页 ...

  2. zepto animate

    // Zepto.js // (c) 2010-2013 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...

  3. spring security 跨域防伪攻击

    applicationContext-security.xml中配置 <http use-expressions="true" disable-url-rewriting=& ...

  4. iOS 添加导航栏两侧按钮

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"首页" style ...

  5. 如何迅速成为Java高手

    很多网友朋友问我学习Java有没有什么捷径,我说“没有,绝对没有!”.但是我却很愿意将自己学习的一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛!         要想学好Java,首先要知 ...

  6. IE6滤镜在实战测试中能让父层里面的子元素产生阴影

    1.写法一: <div class="cornerbg">    <p class="title-file">------</p& ...

  7. animate的{queue:false,duration:400}意思

    示例:$(document).ready(function(){ $('.tmplS').hover(function(){ $(".cover", this).stop().an ...

  8. html标签的嵌套规则分析

    1.a标签最好不要嵌套块级元素,可以嵌套内联元素,但是不能嵌套a标签和input之类的标签.能嵌套的标签像,等等. 2.ul和ol的子元素不能是别的元素只能是li,不能是别的比如div等,但是li中可 ...

  9. 使用滚动条(ActionBar)

    活动条(ActionBar)是Android3.0的重要更新之一.ActionBar位于传统标题栏的位置,也就是显示屏幕的顶部.ActionBar可显示应用的图标和Activity标题——也就是前面应 ...

  10. Cisco VPN Client Error 56解决

    Cisco VPN Client Error 56解决 VPN Client报错 650) this.width=650;" style="width:575px;height:1 ...