あむちょです。
今まで学んできたHTML5やJavaScriptを生かして、ユーザビリティーの向上をはかる。
目次
ホームページのユーザビリティーを向上させる方法はいくつか考えられますが、今回はよくあるページトップへ戻る機能をつけました。
本来なら右下あたりにでもボタンを常に表示しておくとこですが、まだ未完成なのでなし。
追加しました。
目標にしたのはLIGの世界一うざいトップへ戻るです。
まだテストですが下のリンクを押せば(限界を超えて)トップにもどります。
限界を超えてトップへ戻る。ブラウザーによってはうまく表示されません。
残念な気持ちになったところで以下やり方
jQueryによるスクロールアニメーション
滑らかにページをスクロールさせる方法はjQueryをつかってます。まずはscriptの読み込み
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
つぎにスクロールさせたい時に以下を呼び出す。
var position = 0; $('body,html').animate({scrollTop:position}, time, 'swing');
今回はトップに戻るなので、positionは0です。第二引数はアニメーションにかける時間[ミリ秒]、第三引数のswingは徐々に早くなる動きです。等速の時はlinearを指定します。
DOMにより動的に新しい要素を挿入する
トップに戻るボタンが押されたときに、HTML5の<canvas>を動的に挿入します。その後body内の一番最初の要素の前に挿入しています。
<br /> function insertNewElem(elemHeight){<br /> //現在のページ位置を所得<br /> var currentY = document.documentElement.scrollTop || document.body.scrollTop;<br /> //canvasを生成<br /> var newElem = document.createElement("canvas");</p> <p> var b = document.body;<br /> var d = document.documentElement;<br /> //canvasの幅を画面幅と同じに<br /> newElem.width = Math.max(b.clientWidth , b.scrollWidth, d.scrollWidth, d.clientWidth);<br /> newElem.height = elemHeight;<br /> //idを付与<br /> newElem.setAttribute("id", "newElem");<br /> //body内の一番最初の要素の前にcanvasを挿入<br /> document.body.insertBefore(newElem, document.body.firstChild);</p> <p> //新しい要素が挿入されたことによるズレを直す<br /> window.scrollTo(0,elemHeight+currentY);<br /> }<br />
insertNewElem(1000);
とアンカーからよびだせば、高さ1000pxのcanvasが、今までのページトップより上に生成されます。
あとはcanvasに好き勝手描画するだけです。
生成した新しい要素を消す
idから要素を特定して、bodyから削除してます。
<br /> function removeElem(){<br /> //削除したい要素<br /> var element = document.getElementById("newElem");<br /> //現在のスクロール位置<br /> var currentY = document.documentElement.scrollTop || document.body.scrollTop;<br /> currentY-= element.height;<br /> //要素を削除<br /> document.body.removeChild(element);<br /> //要素が消えたことによるズレをなおす<br /> window.scrollTo(0,currentY);<br /> }<br />
今回は、一度限界を超えてトップに戻ったら、見えなくなるまでスクロールすると削除するようにしてます。
最後にもう一度
[ad][ad]