2007.09.26

縦横スクロール

テーブルのスクロール一つをとっても
ユーザビリティの向上には欠かせません。

ここに一つの例として、JavaScriptでスクロールを制御する
方法をご紹介します。

<例>
以下のようなテーブルを作成し、

見出し1見出し3
見出し2明細

・Y方向にスクロール
  →「見出し2」と「明細」がスクロール
  (「見出し1」と「見出し3」は固定)

・X方向にスクロール
  →「見出し3」と「明細」がスクロール
  (「見出し1」と「見出し2」は固定)

と、スクロールを設定する場合。

まずは<head>タグ内に

<script language="JavaScript">
<!--//
function Scroll1() {
y = document.all('divMeisai').scrollTop;
x = document.all('divMeisai').scrollLeft;
newXY(x,y);
}

function Scroll2() {
y = document.all('divMidashi2').scrollTop;
x = document.all('divMidashi2').scrollLeft;
newXY2(x,y);
}

function newXY(x,y) {
document.all('divMidashi3').scrollLeft = x;
document.all('divMidashi2').scrollTop = y;
}

function newXY2(x,y) {
document.all('divMidashi1').scrollLeft = x;
document.all('divMeisai').scrollTop = y;
}
//-->
</script>


と記述します。

そしてテーブル側は、

<table cellspacing="0" cellpadding="0" border="0">
 <tr>
  <td vAlign="top">

   <!-- 見出し1 -->
    <div id="divMidashi1" style="overflow: hidden;">
     <table cellspacing="0" cellpadding="2">
      <tr>
       <th>見出し1</th>
      </tr>
     </table>
    </div>

   <!-- 見出し2 Repeater使用 -->
    <div id="divMidashi2" style="overflow: hidden;"
     onscroll="Scroll2();">
     <table cellspacing="0" cellpadding="0">
      <asp:repeater id="RepeatMidashi2" runat="server">
      <ItemTemplate>
       <tr id="tr1" runat="server">
        <td>
         <asp:label id="Midashi2" runat="server"></asp:label>
        </td>
       </tr>
      </ItemTemplate>
      </asp:repeater>
     </table>
    </div>

  </td>
  <td vAlign="top">

   <!-- 見出し3 DataList使用 -->
    <div id="divMidashi3" style="overflow: hidden; width: 540px">
     <table cellspacing="0" cellpadding="0">
      <tr>
       <th>
        <asp:DataList id="DataListMidashi3" runat="server"
         cellspacing="0" cellpadding="0" gridlines="none"
          repeatdirection="true">
        <ItemTemplate>
         <asp:label id="Midashi3" runat="server"
          text='<%# DataBinder.Eval(Container.DataItem, "header03") %>'></asp:label>
        </ItemTemplate>
       </th>
      </tr>
     </table>
    </div>

   <!-- 見出し4 DataGrid使用-->
    <div id="divMidashi4" style="overflow: scroll; onscroll="Scroll1();"
     width="550px" height="350px" runat="server">
     <table cellspacing="0" cellpadding="0">
      <tr>
       <asp:datagrid id="datagridMidashi4" runat="server"
        cellspacing="0" cellpadding="0" gridlines="none"
         autogeneratedcolumns="true">
       </asp:datagrid>
      </tr>
     </table>
    </div>

  </td>
 </tr>
</table>

トラックバック

この一覧は、次のエントリーを参照しています: 縦横スクロール:

» 見出しを固定して縦横スクロール 送信元 PukiWiki/TrackBack 0.2
OperationTeam/HTML CSS javascript/見出しを固定して縦横スクロール 見出しを固定して縦横スクロール † ... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
kuroki