JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例

yizhihongxing

下面我将为你讲解JS实现鼠标拖拽盒子移动及右键点击盒子消失效果的完整攻略。

1. 鼠标拖拽盒子移动实现

  1. 首先,在HTML代码中准备一个盒子元素,例如:
<div id="box"></div>
  1. 在CSS中为该盒子设置样式,使其成为一个带边框、背景色的方块:
#box {
    width: 100px;
    height: 100px;
    border: 1px solid #000;
    background-color: #ccc;
}
  1. 在JS中为盒子添加鼠标按下、鼠标移动、鼠标松开三个事件监听器,实现拖拽效果:
var box = document.getElementById('box');
var x = 0;
var y = 0;
var isDragging = false;

box.addEventListener('mousedown', function (e) {
    x = e.offsetX;
    y = e.offsetY;
    isDragging = true;
});

box.addEventListener('mousemove', function (e) {
    if (isDragging) {
        box.style.left = (e.clientX - x) + 'px';
        box.style.top = (e.clientY - y) + 'px';
    }
});

box.addEventListener('mouseup', function (e) {
    isDragging = false;
});

在以上代码中,分别定义了盒子元素、鼠标按下时鼠标在盒子内的坐标、拖拽状态三个变量。然后给盒子添加了三个事件监听器,分别在鼠标按下、移动、松开时触发相应的处理。在鼠标按下时,记录鼠标在盒子内的坐标,并把拖拽状态标记为true。在鼠标移动时,如果当前处于拖拽状态,则计算出盒子应该移动到的新位置,并设置left和top属性实现移动。在鼠标松开时,取消拖拽状态。

2. 右键点击盒子消失效果实现

  1. 在之前的HTML代码中,给盒子元素添加一个右击菜单:
<div id="box" oncontextmenu="return false;">
    右键点击我消失
    <div id="menu" style="display:none;">
        <ul>
            <li>确定</li>
            <li>取消</li>
        </ul>
    </div>
</div>

在以上代码中,利用oncontextmenu事件取消了右击菜单的默认行为,并添加了一个id为menu的菜单元素。

  1. 在CSS中设置菜单的样式,使其显示在鼠标点击位置:
#menu {
    position: absolute;
    left: 0;
    top: 0;
}

#menu ul {
    list-style: none;
    margin: 0;
    padding: 0;
    background-color: #fff;
    border: 1px solid #000;
}

#menu li {
    padding: 5px;
    cursor: pointer;
}

#menu li:hover {
    background-color: #ccc;
}

在以上代码中,将菜单的position属性设置为absolute,使其相对于父元素进行定位。然后给菜单的li元素设置鼠标悬停时的背景色。

  1. 在JS中为盒子添加右键点击事件监听器,根据点击位置显示菜单,并处理菜单的点击事件:
var box = document.getElementById('box');
var menu = document.getElementById('menu');

box.addEventListener('contextmenu', function (e) {
    e.preventDefault();  // 阻止默认右键菜单的出现
    menu.style.display = 'block';
    menu.style.left = e.clientX + 'px';
    menu.style.top = e.clientY + 'px';
});

menu.addEventListener('click', function (e) {
    var target = e.target;
    if (target.tagName === 'LI') {
        if (target.innerText === '确定') {
            box.style.display = 'none';
        }
        menu.style.display = 'none';
    }
});

在以上代码中,定义了盒子元素和菜单元素两个变量。给盒子添加了contextmenu事件监听器,阻止默认右键菜单的出现,并将菜单显示在鼠标点击的位置。在菜单的click事件监听器中,判断点击的是哪个li元素,如果是确定,则隐藏盒子。如果不是确定,或者点击在菜单外部,则隐藏菜单。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue语法和标签的入门使用教程

    下面是“Vue语法和标签的入门使用教程”完整攻略: Vue语法和标签的入门使用教程 什么是Vue.js? Vue.js是一套构建用户界面的渐进式框架,核心库只关注视图层,易于上手并且便于与其它第三方库或已有项目集成。 Vue.js的基本概念 实例和挂载 Vue.js通过创建一个Vue实例来使用其提供的功能,例如数据绑定、指令等。我们可以使用new Vue()…

    Vue 2023年5月27日
    00
  • Vue使用echarts的完整步骤及解决各种报错

    Vue使用echarts步骤: 安装echarts 在项目中安装echarts依赖。使用npm安装,在终端中输入以下命令: npm install echarts –save 引入echarts 在需要使用echarts的组件中引入echarts。 import echarts from ‘echarts’ 初始化图表 使用echarts提供的初始化方法进…

    Vue 2023年5月28日
    00
  • Vue的Flux框架之Vuex状态管理器

    Vue的Flux框架之Vuex状态管理器 Vuex是Vue.js的官方状态管理库,它提供了一种集中式存储管理应用不同组件共享的所有状态的解决方案。Vuex在应用中的作用类似于React的Flux架构中的Store,并借鉴了Redux的一些设计理念。 Vuex的核心概念 Vuex解决了Vue中共享状态管理的问题,关键是它的核心概念非常简单,包括: State:…

    Vue 2023年5月28日
    00
  • 使用vuepress搭建静态博客的示例代码

    下面是使用vuepress搭建静态博客的完整攻略及两条示例说明: 总体步骤 安装Node.js(v8.0以上) 全局安装vuepress:npm install -g vuepress 创建一个新的博客目录:在终端中执行mkdir my-blog,切换到目录中:cd my-blog 创建 vuepress 的配置目录和文件: mkdir .vuepress …

    Vue 2023年5月28日
    00
  • 什么是Vue.js框架 为什么选择它?(第一课)

    什么是Vue.js框架? Vue.js是一款用于构建用户界面的渐进式JavaScript框架。它的核心是一个轻量级的,响应式的数据绑定系统,使开发者能够更轻松地构建交互式的用户界面。Vue.js还提供了一系列工具和插件,用于帮助我们轻松地组织和管理我们的代码。 总的来说,Vue.js框架有以下特点: 渐进式框架:Vue.js是一个渐进式的框架,这意味着你可以…

    Vue 2023年5月28日
    00
  • Vue3父子组件传参有关sync修饰符的用法详解

    下面是详细讲解“Vue3父子组件传参有关sync修饰符的用法详解”的完整攻略。 什么是sync修饰符? 在Vue3中,我们可以使用.sync修饰符将父组件的数据属性与子组件的属性进行双向绑定。例如,我们有一个父组件和一个子组件: <!– 父组件 –> <template> <div> <h2>{{ mess…

    Vue 2023年5月28日
    00
  • until封装watch常用逻辑简化代码写法

    我来详细讲解一下“until封装watch常用逻辑简化代码写法”的攻略。 什么是until until是Vue.js中一个常用的指令修饰符,它用于监听数据变化直到满足条件才执行操作。常用语法如下: <!– 监听value值变化,直到其等于一个值为9的时候才执行alert方法 –> <div v-on:click="alert(…

    Vue 2023年5月27日
    00
  • Vue CLI中模式与环境变量的深入详解

    下面是Vue CLI中模式与环境变量的深入详解。 什么是Vue CLI Vue CLI是Vue.js官方提供的脚手架工具,用于快速搭建Vue.js应用。Vue CLI提供了许多功能,包括创建项目、执行开发服务器和构建打包等。在Vue CLI中,有三种不同的模式(modes)可供选择,分别是开发模式(development)、生产模式(production)和…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部