Creating a background image for all the element to fit into, is generally not a good idea.
It is much better to have a background that is suitable for repeating or being cut, and then style each element with its own background and border images.
-------
But:
The only way to achieve your goal is to let the browser resize the image based on the dimensions of the view port.
Code:
body {
background-image:url(yourURL);
background-size:100% auto;
}
will scale the image so it fit the width of the page.
and the
Code:
element { width:xxx% }
will make the element to fit in the box, scale width the same ratio.
but then you need to set the height of the box element to the same scale ratio.
And you will need to use javascript to make the box elements height scale with the same ratio.
And the vertical position/margin of each element will also have to be calculated through javascript
You will risk ending up width a mess of javascript and css that probably only work for the browser you used for testing. - And extremely difficult to edit.