Well, it looks like I was wrong - this was indeed working, but the combination of scrolling to the bottom of the page programmatically was causing issues with the perceived transition. I got it working here (http://jsfiddle.net/jDZfY/) and realized that something else was causing the issue, and found a workaround that seems to be working for now.
Test case HTML:
<body data-ng-app="">
<div data-ng-controller="controller">
<div class="background transition" style="width: {{width}}px; height: {{height}}px; background-position: {{bgPos}}px 0px;">
</div>
<button data-ng-click="bgPos = bgPos + 50">Change background position</button>
<button data-ng-click="height = height + 50">Change height</button>
</div>
</body>
Test case JS:
function controller($scope) {
$scope.height = 200;
$scope.width = 500;
$scope.bgPos = 0;
}
Test case CSS:
.transition {
-webkit-transition: background 1000ms ease-out, height 1000ms ease-out;
-moz-transition: background 1000ms ease-out, height 1000ms ease-out;
-ms-transition: background 1000ms ease-out, height 1000ms ease-out;
-o-transition: background 1000ms ease-out, height 1000ms ease-out;
transition: background 1000ms ease-out, height 1000ms ease-out;
}
.background {
background: url('http://placehold.it/100x100');
}