2013-10-12 9 views
6

私はモバイルウェブサイトを開発しています。フルスクリーン画像は、ウェブサイトが読み込まれると浮動レイヤーとして表示されます。ページがロードされた後、フルスクリーン:私の携帯サイトは、窓の高さ画像のスクロールが制限されています

Bを超えて多くのコンテンツが含まれていますenter image description here

Aが

以下を参照してください........画像はコンテンツの上にフローティングレイヤーとして表示されます。画像はウィンドウの高さを超えます

C:ユーザーが下にスクロールすると、画像の下の部分は表示できますが、Webサイトのコンテンツは表示されません。ユーザーがどのようにスクロールしようとしても、画像の下部が画面の下から外れることはありません。

私はCをどのように達成することができますか?

また、状況Bでは、ユーザーが大画面のスマートフォンを使用している場合、画像が画面の高さを超えないことがあります。この場合、画像は画面の上部に固定され、スクロールできません。

上記のすべてがjqueryを使用しないことで達成できる場合は、より良いでしょう。しかし、それが必須であれば、それはまだOKです.......

多くのありがとう。

+6

+1の手描きの例 –

+0

jQueryはJavaScriptです。あなたはいつでもjQueryの代わりに純粋なJavaScriptを使うことができます。 – ComFreek

答えて

1

一般的なエフェクトはCSSのみで実行できますが、エフェクトのオン/オフを切り替えるにはjavascriptが必要です。

bodyoverflow: hiddenであるのに対して、一般的な考え方は、画像を含むレイヤーでposition: fixedoverflow: scrollを使用することです。このような状況では、オーバーレイのコンテンツはスクロールできますが、本文はスクロールできません。

これはデスクトップ上で動作しますが、bodyoverflow: hiddenにもかかわらずすべてのコンテンツがレンダリングされるモバイルでは少し異なります。迅速な回避策はbodyにもposition: fixedを適用することです。これが意図された動作かどうかはわかりませんが、SafariとiOSの両方のChromeでうまく動作します。

マークアップのアウトライン:

<body class="no-scroll"> 
    <section class="content"> 
    /* content here */ 
    </section> 

    <aside class="overlay"> 
    <img src="img.jpg"> 
    </aside> 
</body> 

CSS:あなたはbody上のクラスno-scrollを切り替えるためにはJavaScriptを使用することができます。これにより

.no-scroll { 
    overflow: hidden; 
    position: fixed; 
} 

.overlay { 
    overflow-y: scroll; 
    position: fixed; 
    top: 0; right: 0; bottom: 0; left: 0; 
    display: none; 
} 

.overlay img { 
    width: 100%; 
    height: auto; 
} 

.no-scroll .overlay { 
    display: block; 
} 

。そこには、オーバーフローしているコンテンツが隠されており、overlayが表示されます。それがなければ、overlayは隠されています。

ここでは、効果の例を示します無スクロールクラスやJavaScript、しかし、ちょうどそれが動作することを示すために)

  1. Full screen
  2. With markup/CSS visible

編集:上記の例で

、私が与えましたoverlayは半透明の背景であり、その内部の画像はmax-widthが100%であった。画面全体にイメージを塗りつぶしたい場合は、max-widthを通常のwidthに変更します。

編集2:

要求されたとして、ここでは効果を切り替えるjQueryの機能があります。

$(".close").click(function() { 
    $("body").toggleClass("no-scroll"); 
}); 

ちょうど <button>または任意のクラス名 closeを与え、それがオンとオフ効果を切り替えます。

+0

この回答は素晴らしいです!ありがとうございました= D –

+0

アドオンに関する質問:ユーザーが画像レイヤーを閉じたときに、本体のプロパティを通常のレジューム(オーバーフローを削除:非表示と固定:固定)することは可能でしょうか? –

+0

はい。私の答えで書いたように、あなたはおそらくjavascriptを使用する必要があります。 jQueryについて話をしたので、私はそれを使って例を挙げます。 1分で私のアップデートを見てください。 –

関連する問題