2012-10-12 4 views
11

レスポンシブウェブサイトを構築しています。ユーザーエクスペリエンスのために、モバイルからデスクトップへのレイアウト変更が必要です。具体的には、いくつかのHTML要素の順序を切り替える必要があります。レスポンシブウェブデザインでレイアウトが変更されたときのHTML要素の切り替え順序

デスクトップとモバイルのHTML要素の順序が異なる必要があります。

モバイル

<div class="one">One</div> 
<div class="two">Two</div> 
<div class="three">Three</div> 

順序はこれは私が達成したいものの簡易版であるデスクトップため

<div class="one">One</div> 
<div class="three">Three</div> 
<div class="two">Two</div> 

を切り替えます。私はそれがprogressive enhancementと呼ばれると思います。ウェブデザインのエキスパートはhtml要素をどのように動かすのですか? JavaScriptを使って?それは正常でしょうか? jQueryプラグインはありますか?あなたは何をする必要があるかjqueryのことで、これを行うことができ

答えて

11

はちょうどあなたのレイアウトに応じて、これを達成するためのいくつかの方法があるだろう

if (mobile == true) { 

    $('div.three').insertBefore($('div.two')); 
} 
+0

感謝をチェックしてください。私はこれが良い習慣であるかどうかは分かりませんでした。私の特別なケースでは、もし私がDOMを操作しようとすると、HTML5のアウトラインは、私が欲しくない方法に影響を与えました。ビジネスの必要性を満たす優れた視覚的なユーザーエクスペリエンスと、よく構成されたHTML5のアウトラインのどちらかを選択する必要があるようです。 –

+0

この例では、 'three()の代わりに' $( 'div.3')... 'を読んではいけませんか? – BandonRandon

+6

無効なCSSが必要な場合のみ::) http://www.w3.org/TR/CSS2/syndata.html#characters – trapper

12

周りのDOMを変更するためのjQueryを使用しています。あなたのdivがデスクトップ上に並んでいて、モバイル上に縦に積み重なっている場合は、フロートとメディアクエリの組み合わせを使用して正しい順序で表示することができます。

最終的なフォールバックがない場合、4つのdivを作成することがあります。

<div>one</div> 
<div>three(mobile)</div> 
<div>two</div> 
<div>three(desktop)</div> 

メディアクエリを使用して、デバイスに応じて関連する「3つの」divを非表示にします。

+1

この方法はパフォーマンスの観点から悪い習慣ではないでしょうか?モバイルDOMは隠されたコンテンツによって肥大化するでしょう。 – JonnyIrving

+0

私の意見では、そのような場合にjsを使用するのではなく、その場合に余分なdivを持つことは悪いことではありません。 – electroid

0

次のコードは、モバイルでのdivをスタックし、デスクトップ上に、それは2列のレイアウト

<div class="main"> 

</div> 
<div class="aside"> 
</div> 

<style type="text/css"> 
    @media only screen and (min-width: 768px) { 
     .main {float:right;width:60%} 
     .aside {float:left;width:40%} 
    } 
</style> 
0

で試してみてください、次のようになります。 表示に:曲げます。 フレックス方向:列;ここ

さらに詳しい情報: https://developer.mozilla.org/en-US/docs/Web/CSS/flex

+5

リンク先のページから関連情報を取り出して回答に投稿できますか?リンクされたページが変更された場合、この回答はずっと価値がなくなります。 –

10

私はグーグル経由で渡って来たので、この質問を復活し、既存の答えは時代遅れです。私が使用したソリューションはonly one with the downvoteでしたので、詳しく説明します。

あなたはcolumn/column-reverseプロパティを使用して、再注文の要素を可能にするdisplay:flexを使用する:

.container{ display:flex;flex-direction:column } 
@media screen and (min-width:600px) { 
    .container{ flex-direction:column-reverse } 
} 

JSFiddle here、およびいくつかのサポートテーブル hereを参照してください。

はまた、カップルのCSSのポストプロセッサ herehere

+0

であり、要素が横並びになるようにするには '行方向'と '行方向逆方向'との 'flex-direction'を使用できます。 – Yay295

+0

あなたはそれらを一緒に混ぜ合わせて、要素がある場合には並んで、別の場合には互いの上に並べることさえできます。 – Yay295

関連する問題