As has already been said, most large desktop applications can be put into reverse video with some suitable combination of OS settings and application themes or color schemes.
Not the web. Unfortunately, most websites employ a complex layout made of text, CSS, and images, not to mention Javascript, that makes it very hard to enforce any kind of user CSS rules.
For this reason I've found the High Contrast Google Chrome extension a godsend. It allows you to invert the colors of the entire website, not just the text. It does so by applying a visual filter to the entire rendered page. You can choose among a few builtin settings (grayscale, full color invert, black and white inverted, and such) and set site-specific preferences, for example to leave alone sites that are already white on black.
With a bit of tweaking you can even create your own settings, by editing the extension's CSS file. On my Mac the file is found at ~/Library/Application Support/Google/Chrome/Default/Extensions/djcfdncoelnlbldjfhinnjlhdjlikmph/0.4_0/highcontrast.css.
I've edited its default "Inverted Color" settings so that it only inverts the luminance: I want red things to stay red and green ones to stay green (think red flags and green checkmarks) but with the luminance inverted, so that light things become dark and the other way around.
Here is my patch, if you'd like to try it out. You'll have to remove the main a3 rule and the ones dealing with jpeg files, and put this in their place:
html[hc="a3"] { -webkit-filter: invert() hue-rotate(180deg) brightness(20%) contrast(130%); }