iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
自我挑戰組

初見 Tailwindcss系列 第 19

Day 19 - 寫一個含狀態的 Button

既然今天是連假第二天,咱們今天來點簡單的,把前面複習一下加一點新知識,整合一個有各種狀態的按鈕樣式吧。我們拿 Bootstrap 的 Primary 按鈕來練習好了。

  1. Button Normal 狀態:
    https://ithelp.ithome.com.tw/upload/images/20210919/20141250DZyiBFCduW.png

我們先建立一個基本按鈕,並依樣畫葫蘆給它顏色、間距、圓角等,這邊各位小伙伴們應該都會吧。

<button type="button" class="px-3 py-2 bg-blue-500 border border-blue-500 rounded text-white">Button</button>
  1. Button Hover 狀態:
    https://ithelp.ithome.com.tw/upload/images/20210919/20141250rm2Y4710uT.png

可以看到 Hover 按鈕後背景顏色加深了一點,這邊有個小細節,顏色加深是緩慢變的,不是瞬間變色,所以我們要補個 Transition。

<button type="button" class="... transition hover:bg-blue-600">Button</button>
  1. Button Focus 狀態:
    https://ithelp.ithome.com.tw/upload/images/20210919/20141250wTs6DBWzLB.png

點擊按鈕後,Bootstrap 外圈多了一道半透明光環,但 Tailwind 按鈕預設會有一個 1px outline,我們必須用 outline-none 把它消除,這邊威爾豬前面沒有說到,在 Tailwind 裡,外圈像戒指一樣,所以就是用 ring-{寬度} 來代表,它是使用 box-shadow 的方式來增加外圈,預設共有 0、1、2、3、4、8 (px)。

class px
ring-0 0px
ring-1 1px
ring-2 2px
ring 3px
ring-4 4px
ring-8 8px
<button type="button" class="... focus:outline-none focus:bg-blue-600 focus:ring-4 focus:ring-blue-500 focus:ring-opacity-50">Button</button>

同學們問威爾豬,focus 要寫這麼多,有沒有更簡潔的辦法或只寫一次就好?這邊要說聲抱歉,威爾豬自己也很困擾,但目前 Tailwind 好像沒辦法支持這麼做,如果有小伙伴們知道可以只寫一次的方法,也請再跟威爾豬分享,期待 Tailwind 之後的更新也能改進這一塊。

  1. Button Active 狀態:
    https://ithelp.ithome.com.tw/upload/images/20210919/20141250WEa7BTFwHx.png

可以看到 Active 後背景顏色更深一點了。

<button type="button" class="... active:bg-blue-700">Button</button>
  1. 完工
    https://ithelp.ithome.com.tw/upload/images/20210919/201412500CzraK4EWv.png

噹噹~恭喜完成,因為威爾豬直接使用 Tailwind 內建的色系,顏色肯定會有誤差,但是不是幾乎和 Bootstrap 的按鈕一模模一樣樣,威爾豬這邊有用 Tailwind 來仿製了 Bootstrap 的群組按鈕樣式,同學們可以參考 DEMO

雖然製做按鈕真的不如 Bootstrap 上快速方便,但畢竟彈性較高,可以任意修改,其實 Tailwind 也可以製做組件,威爾豬明天再談。以上就是今天按鈕及狀態的介紹,咱們明天見。


上一篇
Day 18 - Dark Mode 使用
下一篇
Day-20 使用 @apply 製做组件
系列文
初見 Tailwindcss30

尚未有邦友留言

立即登入留言