以下は 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;
}