Viewport width can be obtained via CSS, e.g. by using a media query for every screen width:
@media (min-width: 400px) {
.thing {
background-image: url(size-400.png);
}
}
@media (min-width: 401px) {
.thing {
background-image: url(size-401.png);
}
}
You could combine this with pixel density for even more specificity.