美文网首页
10.6 综合 封装 完美版

10.6 综合 封装 完美版

作者: 康轩 | 来源:发表于2017-06-01 22:53 被阅读0次

    /**

    • Created by Administrator on 2017/4/26.
      */

    /**

    • 匀速运动框架
    • @param obj
    • @param target
    • @param speed
      */
      function constant(obj,target,speed) {
      clearInterval(obj.timer);
      //开始动画
      obj.timer = setInterval(function () {
      //让box做匀速动画
      var MySpeed = target>obj.offsetLeft?speed:-speed;
      obj.style.left = obj.offsetLeft + MySpeed +'px';
      if(Math.abs(target-obj.offsetLeft)<Math.abs(MySpeed))
      {
      clearInterval(obj.timer);
      obj.style.left = target +'px';
      }
      },20);
      }

    /**

    • 封装获取CSS属性的方法
    • @param obj
    • @param attr
    • @returns {*}
      */
      function getCSSAttr(obj,attr) {
      //先判断ie
      if(obj.currentStyle)
      {
      return obj.currentStyle[attr];
      }
      else
      {
      return getComputedStyle(obj)[attr];
      }
      }

    /**

    • 封装缓动动画库

    • @param obj

    • @param json

    • @param fn
      */
      function buffer(obj,json,fn) {
      clearInterval(obj.timer);
      obj.timer = setInterval(function () {

       //定义一个变量作为旗帜
       var isStop = true;
       for (var key in json)
       {
           //取值判断 是否是透明度问题
           if ('opacity' == key) {
      
                var begin = parseFloat(getCSSAttr(obj,key))==0?0:parseInt(parseFloat(getCSSAttr(obj, key)) * 100) || 100;
      
               var target = parseInt(json[key] * 100);
           }
           //判断key是否是scrollTop
           else if('scrollTop'==key)
           {
               var begin = obj.scrollTop;
      
               var target = json[key];
           }
           //其他情况 (比如说;width,height,top left)
           else {
               var begin = parseInt(getCSSAttr(obj, key));
               var target = parseInt(json[key]);
           }
           var speed = (target - begin) / 20;
           speed = target > begin ? Math.ceil(speed) : Math.floor(speed);
      
      
           //判断赋值情况
           if ('opacity' == key)
           {
             //是否是火狐或者谷歌
               obj.style.opacity = (speed + begin) /100;
      
               //是否是ie
               obj.style.filter = 'alpha(opacity:'+(speed+begin)+')';
           }
      
           //判断Zindex赋值
           else if('zIndex'==key)
           {
             obj.style.zIndex = parseInt(json[key]);
           }
           else if('scrollTop'==key)
           {
               obj.scrollTop = speed +begin;
           }
           else
           {
               obj.style[key] = speed + begin + 'px';
           }
      
           if(begin!=target)
           {
               isStop = false;
           }
       }
      
       //判断清除定时器的时机
       if (isStop){
           clearInterval(obj.timer);
      
           //加回调
           //先判断是否传入了回调
           if(fn) {
               //执行回调
               fn();
           }
       }
      

      },20);
      }

    /**

    • 获取scrollTop和scrollLeft
    • @returns {*}
      */
      function scroll() {
      if(window.pageYOffset !== null){ // ie9+ 和 最新浏览器
      return {
      left: window.pageXOffset,
      top: window.pageYOffset
      }
      }else if(document.compatMode == 'CSS1Compat'){ // 非怪异浏览器
      return{
      left: document.documentElement.scrollLeft,
      top: document.documentElement.scrollTop
      }
      }
      return{
      left: document.body.scrollLeft,
      top: document.body.scrollTop
      }
      }

    /**

    • 封装标签显示
    • @param tagId
    • @returns {string}
      */
      function show(tagId) {
      return document.getElementById(tagId).style.display = 'block';
      }

    /**

    • 封装标签隐藏
    • @param tagId
    • @returns {string}
      */
      function hide(tagId) {
      return document.getElementById(tagId).style.display = 'none';
      }

    /**

    • 封装$函数获取id
    • @param tagId
    • @returns {Element}
      */
      function $(tagId)
      {
      return typeof tagId==='string'?document.getElementById(tagId):tagId;
      }

    /**

    • 封装获取TagName方法
    • @param tag
    • @returns {NodeList}
      */
      function getTag(tag) {
      return typeof tag==='string'?document.getElementsByTagName(tag):tag;
      }

    /**

    • 封装获取ClassName方法

    • @param className

    • @returns {*}
      /
      function getClass(className) {
      //1.判断当前浏览器是否支持
      if (document.getElementsByClassName) {
      return document.getElementsByClassName(className);
      }
      //2.不支持的浏览器
      var allTags = document.getElementsByTagName('
      ');

      var arr = [];
      //3.遍历
      for (var i = 0; i < allTags.length; i++) {
      //3.1.判断遍历得到的所有标签的className是否和函数外部传入的className相等

       if (allTags[i].className == className) {
           arr.push(allTags[i]);
       }
       //3.2.如果相等,就应该留下来
      

      }

      //千万不要忘记返回数组
      return arr;
      }

    /**

    • 得到一个兼容的获取屏幕的宽度和高度
    • @returns {*}
      */
      function client() {
      //1.判断是否是ie9+和最新浏览器
      if(window.innerWidth!=null)
      {
      return {
      width:window.innerWidth,
      height:window.innerHeight
      }
      }
      //标准浏览器
      else if(document.compatMode=='CSS1Compat')
      {
      return{
      width:document.documentElement.clientWidth,
      height:document.documentElement.clientHeight
      }
      }
      //3.怪异模式
      else {
      return{
      width:document.body.clientWidth,
      height:document.body.clientHeight
      }
      }

    }

    相关文章

      网友评论

          本文标题:10.6 综合 封装 完美版

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