This bugged me for a long time as well, but I've found a decent solution.
First, you'll need some way of targeting a specific browser in your CSS. You could use Modernizr, or my personal favorite, this sweet little snippet from http://rog.ie/post/9089341529/html5boilerplatejs
<script>
var b = document.documentElement;
b.setAttribute('data-useragent', navigator.userAgent);
b.setAttribute('data-platform', navigator.platform );
</script>
Next, in your HTML document, within your button, add a <span> tag that holds the button's contents. Style it to look fine in the friendly browsers, then add this bit of code to the button's :active styles in your CSS:
html[data-useragent*='Opera']
You can replace Opera with any browser name, then style the span to your liking.
It may look something like this:
html[data-useragent*='Opera'] button:active span {
position: relative;
left: -1px;
top: -1px;
}
It's a bit hacky, and probably overkill for such a minor problem, but it works. Best of all, you have precise control over everything. You can even target just Windows machines, or iPads (with data-platform='iPad'), or a specific version of a browser, like this:
html[data-useragent*='Chrome/13.0']
Good luck!