Sass的控制命令(循环)_html/css_WEB-ITnose
@if
@if指令是一个SassScript,它可以根据条件来处理样式块,如果条件为true返回一个样式块,反之false返回另一个样式块。在Sass中除了@if,还可以配合@else if和@else 一起使用。
1 $lte7: true; 2 $type: monster; 3 .ib{ 4 display:inline-block; 5 @if $lte7 { 6 *display:inline; 7 *zoom:1; 8 } 9 }10 p {11 @if $type == ocean {12 color: blue;13 } @else if $type == matador {14 color: red;15 } @else if $type == monster {16 color: green;17 } @else {18 color: black;19 }20 }
编译成CSS:
1 //css style2 .ib{3 display:inline-block;4 *display:inline;5 *zoom:1;6 }7 p {8 color: green; 9 }
假设要控制一个元素隐藏或显示,我们就可以定义一个混合宏,通过 @if...@else... 来判断传进参数的值来控制 display 的值。如下所示:
1 //SCSS 2 @mixin blockOrHidden($boolean:true) { 3 @if $boolean { 4 @debug "$boolean is #{$boolean}"; 5 display: block; 6 } 7 @else { 8 @debug "$boolean is #{$boolean}"; 9 display: none;10 }11 }12 .block {13 @include blockOrHidden;14 }15 .hidden{16 @include blockOrHidden(false);17 }
编译出来的CSS:
1 .block {2 display: block;3 }4 .hidden {5 display: none;6 }
@for循环(上)
在 Sass 的 @for 循环中有两种方式:
@for $i from <start> through <end>@for $i from <start> to <end>
这两个的区别是关键字through表示包括end这个数,而to则不包括end这个数。
从
如下代码,使用through关键字的例子:
1 @for $i from 1 through 3{2 .item-#{$i} {width: 2em * $i;}3 }
编译出来的 CSS:
1 .item-1 {2 width: 2em;3 }4 .item-2 {5 width: 4em;6 }7 .item-3 {8 width: 6em;9 }
从
to关键字的例子:
1 @for $i from 1 to 3{2 .itme-#{$i} { width: 2 * $i;}3 }
编译出来的 CSS:
1 .item-1 {2 width: 2em;3 }4 .item-2 {5 width: 4em;6 }
循环从
@for循环(下)
@for应用在网格系统生成各个格子 class 的代码:
1 //SCSS 2 $grid-prefix: span !default; 3 $grid-width: 60px !default; 4 $grid-gutter: 20px !default; 5 %grid { 6 float: left; 7 margin-left: $grid-gutter / 2; 8 margin-right: $grid-gutter / 2; 9 }10 @for $i from 1 through 12 {11 .#{$grid-prefix}#{$i}{12 width: $grid-width * $i + $grid-gutter * ($i - 1);13 @extend %grid;14 } 15 }
编译出来的 CSS:
1 .span1, .span2, .span3, .span4, .span5, .span6, .span7, .span8, .span9, .span10, .span11, .span12 { 2 float: left; 3 margin-left: 10px; 4 margin-right: 10px; 5 } 6 .span1 { 7 width: 60px; 8 } 9 .span2 {10 width: 140px;11 }12 .span3 {13 width: 220px;14 }15 .span4 {16 width: 300px;17 }18 .span5 {19 width: 380px;20 }21 .span6 {22 width: 460px;23 }24 .span7 {25 width: 540px;26 }27 .span8 {28 width: 620px;29 }30 .span9 {31 width: 700px;32 }33 .span10 {34 width: 780px;35 }36 .span11 {37 width: 860px;38 }39 .span12 {40 width: 940px;41 }
@for 循环指令除了可以从小数值到大数值循环之外,还可以从大数值循环到小数值。而且两种形式都支持(递增或递减)。
@while循环
@while指令也需要SassScript表达式(像其他指令一样),并且会生成不同的样式块,直到表达式值为false时停止循环。这个和@for指令很相似,只要@while后面的条件为true就会执行。
@while指令简单用例:
1 //SCSS2 $types: 4;3 $type-width: 20px;4 @while $types > 0 {5 .while-#{$types}{6 width: $type-width + $types;7 }8 $types: $types - 1;9 }
编译出来的 CSS:
1 .while-4 { 2 width: 24px; 3 } 4 .while-3 { 5 width: 23px; 6 } 7 .while-2 { 8 width: 22px; 9 }10 .while-1 {11 width: 21px;12 }
@each循环
@each循环就是去遍历一个列表,然后从列表中取出对应的值。
@each循环指令形式:
@each $var in <list>
$var 就是一个变量名, 是一个SassScript表达式,他将返回一个列表值。变量 $var 会在列表中做出遍历,并且遍历出与 $var 对应的样式块。
这有一个 @each 指令的简单示例:
1 $list: adam john wynn mason kuroir;//$list 就是一个列表 2 3 @mixin author-images { 4 @each $author in $list { 5 .photo-#{$author} { 6 background: url("/images/avatars/#{$author}.png") no-repeat; 7 } 8 } 9 }10 11 .author-bio {12 @include author-images;13 }
编译出CSS:
1 .author-bio .photo-adam { 2 background: url("/images/avatars/adam.png") no-repeat; 3 } 4 .author-bio .photo-john { 5 background: url("/images/avatars/john.png") no-repeat; 6 } 7 .author-bio .photo-wynn { 8 background: url("/images/avatars/wynn.png") no-repeat; 9 }10 .author-bio .photo-mason {11 background: url("/images/avatars/mason.png") no-repeat; 12 }13 .author-bio .photo-kuroir {14 background: url("/images/avatars/kuroir.png") no-repeat; 15 }

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

이 기사는 모바일 장치의 반응 형 웹 디자인에 필수적인 Viewport Meta Tag에 대해 설명합니다. 적절한 사용이 최적의 컨텐츠 스케일링 및 사용자 상호 작용을 보장하는 방법을 설명하는 반면, 오용은 설계 및 접근성 문제로 이어질 수 있습니다.

이 기사는 & lt; iframe & gt; 외부 컨텐츠를 웹 페이지, 공통 용도, 보안 위험 및 객체 태그 및 API와 같은 대안을 포함시키는 태그의 목적.

HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.
