zoukankan      html  css  js  c++  java
  • 案例:鼠标移动到小盒子上时,会有盒子从右边滑动出来,鼠标一离开,向左边滑动过去

    这个案例功能是模仿京东的一个小功能,如下图所示:

    鼠标移动到箭头时,问题反馈这个盒子从右边滑动出来,鼠标一离开,向左边滑动过去

    <!-- CSS样式 -->
    <style>
            .sliderbar {
                position: fixed;
                right: 0;
                bottom: 100px;
                width: 40px;
                height: 40px;
                text-align: center;
                line-height: 40px;
                cursor: pointer;
                color: #fff;
            }
            
            .con {
                position: absolute;
                left: 0;
                top: 0;
                width: 200px;
                height: 40px;
                background-color: purple;
                z-index: -1;
            }
        </style>

    在页面中引入animate.js动画文件:

    // animate.js文件
    function animate(obj, target, callback) {
        // console.log(callback);  callback = function() {}  调用的时候 callback()
    
        // 先清除以前的定时器,只保留当前的一个定时器执行
        clearInterval(obj.timer);
        obj.timer = setInterval(function() {
            // 步长值写到定时器的里面
            // 把我们步长值改为整数 不要出现小数的问题
            // var step = Math.ceil((target - obj.offsetLeft) / 10);
            var step = (target - obj.offsetLeft) / 10;
            step = step > 0 ? Math.ceil(step) : Math.floor(step);
            if (obj.offsetLeft == target) {
                // 停止动画 本质是停止定时器
                clearInterval(obj.timer);
                // 回调函数写到定时器结束里面
                // if (callback) {
                //     // 调用函数
                //     callback();
                // }
                // 注意此处的优化代码
                callback && callback();
            }
            // 把每次加1 这个步长值改为一个慢慢变小的值  步长公式:(目标值 - 现在的位置) / 10
            obj.style.left = obj.offsetLeft + step + 'px';
    
        }, 15);
    }
    <body>
        <div class="sliderbar">
            <span></span>
            <div class="con">问题反馈</div>
        </div>
    
        <script>
            // 1. 获取元素
            var sliderbar = document.querySelector('.sliderbar');
            var con = document.querySelector('.con');
            // 当我们鼠标经过 sliderbar 就会让 con这个盒子滑动到左侧
            // 当我们鼠标离开 sliderbar 就会让 con这个盒子滑动到右侧
            sliderbar.addEventListener('mouseenter', function() {
                // animate(obj, target, callback);
                animate(con, -160, function() {
                    // 当我们动画执行完毕,就把 ← 改为 →
                    sliderbar.children[0].innerHTML = '';
                });
    
            })
            sliderbar.addEventListener('mouseleave', function() {
                // animate(obj, target, callback);
                animate(con, 0, function() {
                    sliderbar.children[0].innerHTML = '';
                });
    
            })
        </script>
    </body>
  • 相关阅读:
    处理客户端无法及时更新js、css
    关于JQ判断单选复选被选中
    一路风景,一路欣赏,一路有你
    Adobe Dreamweaver CC 2015新功能
    Eclipse导出APK文件报错 android lint problem
    swift2.0 计算圆面积
    zendStudio连接远程服务器报错java.net.SocketException
    IOS tableview 消除 分割线短 15 像素 ios8方法 swift版
    应用之间调用 UIApplication类的OpenURL方法
    iOS8 今日扩展
  • 原文地址:https://www.cnblogs.com/zcy9838/p/12961666.html
Copyright © 2011-2022 走看看