iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1
自我挑戰組

關於我的佛系SCSS開發系列 第 21

鐵人賽21天mixin-斷點設定

  • 分享至 

  • xImage
  •  

哇~終於剩下9天開心了,不過這周連假還是要繼續要寫啊,可怕這時候有錯覺的提早寫好像可以比較早解脫?,這樣還是要寫30天不會比較少啊,好了不廢話今天就直接進入範例囉,今天部分說明會直接寫在程式碼裡面

@mixin media($name) {
  // 預設範圍
  $breakpoints: (
    xs: auto 576px,
    sm: 576px 768px,
    md: 768px 992px,
    lg: 992px 1200px,
    xl: 1200px auto,
  );

  $point: map-get(
    $breakpoints,
    $name
  ); //如我們輸入lg,就會取得breakpoints對應的key+value

  @if $point {
    $min: nth($point, 1); //取的值第一筆數值
    $max: nth($point, 2); //取的值第二筆數值

    //min 跟 max判斷顯示哪一段 media query
    @if $min == auto {
      @media (max-width: $max) {
        // 是 @mixin { } 中的內容,而一個 mixin 只能擁有一個
        @content;//額外將程式碼帶進放置的位置
      }
    } @else if $max == auto {
      @media (min-width: $min) {
        @content;
      }
    } @else {
      @media (min-width: $min) and (max-width: $max) {
        @content;
      }
    }
  }
}

h1 {
  a {
    color: red;
    @include media(xl) {
      color: #0f0;
    }
    @include media(lg) {
      color: blue;
    }
    @include media(xs) {
      color: #ccc;
    }
  }
}

//編譯後的結果
h1 a {
  color: red;
}
@media (min-width: 1200px) {
  h1 a {
    color: #0f0;
  }
}
@media (min-width: 992px) and (max-width: 1200px) {
  h1 a {
    color: blue;
  }
}
@media (max-width: 576px) {
  h1 a {
    color: #ccc;
  }
}

今天我們用的範例,就是我們可以利用自己設定media輸入特定字串,產生出對應的斷點,我們會在$breakpoints裡面設定我們要制定的範圍,我們使用也是一般的斷點,我透過$map-get取的我們要的值,利用判斷式來判斷我們要使用怎樣斷點方式,至於斷點為啥這樣是css範圍就不細明說明囉,最小值等於autoy最大值576px以上我們就使用max-width的斷點範圍,今天內容可以跟昨天合併一起使用,可以透過快速鍵的方式設定 @include media(xl)這一段的mixin,我之前就會設定名稱r1200快速鍵,當我輸入r1200就會快速產出這一段程式碼,基本上我在寫斷點時候通常不太會只有一次可能不同地方都會用到,使用快速鍵方式一來可以增加撰寫速度,只有第一次的成本要建立快速鍵時候會比較多成本,基本上後面都是爽爽用


上一篇
鐵人賽20天snipet
下一篇
鐵人賽22天Grid System-col設定
系列文
關於我的佛系SCSS開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言