必要なブラウザサポートのレベルによっては、単純なメディアクエリで問題が解決する場合があります。
<!doctype html>
<html>
<head>
<style>
/* SET THE DEFAULT RULES FOR SHORT SCREENS */
.bottom-floaty {
height:200px;
width: 400px;
margin: 15px; padding: 10px;
outline: 1px dashed #aaf;
}
/* HERE FOLLOWS THE MAGICAL MEDIA QUERY FOR TALL SCREENS */
@media all and (max-height: 500px) {
.bottom-floaty { float:left; }
}
</style>
</head>
<body>
<div class="bottom-floaty">
I'm a sometimes floaty div
</div>
<div class="bottom-floaty">
I'm also a sometimes floaty div
</div>
</body>
</html>
これが私が見た効果です:
CSS3メディアクエリを使用すると、ビューポートの高さに基づいて任意のルールcssを設定できます。w3cには、メディアクエリに関する多くの情報があります。
ビューポートの高さに関する関連スニペット:
「高さ」メディア機能は、出力デバイスのターゲット表示領域の高さを表します。連続メディアの場合、これは、レンダリングされたスクロールバー(存在する場合)のサイズを含むビューポートの高さです。ページメディアの場合、これはページボックスの高さです。
指定は負にすることはできません。
Mozilla Developer Networkにもう少しアクセスしやすいと思うことがありますが、この場合、基本的に同じ情報を提供します。
メディアクエリをレンダリングできない古いブラウザをサポートする必要がありますか?特にjQueryのようなライブラリを使用すると、javascriptポリフィルを作成するのはかなり簡単なはずです。
編集
私はあなたの問題により密接に一致するように私のコード例を修正しました。あなたはコメントしました:
Jashwant:divを他の下に置くことが常に優先されます。したがって、右側にスペースがあり、下部にはスペースがない場合にのみ、div2はdiv1の右側に配置する必要があります。–ジョナス
また、例のように幅を400pxに設定しました。
これで、画面が短すぎて垂直にできない場合にのみ左に浮き、右側に両方を収めるのに十分なスペースがあります。それ以外の場合は、常に垂直です。