◆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;
}