Hmmm, I can imagine two options
1) use an element inside the button and set a background for that element with some opacity like this https://codepen.io/anon/pen/WLNbPG (it's a bit hacky though)
<button id='button1'><span>Darker</span></button>
<button id='button2'><span>Lighter</span></button>
and the CSS
button {
border: 0;
background-color: red;
padding: 0;
}
button span {
display: block;
padding: 1em
}
#button1:hover span {
background-color: rgba(0,0,0,.4);
}
#button2:hover span {
background-color: rgba(255,255,255,.4);
}
That way the span background with it's opacity can make the effect of makign the background of the button darker or lighter.
2) use an image as the button background and, on hover, add a color with alpha values and use background-blend-mode: darken/lighten https://developer.mozilla.org/en-US/docs/Web/CSS/background-blend-mode but it doesn't have good support for Edge or Android's webviews.