【js】在同一页面进行一个登录注册的滑动切换

效果展示

请添加图片描述

相关代码

html:

            <div class="mimabox">
                <div class="sign_hd">
                    <span class="cloud"></span>
                    <ul class="sign_hd">
                        <li class="current">登录</li>
                        <li>注册</li>
                    </ul>
                </div>
                <div class="sign_bd">
                    <ul>
                        <li class="login_in">
                        登录板块
                        </li>
                        <li class="register">
                        注册板块
                        </li>
                    </ul>
                </div>
            </div>

css:

.mimabox {
  position: absolute;
}
.mimabox .sign_hd {
  height: 35px;
  position: relative;
}
.mimabox .sign_hd .cloud {
  position: absolute;
  bottom: 0;
  width: 44px;
  height: 3px;
  background-color: #ff6900;
  border-radius: 2px;
}
.mimabox .sign_hd ul {
  list-style: none;
}
.mimabox .sign_hd ul li {
  cursor: pointer;
  margin-right: 15px;
  float: left;
  font-size: 22px;
  color: #bbb;
  transition: all 0.2s;
}
.mimabox .sign_hd ul .current {
  color: #000;
}
.mimabox .sign_bd {
  overflow: hidden;
  position: relative;
  width: 360px;
  height: 430px;
}
.mimabox .sign_bd ul {
  position: absolute;
  width: 720px;
  height: 430px;
}
.mimabox .sign_bd ul li {
  position: relative;
  display: block;
  list-style: none;
  float: left;
  width: 360px;
  height: 430px;
}

js

// 移动动画函数
function animate(obj, target, callback) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function() {
        // 步长值写到定时器的里面
        // 把步长值改为整数,不要出现小数的问题
        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();
            }
        }
        // 把每次步长值给为逐渐变小的值(目标值-现在位置/10)
        obj.style.left = obj.offsetLeft + step + 'px';
    }, 15);
}


window.addEventListener('load', function() {
    // 获取元素
    var cloud = document.querySelector('.cloud');
    var signhd = document.querySelector('.sign_hd');
    var lis = signhd.querySelectorAll('li');
    var signbd = document.querySelector('.sign_bd');
    var signbdul = signbd.querySelector('ul');
    var white = document.querySelector('.white');
    var mimabox = document.querySelector('.mimabox');
    var signbd = document.querySelector('.sign_bd');
    var area = 0;
    var bdarea = signbd.offsetWidth;
  
    // 筋斗云+登录注册跳转
    for (var i = 0; i < lis.length; i++) {
        lis[i].setAttribute('index', i);
        lis[i].addEventListener('click', function() {
            for (var i = 0; i < lis.length; i++) {
                lis[i].className = ' ';
                area = this.offsetLeft;
                this.className = 'current';
                var index = this.getAttribute('index');
                if (index == 1) {
                    console.log('11111');
                    signbox.style.height = '530px';
                    signbd.style.height = '530px';

                } else {
                    console.log('0000');
                    signbox.style.height = '430px';
                    signbd.style.height = '430px';
                }
                console.log('aaa' + index);
                animate(cloud, area);
                console.log(index * bdarea);
                animate(signbdul, -index * bdarea);
            }
        });
    }

});

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值