◆html
16行目:width, height で画像を表示するサイズを定義する。17行目:width, height で画像のサイズを定義する。urlで画像ファイルを定義する。
- <!DOCTYPE html>
- <html lang="ja">
- <head>
- <title>Panorama</title>
- <meta http-equiv="imagetoolbar" content="no" />
- <link rel="stylesheet" href="panorama.css">
- <script src="panorama.js"></script>
- </head>
- <body>
- <div align="center">
- <h1>九十九谷</h1>
- <div id="panorama_wrapper" style="width:1000px; height:400px;">
- <div id="panorama_image" style="width:2261px; height:400px; background-image: url('001.jpg')"></div>
- </div>
- </div>
- </body>
- </html>
◆javascript(panorama.js)
尚、360°パノラマ写真を連続してドラッグできるようにするには、20行目の代わりに21行目を使用し、46,47行目を使用する。
- var dx = 0; // マウスダウンした場所の画像の座標
- var xcache = 0; // 画像の左端のスクリーンの左端に対する座標
- var dragObj; // ドラッグの状態を表す。 null→ドラッグしていない状況
- var maxLeft; // もっとも左に移動したときの画像の左端のスクリーンの左端に対する座標<0
- var panorama_width; //画像の幅
- window.onload = function () {
- setPicture();
- }
- function setPicture(){
- dragObj = null;
- document.getElementById('panorama_wrapper').onmousemove = mouseMove;
- document.onmouseup = mouseUp;
- document.getElementById('panorama_wrapper').onmousedown = mouseDown;
- panorama_width = document.getElementById('panorama_image').clientWidth;
- maxLeft = document.getElementById('panorama_wrapper').clientWidth - panorama_width;
- // maxLeft = document.getElementById('panorama_wrapper').clientWidth - panorama_width*2; // 360°パノラマの場合、この行を使用する。
- // もっとも左に移動したときの画像の左端のスクリーンの左端に対する座標<0
- var img = document.getElementById('panorama_image');
- img.style.width = panorama_width*2+"px";
- xcache = 0;
- }
- function mouseDown(e) {
- if(window.event) e = window.event;
- dragObj = this;
- var x = e.clientX ; // マウスダウンした場所のスクリーンの座標
- dx = x - xcache; // マウスダウンした場所の画像の座標
- }
- function mouseMove(e) {
- if(!dragObj)return;
- if(window.event) e = window.event;
- var x = e.clientX ;
- var xcache_tmp = x - dx; // ドラッグによる移動量
- // if ( xcache_tmp >0 ) {xcache_tmp -= panorama_width;} // 360°パノラマの場合、この行を使用する。
- // if ( xcache_tmp <maxLeft ) {xcache_tmp += panorama_width;} // 360°パノラマの場合、この行を使用する。
- if(maxLeft < xcache_tmp && 0 >= xcache_tmp){ // 画像が可動の範囲であれば実行
- document.getElementById('panorama_image').style.left = xcache_tmp + "px";
- xcache = xcache_tmp; // 画像の左端のスクリーンの左端に対する座標
- }
- if(window.event) window.event.returnValue = false;
- else return false;
- }
- function mouseUp (e) {
- dragObj = null;
- }
◆css(panorama.css)
- div#panorama_wrapper {
- overflow: hidden;
- position: relative;
- }
- div#panorama_image {
- position: absolute;
- cursor : pointer;
- }