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>
  • 相关阅读:
    Linux下Tomcat日志分割
    adb logcat 命令使用说明
    linux系统下安装两个或多个tomcat
    架构师小跟班:SSL证书免费申请及部署,解决页面样式错乱问题完整攻略
    springboot获取七牛云空间文件列表及下载功能
    Java使用ganymed工具包执行LINUX命令教程
    Java学生信息管理系统源码
    数据库SQL语句性能优化
    Java开发环境系列:一篇能解决你99%问题的排雷日记
    架构师小跟班:教你从零开始申请和配置七牛云免费OSS对象存储(不能再详细了)
  • 原文地址:https://www.cnblogs.com/zcy9838/p/12961666.html
Copyright © 2011-2022 走看看