diff --git a/htdocs/css/openwebrx.css b/htdocs/css/openwebrx.css
index f4fa7f6..c2e87fc 100644
--- a/htdocs/css/openwebrx.css
+++ b/htdocs/css/openwebrx.css
@@ -676,8 +676,7 @@ img.openwebrx-mirror-img
}
}
-#openwebrx-smeter-outer
-{
+#openwebrx-smeter {
border-color: #888;
border-style: solid;
border-width: 0px;
@@ -685,16 +684,20 @@ img.openwebrx-mirror-img
height: 7px;
background-color: #373737;
border-radius: 3px;
- position: relative;
+ overflow: hidden;
}
-#openwebrx-smeter-bar
-{
- transition: all 0.2s linear;
- width: 0px;
- height: 7px;
+
+.openwebrx-smeter-bar {
+ transition-property: transform;
+ transition-duration: 0.2s;
+ transition-timing-function: linear;
+ will-change: transform;
+ transform: translate(-100%) translateZ(0);
+ width: 100%;
+ height: 100%;
background: linear-gradient(to top, #ff5939 , #961700);
- position: absolute;
- margin: 0; padding: 0; left: 0;
+ margin: 0;
+ padding: 0;
border-radius: 3px;
}
diff --git a/htdocs/index.html b/htdocs/index.html
index 21dd986..3932923 100644
--- a/htdocs/index.html
+++ b/htdocs/index.html
@@ -151,8 +151,8 @@
0 dB
diff --git a/htdocs/openwebrx.js b/htdocs/openwebrx.js
index 594f0b5..05bce97 100644
--- a/htdocs/openwebrx.js
+++ b/htdocs/openwebrx.js
@@ -151,13 +151,19 @@ function waterfallColorsContinuous(levels) {
function setSmeterRelativeValue(value) {
if (value < 0) value = 0;
if (value > 1.0) value = 1.0;
- var bar = e("openwebrx-smeter-bar");
- var outer = e("openwebrx-smeter-outer");
- bar.style.width = (outer.offsetWidth * value).toString() + "px";
- var bgRed = "linear-gradient(to top, #ff5939 , #961700)";
- var bgGreen = "linear-gradient(to top, #22ff2f , #008908)";
- var bgYellow = "linear-gradient(to top, #fff720 , #a49f00)";
- bar.style.background = (value > 0.9) ? bgRed : ((value > 0.7) ? bgYellow : bgGreen);
+ var $meter = $("#openwebrx-smeter");
+ var $bar = $meter.find(".openwebrx-smeter-bar");
+ $bar.css({transform: 'translate(' + ((value - 1) * 100) + '%) translateZ(0)'});
+ if (value > 0.9) {
+ // red
+ $bar.css({background: 'linear-gradient(to top, #ff5939 , #961700)'});
+ } else if (value > 0.7) {
+ // yellow
+ $bar.css({background: 'linear-gradient(to top, #fff720 , #a49f00)'});
+ } else {
+ // red
+ $bar.css({background: 'linear-gradient(to top, #22ff2f , #008908)'});
+ }
}
function setSquelchSliderBackground(val) {