Если уж речь только про видимую область, то проще всего сделать через 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