2011-12-06 2 views
1

ブログポストのタイトルの横にあるソーシャルメディアパネルを作成しようとしています(ビューポートの上部から約200ピクセルほど)、ユーザーがページをスクロールしてパネルを固定したいソーシャルパネルの上部がビューポートの上部に当たったときにのみ表示されます。私がしようとしていることの一例は、Mashableのウェブサイトの投稿です(例:http://mashable.com/2011/12/05/facetones/)。コンテンツパネルの左側にあるソーシャルメディアパネルが、ブラウザビューポートの上部に当たるまでページとともにスクロールして固定される方法に注目してください。純粋なCSSや(より良い)jQueryでこれを行う方法を説明しているチュートリアルでは、自分で何も見つけられなかったので、大きな助けになります。私はちょうどそのようなことを探し始める方法を知りませんでした。ビューポートの上部にヒットした後、HTMLパネルをページに固定するにはどうすればよいですか?

現在、コンテンツパネルの横のページに固定されたソーシャルメディアパネルを表示するためにHTML/CSSを設定する方法を理解しましたが、完全に動作しますが、ページをスクロールしてください上記のようにビューポートの上部に当たったときに固定されるようになりました。私のコードが現在行っているように、スクロールせずにページに正確に固定されています。ここに私のコードは、これまでのところです:

HTML:

<div id="fixed"> 

    <div id="sharebox-wrapper"> 

     <div id="sharebox"> 

      <div class="inner"> 

       share 

      </div> 

     </div> 

    </div> 

</div> 

CSS:

#fixed {position:fixed;} 
#sharebox-wrapper {position:relative;left:0px;top:0px;} 
#sharebox {width:100px;background:#F3F3F3 url(images/sharebox-bg.png) repeat-y right 0px;border:1px solid #CFCFCF;border-right:0px;position:absolute;left:-116px;top:25px;height:400px;} 
#sharebox .inner {padding:12px;} 
+0

_ "どのように純粋なCSSまたは(より良いまだ)jQueryを使ってこれを行うには、" _ - なぜ、純粋なCSSいないお好みのオプションがありますか? – nnnnnn

+0

ソーシャルメディアボックスが標準CSSを使用して自分自身を修正するのではなく、ページの一番上に当たった後、jqueryアニメーションでスクロールダウンできるようにしたのはうれしいことです。私はそれを明確にすべきだったと思う。 –

答えて

5

それは本当に非常に単純です。固定配置を記述するクラスを作成します。ウィンドウのスクロールイベントを監視します。ソーシャルメディアのトップが画面外に出る場合は、それを固定に切り替えます。そうでない場合は、それ自体を正常に配置してください。私はこれを書きましたが、うまくいくはずです。

http://jsfiddle.net/zpErD/1/

var mediaTop = $('div#sharebox-wrapper').offset().top; 
var media = $('div#sharebox-wrapper'); 

$(document).scroll(function() { 
    var scrollTop = $(document).scrollTop(); 

    //fix/unfix as necessary 
    if (mediaTop < scrollTop) { 
     $(media).addClass('fixed'); 
    } 
    else { 
     $(media).removeClass('fixed'); 
    } 
}); 
+1

これは、#socialmediaが固定された位置に切り替えられたときに親コンテナが高さに移動しないようにすることだけを考えています。なぜなら、その要素の高さは、親から外したときに親から減らされるからです。 –

+0

それでは、上記のHTMLに基づいて、htmlの外観はどうなりますか?固定クラスを持つdiv要素は、socialmedia idを持つdiv要素の内部にネストされますか?私はこれを動作させることはできませんし、htmlをセットアップする方法がわかりません...ありがとう! –

+0

@brianmcculloh - あなたがIDでコンテナに相対的な位置付けをしているので、おそらく正しく動作しませんでした。したがって、IDをCSSのクラスより優先させるため、クラスを追加して固定状態の仕事を切り替えます。私は少しコードを整理し、あなたのための実例を投稿しました。 – mrtsherman

関連する問題