2011-10-31 12 views
3

他のdivを描画したdivでスクロールを有効にしました。オーバーレイdivのサイズを変更して、下にあるdivのマークを付けたいとします。 jqueryuiのサイズ変更可能な機能を使用しています。下にあるdivがスクロール0,0の位置にあるときにうまくいきますが、divがスクロールされてからサイズ変更が行われると、オーバーレイdivは韻と理由なしにジャンプします。 これを手伝ってください。どんな提案も大歓迎です。スクロールでサイズ変更プラグイン

これは、条件をテストするためのコードです。申し訳ありませんが、それのためのフィドルを作成できませんでした

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
    <TITLE> Resizable </TITLE> 
    <link rel="stylesheet" type="text/css" href="Styles/jquery.ui.resizable.css" /> 

    <script type="text/javascript" src="Scripts/jquery-1.5.1.min.js"></script> 
    <script type="text/javascript" src="Scripts/jquery.tools.min.js"></script> 
    <script type="text/javascript" src="Scripts/jquery-layout.js"></script> 
    <script type="text/javascript" src="Scripts/jquery-ui.js"></script> 

    <script type="text/javascript" src="Jquery/jquery.ui.core.js"></script> 
    <script type="text/javascript" src="Jquery/jquery.ui.widget.js"></script> 
    <script type="text/javascript" src="Jquery/jquery.ui.mouse.js"></script> 
    <script type="text/javascript" src="Jquery/jquery.ui.resizable.js"></script> 


    <style type="text/css"> 
    #insertfile { 
    overflow: auto; 
    position: absolute; 
    width:200px; height:100px; 
    border: 2px solid #000; 
} 
td { width: 50px; height: 50px; text-align: center; } 
    </style> 

    <script type="text/javascript"> 
    $(function() { 
    var currentTd = $('td#currentId'); 
    var scrtop = currentTd.position().top; 
    var scrleft = currentTd.position().left; 
    $('#insertfile').animate({ 
     scrollTop: scrtop, 
     scrollLeft: scrleft 
    }, 400); 

    var top = $(currentTd).position().top; 
    var left = $(currentTd).position().left; 
    var bottom = $(currentTd).position().top + $(currentTd).height() - $(currentTd).position().top; 

    var right = $(currentTd).position().left + $(currentTd).width() - $(currentTd).position().left; 


    $("<div id='frontLayer' class='front'></div>").insertAfter('.tableData'); 

// var frontDiv = document.getElementById('frontLayer'); 

    $('#frontLayer').css({ 
     'border': '3px solid #f00', 
     'position': 'absolute', 
     'z-index': 2, 
     'top': top + 'px', 
     'left': left + 'px', 
     'height': bottom + 'px', 
     'width': right + 'px' 
    }); 

    $('#frontLayer').resizable({ 
     handles: 'n,e,s,w', 
    }); 

}); 
    </script> 
</HEAD> 

<BODY> 
    <div id='insertfile'> 
<table border='1px' class='tableData'> 
    <tr><td>1</td> 
     <td>2</td> 
     <td>3</td> 
     <td>4</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 

     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td id='currentId'>scroll to me</td> 
     <td>12</td> 
    </tr> 
     <tr><td>9</td> 
     <td>10</td> 
     <td>11</td> 
     <td>12</td> 
    </tr> 
    <tr><td>13</td> 
     <td>14</td> 
     <td>15</td> 
     <td>16</td> 
    </tr> 
    </table> 
</div> 
</BODY> 
</HTML> 

上記のスクリプトを含めて、mozillaで実行してください。 ありがとう

+0

私はあなたのためにフィドルを作成することをお勧めします –

+0

が試みますが、大きなファイルからサイズ変更コードのみを分離するのに時間がかかります – kavita

+0

私はコードを投稿しました。どんな提案も大歓迎です。 – kavita

答えて

0

回避策が見つかりましたが、エレガントではありません。サイズ変更ハンドラのコードを追加して、可能なすべてのサイズ変更を確認しました。 topが変更された場合、heightが変更された場合、leftが変更された場合など。条件については、外側のdivのスクロールトップを値に追加しています。これは私にほとんど正しい結果をもたらします(まだいくつかのことを行う必要があります)。しかし全体的には、既に開発済みのプラグインを使用するためにあまりにも多くのコードを書いているようです。だから全体的に私は自分自身ですべてのサイズ変更を行っているように見えるだけで、付加価値はdivの滑らかな動きです! また、コンテナのスクロールの影響を受けないtwinhelix上のドラッグ・リサイズ・ピュア・ジャバスクリプト・コードも見つかりました。 この解決策が避けられないか不要であるかどうか教えてください!その他の解決策や提案は大歓迎です。

関連する問題