Given a template where the HTML cannot be modified because of other requirements, how is it possible to display (rearrange) a div
above another div
when they are not in that order in the HTML? Both div
s contain data that varies in height and width.
<div id="wrapper">
<div id="firstDiv">
Content to be below in this situation
</div>
<div id="secondDiv">
Content to be above in this situation
</div>
</div>
Other elements
Hopefully it is obvious that the desired result is:
Content to be above in this situation
Content to be below in this situation
Other elements
When the dimensions are fixed it easy to position them where needed, but I need some ideas for when the content is variable. For the sake of this scenario, please just consider the width to be 100% on both.
I am specifically looking for a CSS only solution (and it will probably have to be met with other solutions if that doesn't pan out).
There are other elements following this. A good suggestion was mentioned given the limited scenario I demonstrated -- given that it might be the best answer, but I am looking to also make sure elements following this aren't impacted.
With CSS3 flexbox layout module, you can order divs.
Or set an absolute position to the element and work off the margins by declaring them from the edge of the page rather than the edge of the object. Use % as its more suitable for other screen sizes ect. This is how i overcame the issue...Thanks, hope its what your looking for...
This solution uses only CSS and works with variable content
A CSS-only solution (works for IE10+) – use Flexbox's
order
property:Demo: http://jsfiddle.net/hqya7q6o/596/
More info: https://developer.mozilla.org/en-US/docs/Web/CSS/order
If you know, or can enforce the size for the to-be-upper element, you could use
In your css and give the divs their position.
otherwise javascript seems the only way to go:
or something similar.
edit: I just found this which might be useful: w3 document css3 move-to