运动-无缝滚动

一、布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    *{
        list-style: none;
        margin: 0;
        padding: 0;
    }

    #box{
        width:840px;
        position: relative;
        height: 210px;
        overflow: hidden;
    }

    #box ul{
        height: 210px;
        position: absolute;
    }

    #box ul li{
        width:200px;
        height: 200px;
        float: left;
        padding: 5px;
    }

    #box ul li img{
        width:200px;
        height: 200px;

    }

    #bigbox{
        position: relative;
        width:840px;
        border: 1px solid #000;
        margin: 100px auto;
    }

    #bigbox a{
        position: absolute;
        top:50%;
        margin-top:-30px;
    }

    #bigbox a.left {
        left: -60px;
    }

    #bigbox a.right {
        right: -60px;
    }    

    </style>
</head>
<body>
<div id="bigbox">
    <a href="javascript:;" class=‘left‘><img src="../img/left.png" ></a>
    <a href="javascript:;" class="right"><img src="../img/right.png" ></a>
    <div id="box">
        <ul>
            <li><img src="../img/cat/1.jpg" ></li>
            <li><img src="../img/cat/2.jpg" ></li>
            <li><img src="../img/cat/3.jpg" ></li>
            <li><img src="../img/cat/4.jpg" ></li>
        </ul>

    </div>
</div>
</body>
</html>

二、获取需要操作的元素

var oBox=document.getElementById(‘box‘);
var oBigBox=document.getElementById(‘bigbox‘);
var oUl=oBox.getElementsByTagName(‘ul‘)[0];
var aLi=oUl.children;
var leftBtn=oBigBox.children[0];
var rightBtn=oBigBox.children[1];

三、做无缝滚动,需要将ul的内容复制一份,并让ul的内容在一行显示,所以我们执行以下操作:

oUl.innerHTML+=oUl.innerHTML; //将ul的内容复制一份
oUl.style.width=aLi[0].offsetWidth*aLi.length+‘px‘;  //重新计算ul的宽度

四、首先我们分析向左运动的情况:

五、分析向右运动的情况:

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    *{
        list-style: none;
        margin: 0;
        padding: 0;
    }

    #box{
        width:840px;
        position: relative;
        height: 210px;
        overflow: hidden;
    }

    #box ul{
        height: 210px;
        position: absolute;
    }

    #box ul li{
        width:200px;
        height: 200px;
        float: left;
        padding: 5px;
    }

    #box ul li img{
        width:200px;
        height: 200px;

    }

    #bigbox{
        position: relative;
        width:840px;
        border: 1px solid #000;
        margin: 100px auto;
    }

    #bigbox a{
        position: absolute;
        top:50%;
        margin-top:-30px;
    }

    #bigbox a.left {
        left: -60px;
    }

    #bigbox a.right {
        right: -60px;
    }    

    </style>
    <script>
    window.onload=function(){
        var oBox=document.getElementById(‘box‘);
        var oBigBox=document.getElementById(‘bigbox‘);
        var oUl=oBox.getElementsByTagName(‘ul‘)[0];
        var aLi=oUl.children;
        var leftBtn=oBigBox.children[0];
        var rightBtn=oBigBox.children[1];
        var timer=null;

        oUl.innerHTML+=oUl.innerHTML;
        oUl.style.width=aLi[0].offsetWidth*aLi.length+‘px‘;

        var left=0;
        var W = oUl.offsetWidth/2;
        var bsin = true;

        function run(num){
            clearInterval(timer);
            timer=setInterval(function(){
                if(bsin){
                    left+=num;
                    if(left<0){
                        oUl.style.left=left%W+‘px‘;
                    }else{
                        oUl.style.left=-(W-left%W)+‘px‘;
                    }
                }

            },30);                

        };

        run(-10);

        leftBtn.onclick=function(){
            run(-10); //你好
        }

        rightBtn.onclick=function(){
            run(10);
        }

        oBox.onmouseover=function(){
            bsin=false;
        }

        oBox.onmouseout=function(){
            bsin=true;
        }
    }
    </script>
</head>
<body>
<div id="bigbox">
    <a href="javascript:;" class=‘left‘><img src="../img/left.png" ></a>
    <a href="javascript:;" class="right"><img src="../img/right.png" ></a>
    <div id="box">
        <ul>
            <li><img src="../img/cat/1.jpg" ></li>
            <li><img src="../img/cat/2.jpg" ></li>
            <li><img src="../img/cat/3.jpg" ></li>
            <li><img src="../img/cat/4.jpg" ></li>
        </ul>

    </div>
</div>
</body>
</html>
时间: 2024-10-11 01:16:45

运动-无缝滚动的相关文章

带无缝滚动的轮播图(含JS运动框架)

今天学习了一下轮播图的写作,想到前一阵学过的无缝滚动得思想,所以就把轮播与滚动结合了一下.不过我的代码的神逻辑我自己都不敢恭维,在没网没参照的情况下,只能硬着头皮往下写,希望跟大家共勉吧. js运动框架的代码如下: 1 //获取样式 2 function getStyle(obj,attr){ 3 if(obj.currentStyle){ 4 return obj.currentStyle[attr]; 5 }else{ 6 return getComputedStyle(obj,false)

第41天:匀速、缓动运动和图片无缝滚动

一.匀速运动和缓动运动 缓动运动公式:leader=leader+(target-leader)/10;//leader为初始值0,target为结束值,10可以改变,值越大,速度越慢 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>运动</title> 6 <style>

JQuery中Table标签页和无缝滚动

HTML代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="css/tab1.css" /> <script src="js/jquery.js"></script> &

信息无缝滚动效果marquee

横向滚动.纵向滚动 1. 解决滚动的空白 向左向右滚动的话,可以根据父级定位left,每次加或者减可以使物体向左或右运动,用top也可以实现向上或向下运动 上下滚动实现无缝滚动1. innerHTML2. scrollTop3. offsetHeight4. setInterval()5. clearInterval() HTML: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset

JS-特效 ~ 01. 事件对象、offset偏移/检测、无缝滚动、自动循环轮播图

Math.round ( ) :正书四舍五入,负数五舍六入 用定时器,先清除定时器 事件对象 event event:事件被触动时,鼠标和键盘的状态,通过属性控制 Offset:偏移,检测 1. 获取元素尺寸 2. 检测盒子的宽高     事件源.offsetLeft. /. ele.offsetWidth /返回的数值没有单位,是number类型 /包括内边距.边框,不包括外边距 3. 获取定位的元素的left和top值  offsetLeft / offsetTop 如果被获取的元素没有定位

【JS学习】无缝滚动

一.无缝滚动--基础 效果演示 物体运动基础 让Div移动起来 offsetLeft的作用,可以想到有offsetLeft就会有offsetRight,还会有offsetWight/offsetHeight 用定时器让物体连续移动 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&q

关于无缝滚动

无缝滚动的重点是复制图片当辅助图,然后用一个图片的宽度乘图片的数量,滚动图片,当图片运动到大于总宽度的一半时候瞬间回到0. 代码地址:https://github.com/peng666/blogs/tree/gh-pages/move 在线测试地址:http://peng666.github.io/blogs/move/

js无缝滚动

1.html代码 <div class="box"> <ul> <li class="show"><img src="images/1.jpg"></li> <li><img src="images/2.jpg"></li> <li><img src="images/3.jpg"><

关于网页上图片无缝滚动的一些思路

从现在的一些常见网站上,无缝滚动的例子用得非常普遍,可以说很常见,也比较实用,下面我们就来简单看看,具体的一些想法怎么实现的: 先简单来看一下原理: 首先我们看到网页上一组图片不停滚动,一次循环之后又从第一张开始,其实简单的思路是:我们设置两组图片,当第一组图片滚动到结尾时,对应的第一组图片又瞬间拉回到起始位置. 当图片向另外一个方向滚动时,当后面一组图片滚动到结尾时:也是瞬间拉回到开头. 下面我们简单来看一下代码: <!DOCTYPE html><html><head>