2013-06-09 21 views
11

私はSnap.jsプラグインを使用しています(スクロール側のドロワー/パネルを作成することができます)。絶対配置されたdiv内に固定配置されたdivが必要

これは、3つの絶対配置されたdivを作成することによって機能します。その1つにメインコンテンツが含まれています。

divが絶対配置されたdivの内側にある場合、ウィンドウの上部にdivを配置する方法はありますか?

現時点では、私はちょうど固定divがブラウザの上部ではなく絶対配置されたdivの上部にピン止めされています。スクロールすると、divはメインコンテンツの上部に固定されますが、ウィンドウは固定されません。例えば

:私はスクロールオフセットを追跡し、手動でのパフォーマンスのために理想的ではない子のdivのトップの位置を調整するためにJavaScriptを使用している時点では

<div style="position:absolute;"> 

    <div style="position:fixed;top:0"> 
     <!-- some content which needs to be pinned to top of window --> 
    </div> 

</div> 

+1

絶対配置divが印加以下CSS有する:私はそれを削除した場合、固定要素は、それが必要として動作し、ウィンドウの上部に固定され、translate3d(0PX、0PX、0PX)を。これはなぜですか? –

+0

これはあなたのサンプルコードがします。 (それはあなたが意図したものですか?)要素に固定の位置を設定すると、要素の流れから取り除かれ、ビューポートに対して相対位置になります。 snap.jsがこれを壊すと言っていますか? – BjornJohnson

+0

興味深い。これは役に立ちますか? http://code.google.com/p/chromium/issues/detail?id=20574 – BjornJohnson

答えて

2

参照 - 、インターネットエクスプローラで任意のアイデアをスクロールしたとき、それはジッタ。

<div id="displayed-content" class="snap-content scrollable"> 
    <div><!-- regular content --></div> 
     <div><!-- fixed content --></div> 
    <div><!-- footer content --></div> 
</div> 

http://jsfiddle.net/bxRVT/

+0

あなたはここでかなり仕事をしました。 IEのパフォーマンスをどのように向上させるのがベストか。あなたは本当にCSS3技術の最先端にいます。私の最初の推測は、変換がjQueryの.scrollTopでうまくいきませんが、それはあなた自身が行ったことを改善しようとする全体的なプロジェクトになります。私はあなたに努力のための投票を与えるでしょう! –

+0

ありがとう、私は何かをより良く理解するまで上記の実装を使用しています。 –

0

私はあなたがやろうとしているものについて少し推測していますが、あなたはこのような何かを探している可能性があります:

<div class="local-wrap"> 
    <div class="fixed"> 
     Some content which needs to be pinned to top of window 
    </div> 
    <div class="port"> 
     Regular content... 
    </div> 
</div> 

と、次のCSS適用されます。

.local-wrap { 
    position: relative; 
} 
.local-wrap .fixed { 
    position: absolute; 
    top: 0; 
    left: 0; 
    background-color: lightgray; 
    width: 100%; 
    height: 5.00em; 
} 
.local-wrap .port { 
    position: relative; 
    top: 5.00em; 
    min-height: 10em; 
    height: 15em; 
    overflow: auto; 
    border: 1px solid gray; 
    border-width: 0 1px 1px 1px; 
} 

デモフィドルを: http://jsfiddle.net/audetwebdesign/pTJbW/

基本的に、ブロック要素に対して固定ブロックを取得するには、絶対配置を使用する必要があります。固定配置は、常にルート要素またはビューポートに対して行われるため、position: fixedは役に立ちません。

.local-wrapコンテナを定義し、2つの子ブロックを持つコンテナを定義します.1つは 、もう1つは.local-wrap、もう1つは通常のフローです。私はposition: relativeを使ってそれを.fixedの下に置いていましたが、一番上のマージンも働いていました。

ローカルウィンドウ/ポート内のコンテンツをスクロールするための高さをいくつか修正しましたが、デザインやアプリケーションによって変更することができます。考慮すべきその他の考慮事項があるかもしれないので、

免責

私はsnap.jsに精通していないです。あなたはdiv.transformedそれを呼んで、要素に変換を適用する場合にはCSS3の

コメントは、CSS3仕様によると

要素を変形して固定し、div.transformed新しいスタッキングコンテキストを作成し、含むとして機能それが含まれている任意の固定位置の子要素をブロックします。そのため、シナリオでは、固定位置コンテキストがウィンドウの上部にとどまっていません。参考のため

は、私は私のjavascriptの回避策を示すバイオリンを作ったMozilla Developer Network -> CSS Reference -> Transform

+0

残念ながら、divはウィンドウの上部に固定する必要がありますが、ウィンドウのスクロールはexampleのスクロールでの.local-wrapと同じです。固定位置divを使用する通常の方法は動作しますが、css tranformが親の絶対配置されたdivから削除されている場合のみです。このための回避策はありますか?現時点では、ウィンドウがスクロールされるたびに浮動小数点divのトップCSSプロパティを調整するためにjavascriptを使用しています - これは一部のブラウザでは正常に動作しますが、他のものでは不安定です。 –

+1

私はこのより良いhttp://jsfiddle.net/pTJbW/10/を説明するためにjsfiddleを作成しました。スクロールバーが出力に表示されるまでブラウザーウィンドウを小さくします。スクロールすると固定ヘッダーがスクロールします。ただし、コンテンツと更新に関するCSSでCSS変換を削除した場合、ヘッダーをスクロールして固定されていることがわかります。 –

+0

良いフィドル、画像ははるかに明確になりました。私が物事を理解していれば、CSSのトランスフォームプロパティを削除すると、snap.jsは機能しません。これは回避しようとする問題です。 –

関連する問題