javascript - How can I gradate between two colors using CSS/JS on a range slider?
问题描述
As you can see the switch on colors is immediate rather than gradating from red to white to blue. Any suggestions?
function rangeSlider() {
//get range slider as DOM object
var rangeSlider = document.getElementById("test1").value;
//get div "container" as DOM object
var container1 = document.getElementById("container1");
if (rangeSlider < 50) {
$("#container1").css("backgroundColor", "blue");
} else {
$("#container1").css("backgroundColor", "red");
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container1" onchange="rangeSlider()">
<form action="#">
<div class="range-field">
<input type="range" id="test1" onchange="rangeSlider()" min="0" max="100" />
</div>
解决方案
一种解决方案是使用颜色的 RGBA 值并计算 alpha(不透明度)。
示例:0 - 49 是蓝色,50 白色,51 - 100 是红色。
function rangeSlider() {
//get range slider as DOM object
var rangeSlider = document.getElementById("test1").value;
//get div "container" as DOM object
var container1 = document.getElementById("container1");
if (rangeSlider < 50) {
$("#container1").css("backgroundColor", "rgba(0,0,255," + ( 1 -rangeSlider / 50 ) + ")");
} else {
$("#container1").css("backgroundColor", "rgba(255,0,0," + ( rangeSlider - 50 ) / 50 + ")");
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container1" onchange="rangeSlider()">
<form action="#">
<div class="range-field">
<input type="range" id="test1" oninput="rangeSlider()" min="0" max="100" />
</div>
推荐阅读
- javascript - 通过 CSS 更新 shadow dom 中设置的样式
- javascript - 并且不能与 Loopback 中的其他查询字段一起使用
- domain-driven-design - 食品配送用例中的限界上下文
- laravel - Laravel 路由返回 404
- django - Django 对象不可迭代。如何获得最多查看的对象
- php - 如何在 PHP 中正确地将参数传递给肥皂网络服务
- c# - 如何在 Google Datastore C# .NET 中建模多对多关系
- python - 数组作为位置参数
- javascript - 将 javascript 代码的输出放入文件中
- bash - 从文本文件中提取列值等于模式的行