因為 CSS的變數能運用的地方真的很多,所以就分幾篇來穿插介紹囉~
// html
<input type="range" min=60 max=400 id="range">
<div class="circle"></div>
// css
:root {
--primary: Aquamarine;
--secondary: Teal;
--size: 200px;
}
// javascript
const root = document.documentElement;
const range = document.getElementById('range');
range.addEventListener('change', function() {
root.style.setProperty('--size', `${this.value}px`)
})
CSS 中更有一個神奇的運算方法 calc,此函式可以無視讓不同單位的數值直接做運算,如百分比與絕對單位運算(ex: 100% - 30px)。CSS Variables 也同樣能夠搭配此方法產生新的值。
calc 是作為函式使用,因此可將預期運算的方法置入 calc() 的括號內即可。
// css
.box-1 {
width: calc(100% - var(--size));
}
// javascript
const root = document.documentElement;
const range = document.getElementById('range');
console.log(range)
range.addEventListener('change', function() {
root.style.setProperty('--size', `${this.value}px`);
})
// css
:root {
--c: 255;
}
html, body {
height: 100vh;
margin: 0;
padding: 0;
}
body {
background-image: linear-gradient(
rgb(
calc(var(--c) - 60), calc(var(--c) - 40), calc(var(--c))
),
rgb(
calc(var(--c) - 20), calc(var(--c) - 10), calc(var(--c))
)
);
}
// javascript
const root = document.documentElement;
const range = document.getElementById('range');
range.addEventListener('change', function() {
root.style.setProperty('--c', this.value)
})
從這裡就可以感覺得到,CSS 變數能運用的範圍真的很廣,而且活用成功的話,程式碼也能跟著精簡許多。
本文同步發佈於我的個人網站 Annie Code Life