2011-07-08 3 views
0

特定のファイルをインラインで編集するためのスクリプトがあります。基本的に、各ファイルはセクションに分割され、セクション上にマウスを移動すると、その特定のセクションを編集するために使用できる一連のツール(画像ボタン付きのdiv)が表示されます。親要素(セクション)はposition: relativeに設定され、ツールセットはposition:absoluteに設定され、セクションの右側に設定されています。これはすべてうまくいきます。特にこれらの多くはかなり小さいからです。要素を画面の中央に維持しようとしましたが、親要素に含まれています

しかし、これらのセクションの多くはかなり大きくなり、2画面以上の長さに達することがあります。このような場合、ツールがユーザーのスクロールでフローをソートするようにしたいので、ユーザーがセクションの垂直中央を見ている場合、ボタンは垂直中央にも置かれますが、垂直ユーザーの画面の中央がセクションを越えてスクロールしますが、ユーザーはセクション上にまだホバリングしていますので、ツールが親要素内に残っていて、飛び出すことはできません。

ユーザーのスクロールで要素を移動するスクリプトが既にあります。画面外に出た場合、要素をバインドする方法がわかりませんそれは親です。 012:DR:ユーザーのウィンドウ内で垂直方向の中央に配置しようとする要素を作成する方法はありますが、親要素を残すことはできません。

答えて

1

ここで私はアンドレアスの提案

$(window).scroll(function(){ 
    var a = $(window).scrollTop() + ($(window).height() * .35); 
    var b = $("#movedelement"); 
    var c = $(window).scrollTop() + ($(window).height() * .48); 

    if (a < (b.parent().offset().top + 8)) 
     b.css({position: "absolute", top: "1em" }); 
    else if (c > (b.parent().offset().top + b.parent().height() - 8)) 
     b.css({position: "absolute", top: b.parent().height() - 100 }); 
    else 
     b.css({position: "fixed", top: "35%" }); 
} 

要素の高さのために周りにいくつかの数字を微調整に基づいて思い付いた迅速な実装があります。汚いですが、動作します。

1

縦に整列されているが、セクションが上がったときにのみ表示されますが、そのトリックはありませんか?

+0

いいえ、セクションの中にはテキストの行が1行しかない場合があるため、セクションは画面の中央にあるとは限りません。セクションが上に乗っていないときにツールは隠されているので、セクションの外側にいる場合にはそれらに到達することはできません。同じボタンのセットも共有され、再利用されるので、正しい場所になければ、ユーザーは実際に編集しているセクションを特定することができなくなります。 – shmeeps

+0

それから、画面の外に出たら、それを 'position:fixed;'にしてみることができます。しかし、それはjQuery、または少なくともJSを伴います。単純化された例を参照してください[ここ](http://stackoverflow.com/questions/1216114/how-can-i-make-a-div-stick-to-the-top-of-the-screen-once-its-それは唯一の回避策です。 –

1

これは手動での配置のようです。 jqueryを使用してブラウザウィンドウのサイズを取得し、親のスクロールオフセットを取得し、親のスクリーンサイズとスクロールオフセット値に基づいてツールの上部を計算することができます。

私はこれを単独で扱うことができる薄いCSSはありません。

すべてのセクションに対して1つのツールボックスを使用し、親要素をパラメータとして渡すこともできます。

お祈り申し上げます

関連する問題