前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >拖动图片改变位置

拖动图片改变位置

作者头像
Dreamy.TZK
发布于 2020-04-16 09:06:25
发布于 2020-04-16 09:06:25
6.8K00
代码可运行
举报
文章被收录于专栏:小康的自留地小康的自留地
运行总次数:0
代码可运行

案例描述

  1. 点击图片可以复制图片
  2. 鼠标移动过程中,会有图片跟随
  3. 再次点击图片,图片固定位置。

在线展示:https://gethtml.cn/project/2020/04/14/index.html

实现过程

通过过程我们可以分析出,需要三个事件进行绑定即

  • 点击事件 点击后创建(复制)一个新的图片
  • 鼠标跟随 图片跟随鼠标移动而移动
  • 停止 即鼠标再次点击图片固定在当前位置。

代码实现

首先式html结构,这个非常简单,无非是一张图片在变动下位置即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .pic {
            width: 160px;
            height: 92px;
            border-radius: 10px;
            box-shadow: 0 0 5px 5px #e5e5e5;
            position: absolute;
            left: 200px;
            top: 200px
        }
    </style>
</head>

<body>
    <img class="pic" src="https://cdn.jsdelivr.net/gh/blogimg/picbed@master/2020/04/13/d8ccc2fd66f340c46b8fb98ed7148223.png">
</body>

</html>

第二步 编写我们的鼠标点击事件。

鼠标点击之前,首先要获取图片对象,不然怎么给图片绑定点击事件呢。这里需要考虑一件事情,即鼠标移动事件在什么时候被触发,很简单,当然是在图片被点击的时候。那么我们就需要一个标志,用于记录是否触发了点击事件。因此第一个事件的代码可以写为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//获取图片元素对象
var img = document.getElementsByClassName('pic')[0]
//设置开关,并定义克隆的对象。
var cloneImg, flag = false
// 为图片对象绑定事件
img.onclick = function (event) {
    flag = true //表示click事件出发了
    // 获取鼠标坐标值html
    var mouseX = event.pageX
    var mouseY = event.pageY
    // 计算复制的图片的坐标值(鼠标减去图片大小的一半)
    var x = mouseX - 80 
    var y = mouseY - 46
    // 获取原有图片当前显示的宽度和高度
    // 复制元素,并且显示(鼠标显示在图片的正中心)在页面中
    cloneImg = img.cloneNode()
    document.body.appendChild(cloneImg)
    //改变克隆对象的坐标
    cloneImg.style.left = x + 'px'
    cloneImg.style.top = y + 'px'
}

那么接下来要做的就是就是为新创建出来的图片对象赋予鼠标移动事件。这里我们需要判断下标志是否为true,即点击事件是否被触发。同样需要考虑

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 鼠标跟随移动 - 鼠标跟随事件
var html = document || document.documentElement //代表当前页面
html.onmousemove = function (event) {
    if (flag === true) {
        // 获取鼠标坐标值html
        var mouseX = event.pageX
        var mouseY = event.pageY
        // 计算复制的图片的做编制
        var x = mouseX - 80
        var y = mouseY - 46
        cloneImg.style.left = x + 'px'
        cloneImg.style.top = y + 'px'
    }
}

那么最后一件事就是鼠标再次点击的情况了,这个情况是在鼠标移动事件时才可以被执行的,那么这个事件就应该写在鼠标移动事件里

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
html.onmousemove = function (event) {
    if (flag === true) {  
        cloneImg.onclick = release
    }
}
function release() {
    flag = false
}

此时我们的小项目也就完成了

其他

完整代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .pic {
            width: 160px;
            height: 92px;
            border-radius: 10px;
            box-shadow: 0 0 5px 5px #e5e5e5;
            position: absolute;
            left: 200px;
            top: 200px
        }
    </style>
</head>

<body>
    <img class="pic"
        src="https://cdn.jsdelivr.net/gh/blogimg/picbed@master/2020/04/13/d8ccc2fd66f340c46b8fb98ed7148223.png" alt="">
    <script>
        var img = document.getElementsByClassName('pic')[0]
        var cloneImg, flag = false
        img.onclick = function (event) {
            flag = true //表示click事件出发了
            // 获取鼠标坐标值html
            var mouseX = event.pageX
            var mouseY = event.pageY
            // 计算复制的图片的做编制
            var x = mouseX - 80
            var y = mouseY - 46
            // 获取原有图片当前显示的宽度和高度
            // 复制元素,并且显示(鼠标显示在图片的正中心)在页面中
            cloneImg = img.cloneNode()
            document.body.appendChild(cloneImg)
            cloneImg.style.left = x + 'px'
            cloneImg.style.top = y + 'px'
        }
        // 鼠标跟随移动 - 鼠标跟随事件
        var html = document || document.documentElement //代表当前页面
        html.onmousemove = function (event) {
            if (flag === true) {
                // 获取鼠标坐标值html
                var mouseX = event.pageX
                var mouseY = event.pageY
                // 计算复制的图片的做编制
                var x = mouseX - 80
                var y = mouseY - 46
                cloneImg.style.left = x + 'px'
                cloneImg.style.top = y + 'px'
                cloneImg.onclick = release
            }
        }
        // 释放图片
        function release() {
            flag = false
        }
    </script>
</body>

</html>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python Django个人网站搭建4-配置使用 Bootstrap 4 并改写模板文件
作者: zifanwang  发布于2020-05-08
zifan
2021/12/14
2K0
Python Django个人网站搭建4-配置使用 Bootstrap 4 并改写模板文件
5.栅格系统
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yx7xPxw0-1594451881727)(D:\bootstrap\Bootstrap入门.assets\image-20200711135751305.png)]
Qwe7
2022/06/01
1.2K0
移动端WEB开发之响应式布局
原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列方式和大小,从而实现不同屏幕下,看到不同的页面布局和样式变化。
星辰_大海
2020/09/30
4.1K0
golang使用实践分享之gin模版引擎使用
最近在看gin,在模版引擎这块被卡克啦----伟大的强啊。今天就来分享一下gin的模版引擎渲染。
大话swift
2019/07/30
1.8K0
golang使用实践分享之gin模版引擎使用
Rails 7 中引入 Bootstrap 5
在 Rails 6 中有两种不同的工具可以用来管理前端的 CSS、JavaScript 以及 images 等资源,分别是 “Sprockets” 和 “Webpacker”,“Sprockets” 除了 Rails 应用外很少使用,但是 “Webpacker” 不仅在 Rails 中,在其他应用框架中也被广泛的使用。
RiemannHypothesis
2023/02/20
3.2K0
Rails 7 中引入 Bootstrap 5
Bootstrap入门
Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。 [1] 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。
Qwe7
2022/06/01
4810
Java程序员的日常 —— 响应式导航Demo
这两天想要做响应式的页面,于是本着重复造轮子的想法,模仿Bootstrap官网,精简了一个响应式导航的Demo。 效果 代码 <!DOCTYPE html> <html> <head>
用户1154259
2018/01/17
8000
Java程序员的日常 —— 响应式导航Demo
一个完整的Django入门指南(二)
第三部分 Introduction        In this tutorial, we are going to dive deep into two fundamental concepts: URLs and Forms. In the process, we are going to explore many other concepts like creating reusable templates and installing third-party libraries. We are a
zhang_derek
2018/04/11
3.3K0
一个完整的Django入门指南(二)
bootstrap
花了一天时间学了下bootstrap入门,想必大家用css写前端页面的时候都很痛苦,bootstrap就是来解决这个问题的,它封装了css的很多样式,开发的时候直接拿来用就可以了,提高了开发效率
用户3112896
2019/09/26
3.5K0
bootstrap
响应式网页bootstrap
相当于C#UI里面的容器系统,bootstrap对css进行扩展,使用了类似less文件中的变量定义,sacc不仅增加了变量还多了继承、混合、嵌套等功能
sofu456
2022/05/06
6.9K0
前端基础-Bootstrap
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/12/11
1.5K0
JavaWeb——一文快速入门BootStrap(栅格系统、全局CSS样式、组件、插件、基于BootStrap的官网案例实战)
BootStrap是一个前端开发的框架,Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。
Winter_world
2020/09/25
2.5K0
JavaWeb——一文快速入门BootStrap(栅格系统、全局CSS样式、组件、插件、基于BootStrap的官网案例实战)
bootstrap5基本使用
container是最基本的布局。 给一个元素的class赋值为container之后,如果显示屏幕小于576,元素将要横向占满屏幕,但是大于576小于576像素的时候,宽度恒定为540,。就是说你的屏幕很宽的时候,元素永远不会横向占满整个屏幕,与边距有孔隙。但是赋值为.container-fluid的时候,元素永远横向占满屏幕,不会留有孔隙。
Crayon鑫
2023/10/10
5550
bootstrap5基本使用
移动开发-响应式
移动开发-响应式布局 响应式开发原理: 使用媒体查询针对不同宽度的设备进行布局和样式设置,从而适配不同设备 设备划分 尺寸区间 超小屏幕 (手机) < 768px 小屏设备 (平板) >= 768px ~ < 992px 中等屏幕 (桌面显示器) >= 992px ~ <1200px 宽屏设备 (大桌面显示器) >= 1200px 响应式布局容器: 响应式需要一个父级做为布局容器,来配合子级元素来实现变化效果 原理就是在不同屏幕下,通过媒体查询来改变这个布局容器的大小,再改变里面子元素的排列方式和大小,从
小城故事
2022/11/24
2.5K0
做个网页玩玩
网站分为前端和后端,前端主要是将后端的信息展示给用户看的。网上你看到的所有内容,都是前端展示出来的。
叶子陪你玩
2021/11/18
4530
做个网页玩玩
Web-第五天 BootStrap学习
将使用Bootstrap重写首页,整个案例中将使用到Bootstrap各种模块,为了方便编程,将采用拆分的原则,各个模块单独编写,最后组合。
Java帮帮
2018/07/27
5.2K0
Web-第五天 BootStrap学习
python web开发 Bootstrap框架基础
popper.js cdn:https://unpkg.com/@popperjs/core@2 jquery.js https://code.jquery.com/jquery-3.6.0.js
Michael阿明
2022/01/07
1.1K0
python web开发 Bootstrap框架基础
[物联网loT]树莓派实现局域网内LED亮灭
[思路]:树莓派安装express服务器,访问服务器,与服务器交互,从而控制硬件,最终实现树莓派引脚电平控制,进而实现与树莓派电路板引脚相连的LED亮与灭。
周星星9527
2019/08/27
1.4K0
[物联网loT]树莓派实现局域网内LED亮灭
响应式布局
原理:在不同屏幕下,通过媒体查询来改变布局容器的大小,再改变里面子元素的排列方式和大小,从而实现在不同大小的屏幕下,看到不同的页面布局和样式。
赤蓝紫
2023/01/01
3K0
响应式布局
WEB前端响应式布局之BootStarp使用
1. 概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。     * 框架:一个半成品软件,开发人员可以在框架基础上,在进行开发,简化编码。     * 好处:         1. 定义了很多的css样式和js插件。我们开发人员直接可以使用这些样式和插件得到丰富的页面效果。         2. 响应式布局。             * 同一套页面可以兼容不同分辨率的设备。
杨校
2019/06/14
1K0
相关推荐
Python Django个人网站搭建4-配置使用 Bootstrap 4 并改写模板文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验