首页 > 其他分享 >拖拽去除元素

拖拽去除元素

时间:2025-01-14 23:55:49浏览次数:1  
标签:box style 元素 drag 去除 var document border 拖拽

<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> * { margin: 0; padding: 0; }

    .drag {
        position: fixed;
        top: 20px;
        right: 80px;
        width: 90px;
        height: 40px;
        /* width: 260px;
        height: auto; */
        box-sizing: border-box;
        border-radius: 20px;
        display: flex;
        padding: 5px 10px;
        border: 1px solid #ccc;
        background: #fff;
    }

    .drag-icon {
        width: 30px;
        height: 30px;
        border-radius: 50%;
        cursor: pointer;
        line-height: 0;
    }

    .drag-icon img {
        width: 100%;
        border-radius: 50%
    }

    .drag-config {
        margin-right: 10px;
        position: relative;
    }

    .drag:hover {
        cursor: move;
    }

    .drag-content {
        cursor: pointer;
        display: none;
        width: 200px;
        height: auto;
        box-sizing: border-box;
    }

    .drag-info {
        width: 100%;
        max-height: 600px;
        min-height: 200px;
        border: 1px solid cyan;
        border-radius: 10px;
        overflow-y: auto;
    }

    .drag-seach {}

    .drag-select {
        padding: 5px 0;
        display: inline-block;
        position: relative;
    }

    .select-brief {
        padding: 5px 10px;
        border: 1px solid #ccc;
        display: inline-block;
        border-radius: 40px;
        font-size: 16px;
    }

    .drag-select:hover .select-info {
        display: block;
    }

    .select-info {
        position: absolute;
        top: 40px;
        width: auto;
        left: 0;
        background: #fff;
        box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
        padding: 8px 10px;
        border-radius: 10px;
        white-space: nowrap;
        display: none;
    }

    .select-info li {
        line-height: 30px;
        text-align: center;
        font-size: 16px;
        padding: 3px 15px;
    }

    .select-info li:hover {
        border-radius: 10px;
        background: greenyellow;
    }

    ul {
        list-style: none;
    }
</style>
</head> <body> <div class="drag"> <div class="drag-icon drag-config"> <img src="https://showdoc.keytop.cn/Public/Uploads/2024-04-28/662dbe484313f.png" alt=""> <div> <ul class="select-info config-select"> <li>默认查询</li> <li>翻译为中文</li> <li>翻译为英文</li> </ul> </div> </div> <div class="drag-icon drag-seach"> <img src="https://showdoc.keytop.cn/Public/Uploads/2024-04-28/662dbe484313f.png" alt=""> </div> <div class="drag-content"> <div class="drag-info"> dsfsdf </div> <div class="drag-select"> <div class="select-brief"> 理解文章 </div> <ul class="select-info"> <li>默认查询</li> <li>翻译为中文</li> <li>翻译为英文</li> </ul> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/jquery@3.2/dist/jquery.min.js"></script> <script> let box = document.querySelector('.drag') let dragIcon = document.querySelector('.drag-config') let dragS = document.querySelector('.drag-seach') let content = document.querySelector('.drag-content') let config = document.querySelector('.config-select') dragIcon.onmouseenter = function () { config.style.display = 'block' } dragIcon.onmouseleave = function () { config.style.display = 'none' } dragS.onclick = function () { dragS.style.display = 'none' content.style.display = 'block' box.style.width = '260px' box.style.height = 'auto' box.style.boxShadow = 'inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)' } // box.onmousedown = function (ev) { // let e = ev || event; // e.preventDefault() // let x = e.clientX - box.offsetLeft; //鼠标点击坐标距离盒子左边缘的距离 // let y = e.clientY - box.offsetTop; //鼠标点击坐标距离盒子上边缘的距离 // document.onmousemove = function (ev) { // let e = ev || event; // box.style.left = ev.clientX - x + 'px'; // box.style.top = ev.clientY - y + 'px';
    //         let bodyScreenX = ev.screenX
    //         let bodyClientWidth = document.body.clientWidth
    //         e.preventDefault()
    //         document.onmouseup = function (ev) {
    //             if (ev.clientX - x < 0) {
    //                 box.style.left = 0
    //             } else if (bodyScreenX > bodyClientWidth) {
    //                 box.style.right = 0
    //                 box.style.left = bodyClientWidth - 100 + 'px'
    //             }
    //             document.onmousemove = null;
    //             document.onmouseup = null;
    //         }
    //     }
    // }


    var draggable = function (modal, handle, a) {

        var isDragging = false;

        var startX = 0,
            startY = 0,

            left = 0,
            top = 0;

        var dragStart = function (e) {

            var e = e || window.event;

            e.preventDefault();
            var flag = false
            $.each(a, function (i, v) {
                // 获取需要排除的元素
                var elemCancel = $(e.target).closest(v);
                // 如果拖拽的是排除元素,函数返回
                if (elemCancel.length) {
                    flag = true
                }
            })
            if (flag) {
                return true
            }
            // // 获取需要排除的元素
            // var elemCancel = $(e.target).closest(cancle);
            // // 如果拖拽的是排除元素,函数返回
            // if (elemCancel.length) {
            //     return true;
            // }

            isDragging = true;

            startX = e.clientX;
            startY = e.clientY;

            left = $(modal).offset().left;
            top = $(modal).offset().top;

        }

        var dragMove = function (e) {

            var e = e || window.event;

            e.preventDefault();

            if (isDragging) {

                var endX = e.clientX,
                    endY = e.clientY,

                    relativeX = endX - startX,
                    relativeY = endY - startY;

                $(modal).css({
                    left: relativeX + left + 'px',
                    top: relativeY + top + 'px'
                });

            }

            return false;

        }

        var dragEnd = function (e) {

            isDragging = false;

        }

        $(handle).on('mousedown', dragStart);

        $(document).on('mousemove', dragMove);

        $(document).on('mouseup', dragEnd);
    }
    var a = ['.drag-content', '.drag-config', '.drag-seach',]
    draggable('.drag', '.drag', a);

</script>
</body>

标签:box,style,元素,drag,去除,var,document,border,拖拽
From: https://www.cnblogs.com/lee-jnene/p/18671905

相关文章

  • LeetCode:347.前K个高频元素
    LeetCode:347.前K个高频元素vartopKFrequent=function(nums,k){letmap=newMap();letarr=[...newSet(nums)]nums.forEach(item=>{if(map.has(item)){map.set(item,map.get(item)+1)}else{map.set(item,1)......
  • day01 704. 二分查找&&27. 移除元素
    二分查找(search方法)publicintsearch(int[]nums,inttarget){intleft=0;intright=nums.length-1;intmid;while(left<=right){mid=(left+right)/2;if(nums[mid]==target){returnmid;}elseif(nums[mid]<target){left=mid+1;}else{right=mid-1;}}retur......
  • LeetCode:215.数组中的第K个最大元素
    LeetCode:215.数组中的第K个最大元素解题思路看到“第K个最大元素”。考虑选择使用最小堆。解题步骤构建一个最小堆,并依次把数组的值插入堆中。当堆的容量超过K,就删除堆顶。插入结束后,堆顶就是第K个最大元素。leetcode在线运行测试可能是用本地环境跑分...有缓存卡大数有er......
  • 题山采玉:移除链表元素
    嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let'sgo!我的博客:yuanManGan我的专栏:C++入门小馆 C......
  • Canvas简历编辑器-选中绘制与拖拽多选交互方案
    Canvas简历编辑器-选中绘制与拖拽多选交互方案在之前我们聊了聊如何基于Canvas与基本事件组合实现了轻量级DOM,并且在此基础上实现了如何进行管理事件以及多层级渲染的能力设计。那么此时我们就依然在轻量级DOM的基础上,关注于实现选中绘制与拖拽多选交互设计。在线编辑:https:/......
  • 说说你对HTML元素的显示优先级的理解
    在前端开发中,HTML元素的显示优先级通常是由多个因素共同决定的,包括HTML的源代码顺序、CSS样式规则、以及JavaScript的动态修改。这里我们主要讨论的是在没有JavaScript干预,且CSS规则不冲突的情况下的显示优先级。HTML源代码顺序:在默认情况下,HTML元素按照它们在源代码中出现的顺......
  • 浏览器是怎样判断元素是否和某个CSS选择器匹配?
    浏览器判断元素是否与某个CSS选择器匹配的过程是一个复杂但高效的过程,主要涉及以下几个步骤:从右往左的匹配规则:浏览器对于CSS的匹配规则是从选择器的右边部分开始向左进行匹配的。这种匹配方式主要是基于效率和文档流的解析方向考虑的。从右往左匹配可以利用索引快速定位到目标......
  • 力扣-数组-219 存在重复元素Ⅱ
    解析同上一篇《力扣-数组-217存在重复元素》存储在重复元素的思路,重点是放在结构体里,保存之前的下标即可。代码classSolution{public:structmyNode{intindex;intvalue;};staticboolcmp(myNodea,myNodeb){return......
  • 【交替方向乘子方法】ADOM: 基于ADMM的遥感图像条纹噪声去除优化模型(Matlab代码实现)
     ......
  • 算法2:移除元素
    一、前言题目链接:27.移除元素-力扣(LeetCode)给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行......