纯JS、CSS模拟可上拉下拉的组件框

效果图如下(有个鼠标点着灰色条拖动它的哈):

效果图

接下来look look你们期盼的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{

            overflow: hidden;
        }
        .moveBar{
            width: 300px;
            height: 15px;
            background-color: #aaa;
            cursor: move;
        }
        .block{
            width: 500px;
            height: 350px;
            font-size: 28px;
            display: flex;
            align-items: center;
            justify-content: center;
            background-color: #0062CC;
        }
        .box{
            width: 300px;
            height: 300px;
            font-size: 28px;
            background-color: aquamarine;
            position:relative;
        }
    </style>
    <script>
        var store = {

            ifDrag : false
        }
        function onStartDrag(e) {

            let event = window.event || arguments.callee.caller.arguments[0];
            store.ifDrag = true;
            store.startPos = event.pageY;
            document.body.style.userSelect = "none";    
        }
        function onDrag(e) {

            if (store.ifDrag) {
                let box = document.getElementById('box');
                let event = window.event || arguments.callee.caller.arguments[0];
                let top = box.style.top;
                box.style.top = (top.substr(0, top.length-2) - (store.startPos - event.pageY)) + "px";
                store.startPos = event.pageY;
            }
        }
        function onEndDrag(){

            if (store.ifDrag) document.body.style.userSelect = "text";
            store.ifDrag = false;
        }
    </script>
</head>
<body οnmοusemοve="onDrag()" οnmοuseup="onEndDrag()">
    <div class="block">阻挡块</div>
    <div id="box" class="box">
        <div class="moveBar" οnmοusedοwn="onStartDrag();"
        οnmοuseup="onEndDrag()"></div>
        <div align="center" style="margin-top: 120px">可上拉和下拉的框</div>
    </div>
</body>


</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Poulyield

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值