图片横向滚动!!JS-鼠标可控制~~~

本文介绍了一种使用纯JavaScript实现的网页图片滚动效果,通过监听鼠标事件来改变图片滚动的方向,并且能够根据鼠标位置的不同来暂停或继续图片滚动。文章还提供了一个完整的示例代码,帮助读者更好地理解和实现该效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        <div id="demo" style="overflow:hidden; width:720px; color:#333333; height:100px; margin:0px 0px 0 0; display:inline; float:left;" onmousemove="MoveDiv(event);" onmouseout="MoveOutDiv();">
      <div id="demo1" style="width:100%;">
          <table cellspacing="0" cellpadding="0">
               <tbody>
                 <tr valign="top">
                   <td valign="top" >
                   <center>
           <table>
               <tr>      
     <td><a href="#"><img src="image/未命名.jpg"   alt=""/><br /><span>绝美风景</span></a></td>
        <td><a href="#"><img src="image/未命名.jpg"   alt=""/><br /><span>绝美风景</span></a></td>
        <td><a href="#"><img src="image/未命名.jpg"   alt=""/><br /><span>绝美风景</span></a></td>
        <td><a href="#"><img src="image/未命名.jpg"   alt=""/><br /><span>绝美风景</span></a></td>
        <td><a href="#"><img src="image/未命名.jpg"   alt=""/><br /><span>绝美风景</span></a></td>
        <td><a href="#"><img src="image/未命名.jpg"   alt=""/><br /><span>绝美风景</span></a></td>
        <td><a href="#"><img src="image/未命名.jpg"   alt=""/><br /><span>绝美风景</span></a></td>
        <td><a href="#"><img src="image/未命名.jpg"   alt=""/><br /><span>绝美风景</span></a></td>
       </tr>
      </table>
      </center>
      </td>
      <td width="0">
     <div id="demo2" style="width:100%;"></div>
     </td>
     </tr>
    </tbody>
  </table>
    </div>
    <script type="text/javascript">
        document.getElementById("demo2").innerHTML = document.getElementById("demo1").innerHTML;
        MyMar = setInterval(Marquee, speed);
    </script>
 </div>

 

 

 

 

 

 

 

 

 

  <script type="text/javascript">

 

var dir = 1; //每步移动像素,大=快
var speed = 10; //循环周期(毫秒)大=慢
var MyMar = null;
function Marquee() {//正常移动
    var demo = document.getElementById("demo");
    var demo2 = document.getElementById("demo2");
    if (dir > 0 && (demo2.offsetWidth - demo.scrollLeft) <= 0) {
        demo.scrollLeft = 0;
    }
    if (dir < 0 && (demo.scrollLeft <= 0)) {
        demo.scrollLeft = demo2.offsetWidth;
    }
    demo.scrollLeft += dir;
}
function onmouseoverMy() {
    window.clearInterval(MyMar);
} //暂停移动
function onmouseoutMy() {
    MyMar = setInterval(Marquee, speed);
} //继续移动
function r_left() {
    if (dir == -1)
        dir = 1;
} //换向左移
function r_right() {
    if (dir == 1)
        dir = -1;
} //换向右移

function IsIE() {
    var browser = navigator.appName
    if ((browser == "Netscape")) {
        return false;
    }
    else if (browser == "Microsoft Internet Explorer") {
        return true;
    }
    else {
        return null;
    }
}

var _IsIE = IsIE();
var _MousePX = 0;
var _MousePY = 0;
var _DivLeft = 0;
var _DivRight = 0;
var _AllDivWidth = 0;
var _AllDivHeight = 0;
function MoveDiv(e) {
    var obj = document.getElementById("demo");
    _MousePX = _IsIE ? (document.body.scrollLeft + event.clientX) : e.pageX;
    _MousePY = _IsIE ? (document.body.scrollTop + event.clientY) : e.pageY;
    //Opera Browser Can Support ''window.event'' and ''e.pageX''
    var obj1 = null;
    if (obj.getBoundingClientRect) {
        //IE
        obj1 = document.getElementById("demo").getBoundingClientRect();
        _DivLeft = obj1.left;
        _DivRight = obj1.right;
        _AllDivWidth = _DivRight - _DivLeft;
    }
    else if (document.getBoxObjectFor) {
        //FireFox
        obj1 = document.getBoxObjectFor(obj);
        var borderwidth = (obj.style.borderLeftWidth != null && obj.style.borderLeftWidth != "") ? parseInt(obj.style.borderLeftWidth) : 0;
        _DivLeft = parseInt(obj1.x) - parseInt(borderwidth);
        _AllDivWidth = Cut_Px(obj.style.width);
        _DivRight = _DivLeft + _AllDivWidth;
    }
    else {
        //Other Browser(Opera)
        _DivLeft = obj.offsetLeft;
        _AllDivWidth = Cut_Px(obj.style.width);
        var parent = obj.offsetParent;
        if (parent != obj) {
            while (parent) {
                _DivLeft += parent.offsetLeft;
                parent = parent.offsetParent;
            }
        }
        _DivRight = _DivLeft + _AllDivWidth;
    }

    var pos1, pos2;
    pos1 = parseInt(_AllDivWidth * 0.4) + _DivLeft;
    pos2 = parseInt(_AllDivWidth * 0.6) + _DivLeft;

    if (_MousePX > _DivLeft && _MousePX < _DivRight) {
        if (_MousePX > _DivLeft && _MousePX < pos1)//Move left
        {
            r_left();
        }
        else if (_MousePX < _DivRight && _MousePX > pos2)//Move right
        {
            r_right();
        }

        if (_MousePX > pos1 && _MousePX < pos2)//Stop
        {
            onmouseoverMy();
            MyMar = null;
        } else if (_MousePX < pos1 || _MousePX > pos2) {
            if (MyMar == null) {
                MyMar = setInterval(Marquee, speed);
            }
        }
    }
}

function Cut_Px(cswidth) {
    cswidth = cswidth.toLowerCase();
    if (cswidth.indexOf("px") != -1) {
        cswidth.replace("px", "");
        cswidth = parseInt(cswidth);
    }
    return cswidth;
}

function MoveOutDiv() {
    if (MyMar == null) {
        MyMar = setInterval(Marquee, speed);
    }
}
  </script>

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值