html部分
<h2>Update CSS Variables with <span class='hl'>JS</span></h2>
<div class="controls">
<label for="spacing">Spacing:</label>
<input type="range" name="spacing" min="10" max="200" value="10" data-sizing="px">
<label for="blur">Blur:</label>
<input type="range" name="blur" min="0" max="25" value="10" data-sizing="px">
<label for="base">Base Color</label>
<input type="color" name="base" value="#ffc600">
<br>
<code class="result">
img {
padding: <label id="code-spacing">10px</label>;
filter: blur(<label id="code-blur">10px</label>);
background: <label id="code-base">#8aa8af</label>;
}
</code>
</div>
<img src="https://source.unsplash.com/7bwQXzbF6KE/800x500">
css部分
<style>
:root{
--spacing :11px;
--blur:5px;
--base:#8aa8af
}
img{
padding:var(--spacing);
background:var(--base);
filter:blur(var(--blur))
}
body {
text-align: center;
}
body {
background: #193549;
color: white;
font-family: 'helvetica neue', sans-serif;
font-weight: 100;
font-size: 50px;
}
.controls {
margin-bottom: 50px;
}
input {
width:100px;
}
</style>
使用了css的var()函数。
var()
JS部分
<script>
let inputs = document.querySelectorAll('.controls input');
function setValue(){
//获取单位
let suffix = this.dataset.sizing || '';
//获取document中元素style设置值
document.documentElement.style.setProperty(`--${this.name}`,this.value + suffix)
//获取显示值
document.getElementById(`code-${this.name}`).innerText = this.value + suffix
}
//修改值
inputs.forEach(input => input.addEventListener('change',setValue))
//修改显示值
inputs.forEach(input => input.addEventListener('mouseover',setValue))
</script>
使用了js的arr.forEach()以及addEventListener函数。
forEach()
addEventListener()
文中传送部分均为他人文章,此处仅作本人参考,侵删。