iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Modern Web

30天每天寫網站系列 第 23

Day23-按鈕分身術(上)_純CSS漢堡圖樣與改變

  • 分享至 

  • xImage
  •  

今天明天要來寫純CSS可控制的按鈕分身術
感謝室友的idea提供~
https://i.imgur.com/oRRj5Xm.gif

之前在重寫網站時的首頁按鈕也是類似的效果
只要把改變的位置更改就能做出不同的樣子了

今天的部分著重在控制按鈕的漢堡圖樣變化

先寫架構
Day10一樣用checkbox做開關,打開時出現按鈕,關掉時按鈕隱藏

寫一個input跟一個label,幫input設置id,label設置for綁定input的id
綁定完成後點擊label也能開關input

<input class="menu-check" type="checkbox" id="menu-check" />
<label class="menu-open-button" for="menu-check">label</label>

https://i.imgur.com/4iAJB3J.gif
綁定完成後我們就能把input設display: none; 隱藏起來
然後我先幫label加一些圖樣
預想是平常是漢堡圖樣☰,打開時是叉叉圖樣✖
因為我沒有要用到JS,所以要在CSS自己寫圖樣
先在label內設置一個div,因為漢堡圖樣是三橫槓,所以要在div裡面加上三個span

<div class="ham">
    <span></span>
    <span></span>
    <span></span>
</div>

然後進入CSS
幫span的父層ham設一個大小讓span比較好長大

.ham {
    width: 60px;
    height: 60px;
}

先寫span共同的部分
長寬跟顏色是大家都一樣的東西就設在一起

.ham span {
    position: absolute;
    height: 6px;
    width: 100%;
    background: #1FAF87;
}

各自的部分,因為我們沒設class分別,就直接用CSS的:nth-child()
第一個長在最高,第二個中間,第三個最低

.ham span:nth-child(1) {
    top: 0%;
}
.ham span:nth-child(2) {
    top: 50%;
}
.ham span:nth-child(3) {
    top: 100%;
}

https://ithelp.ithome.com.tw/upload/images/20211008/20141991UIOYpXe4bd.jpg

然後來寫變化
變化的部分用:checked來辨別,當.menu-check:checked時去做改變
上面跟下面的橫槓要各自順跟逆時針轉45度,變成叉叉的兩槓,中間那槓隱藏起來就可以了

.menu-check:checked+.menu-open-button span:nth-child(1) {
    transform: rotate(45deg);
}
.menu-check:checked+.menu-open-button span:nth-child(2) {
    transform: scaleX(0);
}
.menu-check:checked+.menu-open-button span:nth-child(3) {
    transform: rotate(-45deg);
}

完成後點擊就會有變化了
https://i.imgur.com/piYskzL.gif
但我們發現改變後的位置有點怪怪的,因為預設的旋轉基準點是在圖的正中心
我們需要把改變位置改到左邊的中間,讓上下各自以左邊為旋轉中心做旋轉
在共同處新增一個改變旋轉中心的語法

.ham span{
    transform-origin: left center;
}

https://i.imgur.com/n4sNRyi.gif
然後我們又發現,叉叉的腳好像有一點點短,因為旋轉後的槓槓,如同三角形的斜邊,而斜邊的長度一定會大於兩邊的長,所以我們需要讓他在改變後長長一點點,這邊看大家設置的三條槓槓距離是多少會有所不同,我是變成140%左右
https://i.imgur.com/By8VrEO.gif

接著根據需要美化一下,我這邊有把長寬跟位置做一些改變,變成我希望的比例
最後在.ham span加上transition: 0.25s ease-in-out; 讓變化時有轉場的效果
https://i.imgur.com/NyyKQFl.gif

這樣便完成漢堡圖樣的變化了


上一篇
Day22-大量圖片的頁面(下)_利用hover搞點漂亮的
下一篇
Day24-按鈕分身術(下)_我的分身想去哪
系列文
30天每天寫網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言