A solution that's often used: bootstrap. But I'm sure there are other solutions.

It certainly takes a lot of javascript to change the lay-out of your site depending on the size of the screen it's shown on.