<div>
私はその親の可視領域に垂直に中心を置くようにしています<div>
。 Hereは私が達成しようとしているイメージの例です。子<div>
は白い円で表され、親の<div>
はグレーの矩形で、白い矩形はブラウザのビューポートです。親divの可視領域にあるjQueryの中心div
私が気付いている問題は、ブラウザがスクロールしたりサイズが変更されたときに、子の位置を決めるための公式を書いていることです。<div>
任意のサイズの子供または親の場合<div>
。
var scrollListener = function(){
var child = $('.child'), // child element
w=$(window).height, // window height
s=$(window).scrollTop(), // window scrollTop position
t=child.parent().offset().top, // parent position in window
h=child.parent().height(), // parent height
p=(w+s-t), // initial position
v=0; // final value for child position
if(t<s){
// top of parent is beyond viewport
if(p<h){
// bottom of parent is also beyond viewport
v = (w/2)+s-t;
}else{
// ??? - not working
// bottom of parent is within viewport
v = ((h-p)/2)+s-t;
}
}else{
v = p/2;
}
child.css("top",v);
};
$(window).on("scroll resize",scrollListener);
質問/問題は何ですか? – depperm
あなたはscrollListenerをどこに呼び出しますか –
作業中のフィドルなどを作りましょう。たくさんあります。あなたがそれを私たちに任せれば、さまざまな種類の答えが出てくるでしょう。今は問題が広すぎます。 –