웹 프론트엔드 HTML 튜토리얼 Sass的控制命令(循环)_html/css_WEB-ITnose

Sass的控制命令(循环)_html/css_WEB-ITnose

Jun 24, 2016 am 11:33 AM

@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>
로그인 후 복사

  • $i 表示变量
  • start 表示起始值
  • 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 }
    로그인 후 복사

    开始(此处示例是1),一直遍历到 (此处示例是3)。包括 的值。

    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 }
    로그인 후 복사

     

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

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

    인기 기사

    R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
    1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 최고의 그래픽 설정
    1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
    1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. 채팅 명령 및 사용 방법
    1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

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

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

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

    HTML5의 크로스 브라우저 호환성에 대한 모범 사례는 무엇입니까? HTML5의 크로스 브라우저 호환성에 대한 모범 사례는 무엇입니까? Mar 17, 2025 pm 12:20 PM

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

    & lt; Progress & Gt의 목적은 무엇입니까? 요소? & lt; Progress & Gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:34 PM

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

    & lt; datalist & gt의 목적은 무엇입니까? 요소? & lt; datalist & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:33 PM

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

    HTML5 양식 유효성 검사 속성을 사용하여 사용자 입력을 유효성있게하려면 어떻게합니까? HTML5 양식 유효성 검사 속성을 사용하여 사용자 입력을 유효성있게하려면 어떻게합니까? Mar 17, 2025 pm 12:27 PM

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

    & lt; meter & gt의 목적은 무엇입니까? 요소? & lt; meter & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:35 PM

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

    뷰포트 메타 태그는 무엇입니까? 반응 형 디자인에 중요한 이유는 무엇입니까? 뷰포트 메타 태그는 무엇입니까? 반응 형 디자인에 중요한 이유는 무엇입니까? Mar 20, 2025 pm 05:56 PM

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

    & lt; iframe & gt; 꼬리표? 보안을 사용할 때 보안 고려 사항은 무엇입니까? & lt; iframe & gt; 꼬리표? 보안을 사용할 때 보안 고려 사항은 무엇입니까? Mar 20, 2025 pm 06:05 PM

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

    HTML은 초보자를 위해 쉽게 배우나요? HTML은 초보자를 위해 쉽게 배우나요? Apr 07, 2025 am 12:11 AM

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

    See all articles