--- title: 'RWD 切版教學' disqus: hackmd --- Tailwind 操作說明 === ![downloads](https://img.shields.io/github/downloads/atom/atom/total.svg) ![build](https://img.shields.io/appveyor/ci/:user/:repo.svg) ![chat](https://img.shields.io/discord/:serverId.svg) ## 目錄 [TOC] ## 前言 - vs code 安裝套件以達到輸入前綴即可autoComplete: **Tailwind CSS IntelliSense** - 我們做法是將PostCSS當成的預處理器 - 讓 Tailwind 在生產環境建置時移除不必要的樣式 - RWD - 行動裝置優先 ```js // tailwind.config.js module.exports = { purge: [], purge: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], darkMode: false, // or 'media' or 'class' theme: { extend: {}, }, variants: { extend: {}, }, plugins: [], } ``` - 在你的 CSS 中使用 Tailwind > 我們做法是把tailwind基本樣式掛載進app.sass ![image](https://hackmd.io/_uploads/rykKcU5l0.png) - 目前專案中 我有開一個tailwind/custom-base-styles.sass, 來放置可能客製化統合的地方 ```css .green-btn @apply py-2 px-4 bg-green-500 text-white font-semibold rounded-lg shadow-md hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-green-400 focus:ring-opacity-75 ``` - 後續建議大家的寫法 ```js <!-- 使用功能優先 Class --> <button class="py-2 px-4 font-semibold rounded-lg shadow-md text-white bg-green-500 hover:bg-green-700"> 按我一下 </button> <!-- 用 @apply 提取 Class --> <button class="btn btn-green"> 按鈕 </button> <style> .btn { @apply py-2 px-4 font-semibold rounded-lg shadow-md; } .btn-green { @apply text-white bg-green-500 hover:bg-green-700; } </style> ``` ```css .purple-text @apply text-purple-900 font-size: 20px 如上描述 可以客製化自己寫的css搭配tailwind class name ``` > 統一用一個組件名稱去整合所有涵蓋的tailwind class name 以避免在html 上有一大堆class name ## 響應式設計 (RWD) --- > 只需要加入該斷點的前綴詞,並在後面加上 : 即可。 > tailwind利用斷點的前綴來達到某寬度media時, 是什麼效果 ![image](https://hackmd.io/_uploads/H1gRJP5xR.png) ```html <!-- 寬度預設值設為 16, 中等螢幕設為 32, 大螢幕設為 48 --> <img class="w-16 md:w-32 lg:w-48" src="..."> ``` ## 常用class name - w- 類(尺寸大小) ```html - w-8: 固定寬度 width: 8rem (基本概念 8rem 會去吃root的font-size: 16px * 8 = 96px 寬度) <div class="w-8 ..."></div> - w-auto: 父層960px 則寬度為960px (width: auto) - w-screen: 設定螢幕寬度(類似vw) - w-full: 浮動滿版寬度 <div class="w-1/6 ...">w-1/6</div> <div class="w-5/6 ...">w-5/6</div> <div class="w-full ...">w-full</div> - max-w-0, min-w-0 - max-w-full, min-w-full ``` - text- 類 ```css - text-center 置中 - text-left 置左 - text-center 置右 - text-purple-600 結合 color + text-opacity - underline, no-underline 是否底線(常用於link連結) - lowercase, uppercase, capitalize (英文字大小寫) - text-base, text-sm, text-lg, text-xl 文字大小 ``` - bg- 類 ## Hover, Focus 以及其他狀態 - disabled: 前綴詞讓元素處於 disabled 狀態時才啟用該功能。 - hover: 前綴詞讓元素處於 hover 狀態 - focus: 前綴詞讓元素處於 focus 狀態時才啟用該功能。 - active: 前綴詞讓元素處於 active 狀態時才啟用該功能。 - group-hover: 在 hover 一個父元素時,讓其一個子元素產生樣式變化,在父元素加上 group class 並且在子元素新增 group-hover: 前綴詞 ```html <input class="focus:ring-2 focus:ring-blue-600 ..."> <button class="bg-red-500 hover:bg-red-700 ..."> Hover me </button> <button class="bg-green-500 active:bg-green-700 ..."> Click me </button> ``` ```html <div class="group border-indigo-500 hover:bg-white hover:shadow-lg hover:border-transparent ..."> <p class="text-indigo-600 group-hover:text-gray-900 ...">New Project</p> <p class="text-indigo-500 group-hover:text-gray-500 ...">Create a new project from a variety of starting templates.</p> </div> 同理可證- active focus 前面加上group 即可整塊改變 ``` ```html <button class="disabled:opacity-50 ..."> Submit </button> <button class="disabled:opacity-50 ..." disabled> Submit </button> ``` ## Flex 教學 ```css .flex-container { display: flex | inline-flex; flex-direction: row | column; 對齊方向 flex-wrap: nowrap | wrap; 是否換行 justify-content: flex-start | flex-end | center | space-between ; // 水平 align-items: flex-start | flex-end | center; 垂直 } ``` - flex重要概念 > ∙flex: Flexbox最重要的數值,分別是**flex-grow**、**flex-shrink** 和**flex-basis**。規定元素如何伸長或縮短以適應flex容器中的可用空間。 ```css .flex { /* 基本樣式 */ width: 700px; height: 200px; border: 1px solid #999; font: 10px sans-serif; /* Flexbox */ display: -webkit-flex; -webkit-flex-direction: row; display: flex; flex-direction: row; } .flex > div { -webkit-flex: 1 1 auto; flex: 1 1 auto; width: 100px; } 範例: https://codepen.io/Vue_Steve/pen/dyLKoPy ```