360度全景图片根据鼠标移动左右旋转

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">

/*拖拽用到的3个主要函数
onmousedown : 选择元素 onmousedown 事件会在鼠标按键被按下时发生。
onmousemove : 移动元素 onmousemove 属性在鼠标指针移动到元素上时触发。
onmouseup : 释放元素 onmouseup 属性在松开鼠标按钮时触发。
*/

window.onload = function ()
{
var x = 0 ;//拖着走的虚拟数字
var imgD = document.getElementById("img1");
var imgList = document.getElementsByTagName("img");//取得页面所有的img标签
var lastImg = imgD;//上一张显示的图片
var speed = 0;
var speedX = 0;
var timer = null;//定时器
var i = 0;
for (i=1;i<77;i++)
{
(function (oNewImg){
var imgD=new Image();

imgD.οnlοad=function ()
{
oNewImg.src=this.src;
};
imgD.src='img/miaov ('+i+').jpg';

oNewImg.style.display='none';

document.body.appendChild(oNewImg);
})(document.createElement('img'));

}
//不是拖着一个物体再走,所以要用document,document其实是整个页面。
document.onmousedown = function (ev)
{
/* 处理浏览器兼容的,ie和其他内核浏览器处理方式不一样:一个用 ev 一个用 event,
event是事件对象(也是window的属性),但不是标准的,只有IE支持。
像火狐就不能识别,如果直接在火狐中用event,会报错,导致后面的js无法进行下去;
在FireFox浏览器中,事件绑定的函数要获取到事件本身,需要从函数中传入,而IE等浏览器则可以直接使用event或者window.event得到事件本身。*/
var oEvent = ev || event;
var disX = oEvent.clientX - x;//鼠标的位置和点位置的一个差值
clearInterval(timer);
document.onmousemove = function(ev)
{
var oEvent = ev || event;
x = oEvent.clientX - disX;
//imgD.src ="img/miaov ("+ temp +").jpg";//动态改变图片

move();
speed = x-speedX;
speedX = x;

return false;//为了去除鼠标移动时候选中图片
};
document.onmouseup = function()
{
document.onmousemove = null;
document.onmouseup = null;

timer = setInterval(function(){
x += speed;//定义速度
move();
},30);

};
function move()
{
if(speed >0){
speed--;
}else{
speed++;
}
if(speed == 0){
clearInterval(timer);//关掉定时器
}

var temp = parseInt(-x/10);//-x是为了和鼠标左右同步,不加-号,向左移动就会向右转。加parseInt和/10是为了旋转流畅。x/10表示没拖10个像素走一个图
if(temp > 0){
temp = temp%77;
}else{
temp = temp+-Math.floor(temp/77)*77;
}
document.title=temp;

if(lastImg != imgList[temp]){
lastImg.style.display="none";
imgList[temp].style.display="block";
lastImg = imgList[temp];
}
}
return false;
};
}
</script>

<body>
<img id="img1" src="img/miaov (0).jpg"/>
</body>
</html>

 css样式

body {margin:0;}
img {width:640px; height:378px; position:absolute; left:50%; top:50%; margin-top:-189px; margin-left:-320px;}

转载于:https://www.cnblogs.com/konglxblog/p/10398091.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现360展示图片,可以使用以下步骤: 1. 准备一组 360 全景图片。 2. 在 HTML 中创建一个容器元素,例如 div,设置其宽和高。 3. 在该容器内创建一个 img 元素,设置其 src 属性为第一张全景图片的路径。 4. 使用 JavaScript 监听鼠标移动事件,根据鼠标位置动态改变 img 元素的 src 属性,从而实现全景图片旋转。 以下是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <title>360全景图片预览效果</title> <meta charset="utf-8"> <style> #container { width: 800px; height: 600px; overflow: hidden; position: relative; } #container img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; transition: all 0.1s ease-in-out; } </style> </head> <body> <div id="container"> <img src="img/panorama1.jpg" alt="360全景图片"> </div> <script> var container = document.getElementById('container'); var img = container.getElementsByTagName('img')[0]; var total = 36; // 全景图片总数 var current = 1; // 当前显示的图片编号 var delta = 10; // 鼠标移动时每次旋转的角 container.addEventListener('mousemove', function(event) { var x = event.clientX - container.offsetLeft; var y = event.clientY - container.offsetTop; var centerX = container.offsetWidth / 2; var centerY = container.offsetHeight / 2; var angleX = (x - centerX) * delta / centerX; var angleY = (y - centerY) * delta / centerY; img.style.transform = 'rotateX(' + angleY + 'deg) rotateY(' + angleX + 'deg)'; }); setInterval(function() { current++; if (current > total) { current = 1; } img.src = 'img/panorama' + current + '.jpg'; }, 100); </script> </body> </html> ``` 在上面的代码中,我们使用了 CSS 的 transform 属性来实现全景图片旋转效果。具体来说,我们通过修改 img 元素的 rotateX 和 rotateY 值来改变其旋转的角,从而实现视角的转换。我们还使用了 JavaScript 的 setInterval 函数来定时切换全景图片,以达到动态效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值