Если уж речь только про видимую область, то проще всего сделать через position: fixed;
(function() {
for (var i = 0, a = '0 0'.split(' '), n = 'left top right bottom'.split(' '), e; i < 4; ++i) {
if (e) e = e.cloneNode(false);
else { e = document.createElement('div');
e.style.cssText = 'position: fixed; width: 20px; height: 20px; border: 1px solid #000; background: #fff';
}
for (var j = 0; j < 4; ++ j) e.style[n[j]] = a[(4 + i - j) % 4];
document.body.appendChild(e);
}
})();
А поддержку 6-го осла, если нужна, можно сделать через expression.
Величина левого margin-а равна document.body.offsetLeft, а правого document.documentElement.clientWidth - document.body.offsetLeft - document.body.offsetWidth