js-day4

作者: 路人_Ding | 来源:发表于2018-08-09 09:32 被阅读0次

    一、scroll系列
    1.卷曲-滚出去
    2.scrollWidth:元素中内容的实际的宽(没有边框),如果没有内容就是元素的宽
    3.scrollHeight:元素中内容的实际的高(没有边框),如果没有内容就是元素的高

    二、变速动画函数封装
    function animate(element, target) {
    //清理定时器
    clearInterval(element.timeId);
    element.timeId = setInterval(function () {
    //获取元素的当前位置
    var current = element.offsetLeft;
    //移动的步数
    var step = (target-current)/10;
    step = step>0?Math.ceil(step):Math.floor(step);
    current += step;
    element.style.left = current + "px";
    if(current==target) {
    //清理定时器
    clearInterval(element.timeId);
    }
    //测试代码:
    console.log("目标位置:"+target+",当前位置:"+current+",每次移动步数:"+step);
    }, 20);
    }
    三、变速动画函数封装增加任意多个属性和回调函数及层级还有透明度
    <script>
    //点击按钮,改变宽度到达一个目标值,高度到达一个目标值

    //获取任意一个元素的任意一个属性的当前的值---当前属性的位置值
    function getStyle(element, attr) {
    return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr] || 0;
    }

    function animate(element, json, fn) {
    clearInterval(element.timeId);//清理定时器
    //定时器,返回的是定时器的id
    element.timeId = setInterval(function () {
    var flag = true;//默认,假设,全部到达目标
    //遍历json对象中的每个属性还有属性对应的目标值
    for (var attr in json) {
    //判断这个属性attr中是不是opacity
    if (attr == "opacity") {
    //获取元素的当前的透明度,当前的透明度放大100倍
    var current = getStyle(element, attr) * 100;
    //目标的透明度放大100倍
    var target = json[attr] * 100;
    var step = (target - current) / 10;
    step = step > 0 ? Math.ceil(step) : Math.floor(step);
    current += step;//移动后的值
    element.style[attr] = current / 100;
    } else if (attr == "zIndex") { //判断这个属性attr中是不是zIndex
    //层级改变就是直接改变这个属性的值
    element.style[attr] = json[attr];
    } else {
    //普通的属性
    //获取元素这个属性的当前的值
    var current = parseInt(getStyle(element, attr));
    //当前的属性对应的目标值
    var target = json[attr];
    //移动的步数
    var step = (target - current) / 10;
    step = step > 0 ? Math.ceil(step) : Math.floor(step);
    current += step;//移动后的值
    element.style[attr] = current + "px";
    }
    //是否到达目标
    if (current != target) {
    flag = false;
    }
    }
    if (flag) {
    //清理定时器
    clearInterval(element.timeId);
    //所有的属性到达目标才能使用这个函数,前提是用户传入了这个函数
    if (fn) {
    fn();
    }
    }
    //测试代码
    console.log("目标:" + target + ",当前:" + current + ",每次的移动步数:" + step);
    }, 20);
    }

    //zIndex:1000
    //透明度: 数字类型----小数---放大100倍
    my$("btn1").onclick = function () {

    var json1 = {"width": 400, "height": 500, "left": 500, "top": 80, "opacity": 0.2};
    animate(my$("dv"), json1, function () {
      animate(my$("dv"), {"width": 40, "height": 50, "left": 0, "top": 0, "opacity": 1, "zIndex": 1000});
    });
    

    };

    </script>
    四、client系列
    1.client系列:可视区域
    2.clientWidth:可视区域的宽(没有边框),边框内部的宽度
    3.clientHeight:可视区域的高(没有边框),边框内部的高度
    4.clientLeft:左边边框的宽度
    5.clientTop :上面的边框的宽度

    相关文章

      网友评论

          本文标题:js-day4

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