iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0
自我挑戰組

掌握 Master CSS 優化開發體驗系列 第 18

Day 18 - 自定義響應式斷點

  • 分享至 

  • xImage
  •  

預設斷點

「Day 11 - 在元素上應用響應式斷點」這個單元裡,有介紹到 Master CSS 響應式斷點的使用方法,並且官方有提供多達十組的預設斷點。

class properties description
@3xs @media (min-width: 360px) { } iPhone 6, 7, 8, X, 11, 12 / Galaxy S8 / HTC One …
@2xs @media (min-width: 480px) { } Blackberry Passport / Amazon Kindle Fire HD 7 …
@xs @media (min-width: 600px) { } LG G Pad 8.3 / Amazon Kindle Fire …
@sm @media (min-width: 768px) { } Microsoft Surface / iPad Pro 9.7 / iPad Mini …
@md @media (min-width: 1024px) { } iPad Pro 12.9 / Microsoft Surface Pro 3 …
@lg @media (min-width: 1280px) { } Google Chromebook Pixel / Samsung Chromebook …
@xl @media (min-width: 1440px) { } Macbook Air 2020 M1 / MacBook Pro 15 …
@2xl @media (min-width: 1600px) { } Dell Inspiron 14 series …
@3xl @media (min-width: 1920px) { } Dell UltraSharp U2412M / Dell S2340M / Apple iMac 21.5-inch …
@4xl @media (min-width: 2560px) { } Dell UltraSharp U2711 / Apple iMac 27-inch …

儘管如此,有些開發者習慣的斷點名稱可能與 Master CSS 預設的不一樣,又或者是已經習慣了其他框架設計好的斷點,比如 Bootstrap 跟 Tailwind CSS 的斷點 md 代表的是寬度 768px,而 Master CSS 的斷點 md 卻是代表寬度 1024px,這個時候我們就可以自定義響應式斷點。

覆寫斷點

試著以 Tailwind CSS 的斷點來覆寫 Master CSS 的預設斷點。

Breakpoint prefix Minimum width CSS
sm 640px @media (min-width: 640px) { ... }
md 768px @media (min-width: 768px) { ... }
lg 1024px @media (min-width: 1024px) { ... }
xl 1280px @media (min-width: 1280px) { ... }
2xl 1536px @media (min-width: 1536px) { ... }

將 extend 裡的第一個參數設定為 breakpoints,代表要自定義的屬性是斷點,物件裡面的 key 對應的是斷點名稱,value 對應的是斷點寬度。

const Style = window.MasterStyle;

/* 自定義配置 */
Style.extend('breakpoints', {
  sm: '640px', // => @media (min-width: 640px) { ... }
  md: '768px', // => @media (min-width: 768px) { ... }
  lg: '1024px', // => @media (min-width: 1024px) { ... }
  xl: '1280px', // => @media (min-width: 1280px) { ... }
  '2xl': '1536px' // => @media (min-width: 1536px) { ... }
});

window.initMasterCSS();
<h1 class="f:20 f:24@sm f:32@md f:48@lg">Hello World!</h1>

編譯出來的 CSS 規則可以發現已經成功設定成 Tailwind CSS 的斷點寬度了。

.f\:20 {
  font-size: 1.25rem;
}

@media (min-width: 640px) {
  .f\:24\@sm {
    font-size: 1.5rem;
  }
}

@media (min-width: 768px) {
  .f\:32\@md {
    font-size: 2rem;
  }
}

@media (min-width: 1024px) {
  .f\:48\@lg {
    font-size: 3rem;
  }
}

自定義響應式斷點

假如開發者不習慣 sm、md、lg 等斷點命名,也能自定義斷點名稱。

const Style = window.MasterStyle;

/* 自定義配置 */
Style.extend('breakpoints', {
  tablet: '768px', // => @media (min-width: 768px) { ... }
  laptop: '1024px', // => @media (min-width: 1024px) { ... }
  desktop: '1280px', // => @media (min-width: 1280px) { ... }
});

window.initMasterCSS();
<h1 class="f:20 f:24@tablet f:32@laptop f:48@desktop">Hello World!</h1>
.f\:20 {
  font-size: 1.25rem;
}

@media (min-width: 768px) {
  .f\:24\@tablet {
    font-size: 1.5rem;
  }
}

@media (min-width: 1024px) {
  .f\:32\@laptop {
    font-size: 2rem;
  }
}

@media (min-width: 1280px) {
  .f\:48\@desktop {
    font-size: 3rem;
  }
}

總結

本日 codepen 連結

有些開發者習慣的斷點名稱可能與 Master CSS 預設的不一樣,又或者是已經習慣了其他框架設計好的斷點,這個時候就可以自定義響應式斷點來符合自己的需求。

參考


上一篇
Day 17 - 自定義顏色
下一篇
Day 19 - 自定義媒體查詢
系列文
掌握 Master CSS 優化開發體驗30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言