這幾年手機、電腦有黑暗模式,很多網頁也加上像電燈一樣的開關啦!
黑暗模式可以降低亮度,減少對眼睛的壓力。弱光環境下比較有可讀性。
我自己是喜歡去網頁一直玩開關(哈哈,不過真的很少調黑暗模式,真的有人會用嗎?
CSS裡面就有@media query
可以看使用者預設的黑暗模式而對應樣式,
一開始是iOS safari先宣布,後來其他瀏覽器一起跟進。這個配合上CSS的變數功能就搞定啦!
//喜歡暗暗的
@media (prefers-color-scheme: dark) {}
//喜歡亮亮的
@media (prefers-color-scheme: light) {}
如果你跟我一樣是用Mac,可以在電腦設定的地方>General>Appearance選擇Dark
就可以測試一下media query有沒有用啦!
也可以到:Google Fonts去玩玩他的黑暗模式啦!
今天是要做一個按鈕切換日夜,先看成果:
先看Media Query實作起來怎麼樣,再來搭配開關看看吧!
主要就是在:root
的地方宣告變數,
在@media (prefers-color-scheme: dark) 再把本來的變數蓋過去啦!
:root{
--clr-primary:#003f88;
--clr-secondary: #00296b;
--bg:#ffd500;
--bg-toggle: #14213d;
}
@media (prefers-color-scheme: dark) {
:root {
--clr-primary: #ffd500;
--clr-secondary: #fdc500;
--bg: #14213d;
--bg-toggle: black;
}
}
有了開關後就是用JS去做一個點擊監聽器,
再toggle class
toggle.addEventListener('click',()=>{
target.classList.toggle('dark-mode');
})
今天的案例,剛好也用到了幾個CSS的東西,之前沒有用過,順便記錄一下:grid / min-max /frgird
: 網格排版,可參考:這裡min-max
: 取得單位比min值大,比max小fr
: 空間分塊
今天主要參考這裡的教學
上code:
//SCSS
:root{
--clr-primary:#003f88;
--clr-secondary: #00296b;
--bg:#ffd500;
--font-regular: "Assistant", sans-serif;
--bg-toggle: #14213d;
--clr-toggle: #fca311;
}
*{
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: var(--font-refular);
color: var(--clr-secondary);
font-size: 18px;
}
h1{
color: var(--clr-primary);
font-family: var(--font);
font-size: 3rem;
}
h2{
color: var(--clr-secondary);
}
p{
color: var(--clr-secondary);
}
a{
padding: 10px 20px;
border-radius: 20px;
text-decoration: none;
font-weight: bold;
color: var(--bg);
background: var(--clr-secondary);
}
section{
width: 100%;
height: 100vh;
background: var(--bg);
display: grid;
grid-template-columns: minmax(2em, 1fr) minmax(80vw, 300px) minmax(2em, 1fr);
*{
grid-column: 2 / 3;
}
.toggle{
margin-top: 20px;
width: 4em;
height: 2em;
background: var(--bg-toggle);
position: relative;
border-radius: 2em;
cursor: pointer;
&:before{
transition: 0.5s;
cursor: pointer;
content: '';
position: absolute;
width: 1.8em;
height: 1.8em;
border-radius: 50%;
background: var(--clr-toggle);
top: 0.1em;
left: 0.2em;
}
}
&.dark-mode{
--clr: #e5e5e5;
--clr-primary: #ffd500;
--clr-secondary: #fdc500;
--button-primary: #219ebc;
--button-secondary: #02c39a;
--bg: #14213d;
--bg-toggle: black;
--clr-toggle: #003f88;
//讓球球往右跑
.toggle::before{
left: calc( 100% - 2em);
}
}
}
//JS
const toggle = document.querySelector('#toggle');
const target = document.querySelector('#target');
toggle.addEventListener('click',()=>{
target.classList.toggle('dark-mode');
})
今天的內容應該跟昨天的調換一下的...還是CSS為主
今天的code在這裡
有任何問題&意見歡迎留言!