以下内容适用于 CSS 2.1+。请注意,我input type="range"
在本示例中使用 HTML5 只是为了便于使用。本示例中还为不支持此功能的浏览器实现了 Javascript 后备代码(input type
默认为text
)。
最好使用自定义滑块,但我相信这个问题是关于亮度控制的,而不是关于滑块的。
它的工作方式是将图像与一些相等比例的元素重叠,并且不透明度取决于滑块/文本输入值。如果值 > 50,此元素的背景颜色将为白色,而值 < 50 则为黑色。
链接到 JS 小提琴
#HTML
<div id="container">
<div id="brightness"></div>
<img src="http://placehold.it/400x400" />
</div>
Brightness (0 - 100):<br />
<input type="range" id="controls" value="50" min="0" max="100" maxlength="3">
#Javascript
window.onload = function()
{
var brightness = document.getElementById('brightness');
controls = document.getElementById('controls');
controls.onkeyup = controls.onchange = function()
{
var brightness = document.getElementById('brightness'),
val = parseInt(this.value) - 50;
if (val > 50 || val < -50)
return false;
brightness.style.backgroundColor = val > 0 ? 'white' : 'black';
brightness.style.opacity = Math.abs(val/100) * 2;
}
}
#CSS
#container{
width:400px;
height:400px;
margin-bottom:10px;
border:1px solid rgb(127, 127, 127);
}
#brightness{
width:400px;
height:400px;
background:white;
position:absolute;
opacity:0;
}
#controls{
width:400px;
height:22px;
padding:0 5px;
}