美文网首页
前端的滚动图怎么写

前端的滚动图怎么写

作者: 一米押金 | 来源:发表于2017-03-17 16:23 被阅读0次

因为我是iOS的出身,所以对于前端写滚动图什么的就很迷惘,不知道该怎么办,知道的资料也不多,最近学习到这里了,也就在这里记录一下

需要的技术

定时器 setInterval
缓动动画(也就是匀变速公式)leader = leader + (target - leader) / 10;
leader可以理解为速度,targert可以理解为路程

示例图

左右滑动轮播图.gif 焦点图.gif

左右滑动的代码

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
body,ul,ol,li,img{margin:0;padding:0;list-style:none;}
#box{width:490px;height:170px;padding:5px;
    position: relative;border:1px solid #ccc;margin:100px auto 0;overflow:hidden;}
.ad{width:490px;height:170px;overflow:hidden;position:relative;}
#box img{width:490px;}
.ad ol{position:absolute;right:10px;bottom:10px;}
.ad ol li{width:20px;height:20px;line-height:20px;border:1px solid #ccc;text-align:center;background:#fff;float:left;margin-right:10px;cursor:pointer;_display:inline;}
.ad ol li.current{background:yellow;}
.ad ul li{float:left;}
.ad ul{ position:absolute; top:0; width:2940px;}
.ad ul li.current{display:block;}
#arr {
    display: none;}
#arr span{ width:40px; height:40px; position:absolute; left:5px; top:50%; margin-top:-20px; background:#000; cursor:pointer; line-height:40px; text-align:center; font-weight:bold; font-family:'黑体'; font-size:30px; color:#fff; opacity:0.3; border:1px solid #fff;}
#arr #right{right:5px; left:auto;}
</style>
</head>
<body>
    <div id="box" class="all">
      <div class="ad">
        <ul id="imgs">
          <li>![](image/1.jpg)</li>
          <li>![](image/2.jpg)</li>
          <li>![](image/3.jpg)</li>
          <li>![](image/4.jpg)</li>
          <li>![](image/5.jpg)</li>
        </ul>
      </div><div id="arr"><span id="left"><</span><span id="right">></span></div>
    </div>
</body>
</html>
<script>
    function $(id) {return document.getElementById(id);}
    $('box').onmouseover = function () {
        $("arr").style.display = "block";
    }
    $('box').onmouseout = function () {
        $("arr").style.display = "none";
    }

    //分析:右边点击一下之后可以左滑一张图 -- 相当于ul移动了一个盒子的宽度
    // 左边点击一下之后可以右滑一张图,以此类推
    $("right").onclick = function () {
        target -= 490;
    }

    $("left").onclick = function () {
        target += 490;
    }

    //还是缓动动画公式
    var leader = 0,target = 0;
    setInterval(function () {
        //根据ul的leftposition的条件判断
        // 因为轮播图在左右滑动的过程中,总会滑动到图片已经没有的时候
        if (target >= 0){//就是已经不能再右滑了
            target = 0;
        }
        if(target <= -1960){//就是已经不能再左滑了
            target = -1960;
        }
        leader = leader + (target - leader) / 10;
        //做动画
        $("imgs").style.left = leader + "px";
    },30)
</script>

焦点图代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>焦点图</title>
    <style>
        *{margin:0;padding:0;}
        ul,ol{list-style:none;}
        img{vertical-align: bottom;} /* 也可以用display:block来清除缝隙*/
        .slider{
            width: 490px;
            height: 170px;
            border:1px solid #cccccc;
            margin:100px auto;
            padding: 5px;

            position: relative;
        }
        .inner{
            width: 100%;
            height:100%;
            background-color: pink;

            position: relative;
            /*多余部分减掉*/
            overflow: hidden;
        }
        .inner ul{
            width: 1000%;
            /*考虑到ul是来做动画的,所以设置定位*/
            position: absolute;
            top:0;
            left:0;
        }
        .inner ul li{
            float: left;
        }
        /*针对整个ol都要上去,所以设置ol的定位即可*/
        .slider ol{
            position: absolute;
            left:50%;
            margin-left: -80px;
            bottom: 10px;
        }
        .slider ol li{
            float: left;
            width: 18px;
            height: 18px;
            margin-right: 10px;
            background-color: white;

            text-align: center;
            line-height:18px;
            cursor: pointer;
        }
        .slider ol li.current{
            background-color:orange;
        }
    </style>
</head>
<body>
  <div class="slider" id="jd-slider">
      <!--放图片的-->
      <div class="inner">
         <ul>
             <li><a href="#">![](image/01.jpg)</a></li>
             <li><a href="#">![](image/02.jpg)</a></li>
             <li><a href="#">![](image/03.jpg)</a></li>
             <li><a href="#">![](image/04.jpg)</a></li>
             <li><a href="#">![](image/05.jpg)</a></li>
         </ul>
      </div>
      <!--放圆点的-->
      <ol>
          <li class="current">1</li>
          <li>2</li>
          <li>3</li>
          <li>4</li>
          <li>5</li>
      </ol>
  </div>
</body>
</html>
<script>
    var jd = document.getElementById("jd-slider");
    //获得第一个子控件(图片div)的子控件(ul)
    var ul = jd.children[0].children[0];
    //获得放圆点的标签
    var ol = jd.children[1];
    //获得ol所有的li
    var olLis = ol.children;
    //设计滑动运动学公式 -- leader = leader + (target - leader) / 10
    //定义加速度和目标距离
    var leader = 0,target = 0;

    for(var i=0;i<olLis.length;i++){
        //设置ol里每个li的索引
        olLis[i].index = i;
        olLis[i].onmouseover = function () {
            for(var j=0;j<olLis.length;j++){
                //排他算法
                olLis[j].className = "";
            }
            this.className = "current";
            //确定目标值 -- 就是当前索引号 * 一个盒子的宽度
            target = -this.index * 490;
        }
    }

    setInterval(function () {
        leader = leader + (target - leader) / 10;
        //ul做动画效果
        ul.style.left = leader + "px";
    },30);
</script>

相关文章

  • 前端的滚动图怎么写

    因为我是iOS的出身,所以对于前端写滚动图什么的就很迷惘,不知道该怎么办,知道的资料也不多,最近学习到这里了,也就...

  • 京东移动端初体验

    header栏的一个特效 思路 在滚动事件中 写逻辑 修改 通栏的透明度 需要设置滚动的范围 滚动的距离 跟轮播图...

  • iOS滚动横幅

    最近看到APP中有滚动新闻的条幅,想了下怎么实现的,于是试着自己写了一个,写的不好还望见谅! 效果图: githu...

  • iPhone屏幕适配,等比缩放

    App的设计图根据是否可以滚动分成两种设计图,下面我们说说这个不可以滚动的设计,怎么在各种不同尺寸的设备中适配。 ...

  • 利用函数节流实现监听滚动条停止

    在我们做前端开发时,有时候会收到监听滚动条滚动和滚动条停止的需求,要想监听滚动条的滚动很简单,直接用window....

  • HTML阶段-第二天Web前端+移动开发-大前端的定义

    什么是大前端? web前端和全栈的定义 还原“活”的设计 设计稿→PS→HTML页面+效果 传统前端 切图→写标签...

  • 页面无限滚动实现原理

    前端无限滚动一般指元素滚动到最后,动态加载更多数据。实现原理大只如下:假设outer为外层容器, 则当滚动条滚动到...

  • # 懒加载和预加载

    web前端 1. 懒加载 1、不加载全部图片 2、首先显示在页面中的图,首先进行加载 3、当屏幕发生滚动的时候,判...

  • 前端无缝滚动

    修改图片和jquery 还有对应宽度 即可用 实际放置图片要比放置图片多一张,当倒数第二张切换到最后一张刚完成...

  • 原来网页中的滚动图可以这么简单就做出来!!!

    原来网页中的滚动图可以这么简单就做出来!!! 在今年(2018年)的中旬小编参加了成都某培训机构的前端培训,在培训...

网友评论

      本文标题:前端的滚动图怎么写

      本文链接:https://www.haomeiwen.com/subject/mtgenttx.html