• 简单移动端自适应轮播图


    <!DOCTYPE html>

    <html>

    <head>

      <meta charset="utf-8">

      <meta content="yes" name="apple-mobile-web-app-capable">

      <meta content="yes" name="apple-touch-fullscreen">

      <meta content="telephone=no,email=no" name="format-detection">

      <style type="text/css">

        body,dl,h1,h3,h5,h6,hr,p,pre {

          margin:0;

        }

        th,td,input,textarea {

          padding:0;

        }

        ol,ul {

          margin:0;

          padding:0;

          list-style:none;

        }

        input,button {

          -webkit-appearance:none;

        }

        a {

          text-decoration:none;

        }

        .clearfix:after {

          content:"200B";

          display:block;

          height:0;

          clear:both;

        }

        /*banner,滚动图*/

        .banner {

          position:relative;

          100%;

          height:4.1rem;

        }

        .bannerbox,.bannerindex {

          position:absolute;

        }

        .bannerbox {

          top:0;

          left:0;

          right:0;

          bottom:0;

          z-index:1;

          overflow:hidden;

        }

        .bannerlist {

          position:relative;

          31rem;

          overflow:hidden;

        }

        .bannerlist a {

          float:left;

        }

        .bannerlist img {

          display:block;

          10rem;

          height:4.11rem;

          border:none;

        }

        .bannerindex {

          right:0;

          bottom:.3rem;

          /*100%*/;

          z-index:2;

          font-size:0;

          text-align:center;

        }

        .bannerindex li {

          display:inline-block;

          margin:0 .16rem;

          .15rem;

          height:.15rem;

          border-radius:.2rem;

         

        }

        .bannerindex li.thisindex {

         

        }

        .test{

          font-size: 0.2rem;

          line-height: 0.4rem;

          color: #7297FF;

          text-align: center;

        }

      </style>

      <!-- 自适应 -->

      <s cript type="text/javas cript">

        (function (_window) {

        // 计算dpr

        var navigatorUserAgent = navigator.userAgent;

        var iPhone = navigatorUserAgent.indexOf("iPhone");

        if (iPhone > -1) {

          var dpr = Number(window.devicePixelRatio),

          one_dpr = 1 / dpr;

        } else {

          var dpr = 1,

          one_dpr = 1;

        }

        var writeText = "<meta name="viewport" content="width=device-width,initial-scale=" + one_dpr + ",maximum-scale=" + one_dpr + ",minimum-scale=" + one_dpr + ",user-scalable=no">n        <meta name="'flexible" content="initial-dpr=" + dpr + "">";

        document.write(writeText);

        // 计算字体大小

        var html = document.getElementsByTagName("html");

        var F0 = 75;

        html[0].setAttribute("data-dpr", dpr);

        var getFontSize = function getFontSize() {

          var windowWidth = window.innerWidth;

          html[0].style.fontSize = F0 * windowWidth / 750 + "px";

        };

        // 初始化

        getFontSize();

        _window.addEventListener("resize", getFontSize, false);

      })(window); 

    </s cript>

    </head>

    <body>

      <!--轮播图-->

      <div class="banner">

        <div id="bannerbox" class="bannerbox">

          <div id="bannerlist" class="bannerlist clearfix">

            <a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267189949&di=0574aa7d15bd0e2756f895c082d965c4&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fback_pic%2Fqk%2Fback_origin_pic%2F00%2F02%2F32%2F22742a569c2dfdba8d4943ab9422b024.jpg"/></a>

            <a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267224293&di=3733ca596dc466534c438282bc474f0d&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fback_pic%2F00%2F00%2F69%2F40%2F2f98a6cd604d1e03c9ec4d07db019ff0.jpg"/</a>

            <a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267238025&di=798d47938625766187b325c1d7e5bf7c&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fback_pic%2Fqk%2Fback_origin_pic%2F00%2F02%2F73%2F22f3f0857d23a5beff98ee5d35ae4e5a.jpg"/></a>

            <a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267237968&di=a0cfeba6d6385d131c9d43da1df92546&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F01c70757c000b50000012e7e3b1d40.jpg%40900w_1l_2o_100sh.jpg"/></a>

            <a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267238025&di=0625f052fb428dccbadadeea05ccde32&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fback_pic%2F00%2F00%2F69%2F40%2F197fc7596ea416d86b027e3b945b6e04.jpg"/></a>

          </div>

        </div>

        <ol id="bannerindex" class="bannerindex">

          <li></li>

          <li></li>

          <li></li>

          <li></li>

          <li></li>

        </ol>

      </div>

      <div class="test">banner—swiper</div>

      <!--轮播效果-->

      <s cript >

        var bannerList = document.getElementById("bannerlist"),

        img = bannerList.getElementsByTagName("a"),

        bannerIndex = document.getElementById("bannerindex").getElementsByTagName("li"),

            bannerBox = document.getElementById("bannerbox"); //touch事件容器

            var index = 0,

            // 当前索引

            maxIndex = img.length - 1,

            //最大索引

            classname = "thisindex";

            var setmain,

            // 轮播主体定时器

            setframe,

            // 连续运动定时器

            time = 4000,

            // 连续间隔时间

        animationIng = 0; // 判断轮播连续运动定时器是否存在

        // 速度和单位

        var velocit = 0.65;

        var metric = "rem";

        // touch事件相关函数

        var start = {};

        start.x = "";

        start.right = "";

        start.time = "";

        var end = {};

        end.x = "";

        var html = document.getElementsByTagName("html");

        // px to rem

        var px2rem = function px2rem(px) {

          return px / parseFloat(html[0].style.fontSize);

        };

        // touchstart

        var bannerStartFun = function bannerStartFun(event) {

          if (animationIng == 0) {

            animationIng = 1;

            clearTimeout(setmain);

            var e = event.touches[0];

            start.x = e.pageX;

            start.right = parseFloat(bannerList.style.right);

            start.time = +new Date();

            document.addEventListener("touchmove", bannerMoveFun, false);

            document.addEventListener("touchend", bannerEndFun, false);

          }

        };

        // touchmove

        var bannerMoveFun = function bannerMoveFun(event) {

          event.preventDefault();

          var move = function move() {

            var e = event.touches[0];

            end.x = e.pageX;

            var cha = px2rem(end.x - start.x);

            bannerList.style.right = start.right - cha + metric;

          };

          requestAnimationFrame(move);

        };

        // touchend

        var bannerEndFun = function bannerEndFun(event) {

          end.time = +new Date();

          if (end.time - start.time >= 50) {

            var cha = px2rem(end.x - start.x);

            if (Math.abs(cha) >= 2) {

              cha > 0 ? endFunB() : endFunA();

            } else {

              endFunC();

            }

          } else {

            endFunC();

          }

          document.removeEventListener("touchmove", bannerMoveFun);

          document.removeEventListener("touchend", bannerEndFun);

        };

        // touchend判断并执行相应的函数

        // 加加函数

        var endFunA = function endFunA() {

          bannerIndex[index].classList.remove(classname);

          index == maxIndex ? index = 0 : index++;

          bannerIndex[index].classList.add(classname);

          animation(20, function () {

            enlargeCallBack();

            animationIng = 0;

            setmain = setTimeout(main, time);

          });

        };

        // 减减函数

        var endFunB = function endFunB() {

          bannerIndex[index].classList.remove(classname);

          index == 0 ? index = maxIndex : index--;

          bannerIndex[index].classList.add(classname);

          animation(0, function () {

            reduceCallBack();

            animationIng = 0;

            setmain = setTimeout(main, time);

          });

        };

        // index不变的函数

        var endFunC = function endFunC() {

          animation(10, function () {

            animationIng = 0;

            setmain = setTimeout(main, time);

          });

        };

        // index++回调函数

        var enlargeCallBack = function enlargeCallBack() {

          bannerList.appendChild(img[0]);

          bannerList.style.right = "10" + metric;

        };

        // index--回调函数

        var reduceCallBack = function reduceCallBack() {

          bannerList.insertBefore(img[maxIndex], img[0]);

          bannerList.style.right = "10" + metric;

        };

        // 动画函数

        var animation = function animation(target, callback) {

          var v = "";

          var start = parseFloat(bannerList.style.right);

          start < target ? v = +velocit : v = -velocit;

          var frame = function frame() {

            var right = parseFloat(bannerList.style.right);

            if (Math.abs(target - right) > velocit) {

              bannerList.style.right = v + right + metric;

              setframe = requestAnimationFrame(frame);

            } else {

              bannerList.style.right = target + metric;

              callback ? callback() : "";

            }

          };

          setframe = requestAnimationFrame(frame);

        };

        // 轮播主函数

        var main = function main() {

          animationIng = 1;

          bannerIndex[index].classList.remove(classname);

          index == maxIndex ? index = 0 : index++;

          bannerIndex[index].classList.add(classname);

          animation(20, function () {

            enlargeCallBack();

            animationIng = 0;

            setmain = setTimeout(main, time);

          });

        };

        // 初始化

        var init = function init() {

          bannerList.insertBefore(img[maxIndex], img[0]);

          bannerList.style.right = "10" + metric;

          bannerIndex[0].classList.add(classname);

          bannerBox.addEventListener("touchstart", bannerStartFun, false);

          setmain = setTimeout(main, time);

        };

        init(); 

      </s cript>

      </html>

    ​学习交流群617986737

  • 相关阅读:
    jQuery Easing 动画效果扩展--使用Easing插件,让你的动画更具美感。
    JavaScript表达式--掌握最全的表达式,一切尽在掌握中,让表达不再是难事
    JavaScript的格式--从格式做起,做最严谨的工程师
    JavaScript 简介--对javascript的初识,最基础的了解
    手机web页面制作时的注意事项
    实现像淘宝一样牛的语音搜索框
    Cufon在渲染网页字体你不知道的事
    .net中单选按钮RadioButton,RadioButtonList 以及纯Html中radio的用法实例?
    使用C#把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前
    eval解析JSON中的注意点
  • 原文地址:https://www.cnblogs.com/xsns/p/6626022.html
Copyright © 2020-2023  润新知