首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用纯javascript让一个可拖拽的div在4个角上都可以调整大小?

要实现让一个可拖拽的div在4个角上都可以调整大小,可以通过纯JavaScript来实现。下面是一个实现的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
<style>
    .draggable {
        width: 200px;
        height: 200px;
        background-color: #f1f1f1;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        cursor: move;
    }

    .resizable {
        width: 10px;
        height: 10px;
        background-color: #000;
        position: absolute;
        cursor: nwse-resize;
    }

    .resizable-top-left {
        top: -5px;
        left: -5px;
    }

    .resizable-top-right {
        top: -5px;
        right: -5px;
    }

    .resizable-bottom-left {
        bottom: -5px;
        left: -5px;
    }

    .resizable-bottom-right {
        bottom: -5px;
        right: -5px;
    }
</style>
</head>
<body>
    <div class="draggable">
        <div class="resizable resizable-top-left"></div>
        <div class="resizable resizable-top-right"></div>
        <div class="resizable resizable-bottom-left"></div>
        <div class="resizable resizable-bottom-right"></div>
    </div>

    <script>
        // 获取可拖拽的div元素
        var draggableElement = document.querySelector('.draggable');
        // 获取可调整大小的div元素
        var resizableElements = document.querySelectorAll('.resizable');

        var startX, startY, startWidth, startHeight;

        // 鼠标按下事件处理函数
        function mouseDown(event) {
            startX = event.clientX;
            startY = event.clientY;
            startWidth = parseInt(window.getComputedStyle(draggableElement).width);
            startHeight = parseInt(window.getComputedStyle(draggableElement).height);
            document.addEventListener('mousemove', mouseMove);
            document.addEventListener('mouseup', mouseUp);
        }

        // 鼠标移动事件处理函数
        function mouseMove(event) {
            var deltaX = event.clientX - startX;
            var deltaY = event.clientY - startY;

            // 调整大小
            if (event.target.classList.contains('resizable')) {
                var currentWidth = startWidth + deltaX;
                var currentHeight = startHeight + deltaY;

                draggableElement.style.width = currentWidth + 'px';
                draggableElement.style.height = currentHeight + 'px';
            }
            // 拖拽移动
            else {
                var newX = draggableElement.offsetLeft + deltaX;
                var newY = draggableElement.offsetTop + deltaY;

                draggableElement.style.left = newX + 'px';
                draggableElement.style.top = newY + 'px';
            }
        }

        // 鼠标松开事件处理函数
        function mouseUp() {
            document.removeEventListener('mousemove', mouseMove);
            document.removeEventListener('mouseup', mouseUp);
        }

        // 绑定鼠标按下事件
        resizableElements.forEach(function(element) {
            element.addEventListener('mousedown', mouseDown);
        });
    </script>
</body>
</html>

这段代码创建了一个可拖拽的div,同时在div的四个角上添加了可调整大小的小块。通过鼠标按下、移动和松开事件的处理函数,实现了拖拽和调整大小的功能。

这个功能可以应用于各种需要用户自定义大小和位置的场景,比如网页布局设计、图形编辑器等。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为示例产品,实际应根据具体需求选择适合的腾讯云产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

超强 CSS 鼠标点击拖拽效果

背景 鼠标拖拽元素移动,算是一个稍微有点点复杂交互。 而在本文,我们就将打破常规,向大家介绍一种超强仅仅使用 CSS 就能够实现鼠标点击拖拽效果。...从表现上来看: 首先拖拽元素过程,可以任意将元素进行移动 然后放置元素,元素停留在另外一个地方 思考一下,如果不借助 JavaScript 的话,有办法将元素小球从 A 点移动到 B 点么?...使用 resize,构建拖拽改变大小元素 首先,我们利用 resize 属性来实现一个改变大小元素。 什么是 resize 呢?...resize: horizontal:允许用户水平方向上调整元素大小 resize: vertical:允许用户垂直方向上调整元素大小 resize: block:根据书写模式(writing-mode...在此基础,我们可以尝试将一个元素定位到上面这个拖动放大缩小元素右下角,看着能不能实现上述效果。

2.1K10

CSS实现拖拽--resize、scale、包裹性

class='resizeElement'>div> div> div> 该示例,通过 css 实现了图片拖拽切换功能,没有涉及任何 JavaScript 代码,着实有些“奇思妙想”。...resize 提到一个点,一定是 resize 属性,这个属性平时开发中很少用到。其可由用户调整元素尺寸大小。...属性值 说明 none 不可以缩放 both 水平和垂直方向上均可调整元素大小 horizontal 水平方向上调整元素大小 vertical 垂直方向上调整元素大小 注意: 块元素 overflow...scaleY() 函数定义了一个沿 y 轴(垂直)调整元素大小变换。...显示拖拽条 由于完全隐藏了滚动条,用户也就不知道可以拖拽了,所以我们还需要绘制一个更为好看拖拽条。

3.3K20

CSS实现拖拽--resize、scale、包裹性

class='resizeElement'>div> div> div> 该示例,通过 css 实现了图片拖拽切换功能,没有涉及任何 JavaScript 代码,着实有些“奇思妙想”。...resize 提到一个点,一定是 resize 属性,这个属性平时开发中很少用到。其可由用户调整元素尺寸大小。...属性值 说明 none 不可以缩放 both 水平和垂直方向上均可调整元素大小 horizontal 水平方向上调整元素大小 vertical 垂直方向上调整元素大小 注意: 块元素 overflow...scaleY() 函数定义了一个沿 y 轴(垂直)调整元素大小变换。...显示拖拽条 由于完全隐藏了滚动条,用户也就不知道可以拖拽了,所以我们还需要绘制一个更为好看拖拽条。

2.9K10

20个惊艳React组件库,每一个都值得收藏(

拖拽调整大小:最吸引人特性之一就是支持拖拽调整组件大小功能。这不仅用户体验更加友好,也界面布局调整变得简单直观。...高度自定义:无论是布局行列数,还是每个网格尺寸,都可以根据需要进行自定义,满足不同项目的需求。 响应式设计:支持响应式设计,确保你布局不同设备和屏幕尺寸都能保持良好显示效果。...即使是拖拽列表和网格,也可以通过少量代码轻松完成。 高度定制:无论是调整动画速度,还是自定义拖拽句柄,React Beautiful DND都提供了丰富配置选项,满足开发者个性化需求。...一个优秀网站或应用,应该能够不同大小屏幕提供一致用户体验。...它可以帮助开发者轻松实现如下功能: 根据屏幕尺寸调整布局,例如在手机和平板电脑显示不同导航菜单。 隐藏或显示特定组件,以优化小屏幕设备用户体验。 调整组件样式,确保不同设备视觉效果一致。

72811

Form表单 问题多多(中)

今天主要提到标签有;label、文本框和密码框input、文本域。本文最早版本也是2013年8月时书写,随着行业变化,针对本篇文章也进行了内容调整调整时间2015年08月05日。...先来说第一点:有时,用户会点击表单元素(:文本框)对应文字,例如,点击“用户名”三个字,此时,出于对用户体验考虑,可以使“用户名”所对应表单元素直接获得焦点,这个表单元素处于聚焦状态。...还有一点需要注意是,假设文本框高度是32像素,为文字设置32像素行高,初始状态下,IE6光标位置并没有文本框中垂直居中,因此,通常我们会为父级添加padding,而高度只给文字大小(假设文字大小... textarea右下角拖拽小按钮,的确是可以用户进行拖拽,但是一旦拖拽,网页样式就会发生改变,整体还算不错页面样式就变得杂乱不堪...因此很多网站都会将这个拖拽小东西去掉。 处理方法很简单,textarea{resize: none;}即可使得右下角拖动小三消失掉。

1.5K50

动图展示 60+ 个前端常用插件库合集

Animate.css 官网:Animate.css CSS,无需JavaScript,支持多浏览器动画特效,即插即用。...Muuri.js 官网:Muuri Muuri是一个JavaScript Layout引擎,你可以构建多样化Layout,并具有响应式、排序、可过滤、拖拽移动或动画效果。...p5.js-绘画插件 官网:p5.js Github:processing/p5.js p5.js是一个JavaScript函数库,有完整绘画功能,并不局限画布,你可以把整个浏览器当做你草稿,另外有插件可以你更容易去做...fullcalendar 官网:JavaScript Calendar Github:fullcalendar 设计一个满版且拖拽事件行程日历。...JS整体层面比toastr好很多,无论原生JavaScript以及整体文件大小和功能延展性,但toastr简单使用操作模式,如果有旧项目是jQuery环境下,要做一些定制化功能,或许就是不错选择

6.5K40

百度地图API开发指南(二)

= function(map){    // 创建一个DOM元素 var div = document.createElement("div");    // 添加文字说明 div.appendChild...标注、矢量图形元素(包括:折线和多边形和圆)、信息窗口等。覆盖物拥有自己地理坐标,当您拖动或缩放地图时,它们会相应移动。...// 当标注显示地图上时,其所指向地理位置距离图标左上    // 各偏移10像素和25像素。您可以看到本例中该位置即是    // 图标中央下端位置。 ...默认情况下标注不支持拖拽,您需要调用marker.enableDragging()方法来开启拖拽功能。标注开启拖拽功能后,您可以监听标注dragend事件来捕获拖拽后标注最新位置。...信息窗口可直接在地图上任意位置打开,也可以标注对象打开(此时信息窗口坐标与标注坐标一致)。

1.6K30

《前端5分钟》之使用css实现网站换肤和焦点图切换动画

你将收获 •网站换肤设计方案介绍•:target伪类介绍和用法以及如何使用css实现网站换肤•transition动画以及如何用css实现焦点图动画 效果展示 1.网站换肤 ? 2.焦点图动画 ?...答案是可以,接下来我们就来看看css如何实现网站换肤. 实现换肤之前,我们需要了解一个知识点,那就是a标签:target伪类....•sly 导航式、单向滚动•Sequence 可以创建响应式幻灯片、演示、旗帜广告和以步骤为基础CSS 动画框架•PhotoSwipe 适用于移动设备和桌面电脑,基于原生JavaScript模块组件...以上介绍方案都很成熟,我们可以直接拿来使用,但是为了追求简洁和代码量最低,我们有办法用css实现一个简单焦点图切换动画吗?...)•《css大法》之使用伪元素实现超实用图标库(附源码) 实现思路如下: 1.建立焦点图和控制点对应关系2.初始化页面时只一个焦点图有宽度,其他宽度都设置为零,当控制点激活时,然控制点对应目标对象宽度设置为正常值

4.1K20

《前端技巧复盘》使用css实现网站换肤和焦点图切换动画

你将收获 •网站换肤设计方案介绍 •:target伪类介绍和用法以及如何使用css实现网站换肤 •transition动画以及如何用css实现焦点图动画 效果展示 1.网站换肤 2.焦点图动画 实现思路...答案是可以,接下来我们就来看看css如何实现网站换肤. 实现换肤之前,我们需要了解一个知识点,那就是a标签:target伪类....•sly 导航式、单向滚动 •Sequence 可以创建响应式幻灯片、演示、旗帜广告和以步骤为基础CSS 动画框架 •PhotoSwipe 适用于移动设备和桌面电脑,基于原生JavaScript模块组件...以上介绍方案都很成熟,我们可以直接拿来使用,但是为了追求简洁和代码量最低,我们有办法用css实现一个简单焦点图切换动画吗?...) •《css大法》之使用伪元素实现超实用图标库(附源码) 实现思路如下: 1.建立焦点图和控制点对应关系2.初始化页面时只一个焦点图有宽度,其他宽度都设置为零,当控制点激活时,然控制点对应目标对象宽度设置为正常值

3.8K30

20个惊艳React组件库,每一个都值得收藏(下)

高度定制:允许开发者通过各种配置选项调整地图显示方式,包括地图类型、缩放级别和视角等。 应用场景 位置展示:企业网站上展示公司地理位置,帮助顾客找到实体店铺或办公地点。...https://github.com/missive/emoji-mart 17、React Split Pane:为React应用带来灵活拖拽面板布局 构建复杂Web应用时,灵活布局系统是提升用户体验关键...React Split Pane库允许开发者React应用中创建拖拽分割面板布局,实现多个可调整大小区域。...React Split Pane特性 拖拽分割线:用户可以通过拖拽分割线来调整面板大小,实现高度灵活布局调整。 方向灵活:支持水平和垂直两种分割方式,可以根据需求设计布局结构。...数据分析和可视化:在数据仪表盘中,根据用户需求自定义各个数据展示区域大小。 后台管理系统:系统多个模块间提供灵活空间分配,侧边栏和内容区动态调整

39711

百度开源e-chart初探

前言:   近年来,在数据服务公司中,数据可视化越来越重要。随着而来,国内外正在如火开发各种在线js视图展示框架。而百度e-chart算是实用性较高且体验最好!...今天闲来无事,便来玩玩~ ---- echart自我介绍: “基于Canvas,Javascript图表库,提供直观,生动,交互,个性化定制数据可视化图表。...创新拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合能力。”.../doc/start.html' 4 实战 step1:新建 echart-test.html 文件,为ECharts准备一个具备大小(宽高)Dom。...-- 为ECharts准备一个具备大小(宽高)Dom --> 8 9 <!

1.2K20

看不完那种!前端170面试题+答案学习整理(良心制作)

18.rem原理是什么 在做响应式布局时,通过调整html字体大小,页面上所有使用rem单位元素都会做相应调整。...javascript操作,有异步操作,ajax读取服务器数据,有同步操作,遍历一个大型数组,它们都不能立即得到结果。...jquery ui则是jquery基础对jquery扩展,是jquery插件。jquery ui提供了一些常用界面元素,如对话框,拖动行为,改变大小行为等。...27.如何用原生JavaScript实现jqueryready方法 $(document).ready()dom绘制完毕后就执行,而不必等到页面加载完毕。...image 创建一个div,宽高都为0,实现效果如下,发现border四个边都是一个形,要实现三形只需将其中几个边background设置为transparent,即可得到三

11.4K50

追求完美代码之——实现元素拖拽修改宽高和位移插件

点击时候,会多出边框,边框角落会有拖拽修改宽高控件,控件位置、大小和元素一模一样 点击某个角落拖拽控件,以该控件中心对称点为中心点,变更宽高。...新width = 旧width + 控件x坐标变化量(正可负),height也是 ?...也就是鼠标元素按下时候,每次move都移动元素,鼠标弹起时候,清除事件绑定 mousemove事件触发时候,计算本次位置和上次位置x、y坐标(即left、top)差值,并加上left、top位置...✅ 正确做法 给顶部节点(document)加上事件绑定,然后通过事件代理来实现拖拽元素准确定位: const ele = document.querySelector("div");...接着,我们需要把四个控件加上,拖拽一个控制宽高: 它们样式先来一个 .controller-corner { width: 10px; height

2.1K41

LaTeX多行公式_latex大括号左对齐

此外还支持部分简单化学方程,理工科朋友们从此无需再借助其它应用, XMind 中即可完成方程输入。今天和大家分享下在 XMind 中如何用 LaTeX 输入数学公式。 1....插入方程 「插入菜单」中找到方程,点击即可进入方程编辑界面。手动输入或直接将方程复制黏贴到输入面板。输入完成后点击方程预览即可成功进行方程插入。...插入方程无缝融入主题中,可调整和移动方程主题中位置,也可调整方程大小。 到底如何输入方程?其实不难,记住几个简单规则即可。 1....复杂公式输入 多行公式 当你公式不止一行,为了可读性增强减少阅读障碍,我们需要用到对齐和换行。 LaTeX 中,& 是对齐,\\ 是换行。...总儿言之,LaTeX 方程输入非常便捷,再复杂方程,只要你弄懂基本原理,都可以敲出来。除了方程外,LaTeX 论文排版也十分出色,建议科研党们一试。

2.4K20

分享 7 个有用 JavaScript 库,提升你开发效率

Split 如果你想创建一个调整大小分割布局,那么这是一个很好资源。它能够你轻松创建可调整大小面板和分割视图。...它包含了许多特点,比如零依赖、压缩后仅为2KB、没有额外开销或挂载在窗口事件监听器、使用CSS进行调整大小等等。...以下是一个简单代码入门案例,展示了如何使用Split库创建一个调整大小分割布局: <!...接下来,我们使用Split函数创建了一个分割实例,并指定了初始面板大小百分比和最小面板大小。 通过这段代码,你可以浏览器中看到一个调整大小分割布局,其中面板可以通过拖动边界来改变大小。...Pikaday 这是一个轻量级且定制日期选择器库。它提供了一个用户友好界面,用于选择日期,并支持多种日期格式和本地化。它在GitHub获得了超过7.5k星标。

30830

如何高效写长文?

无须管那些框定头脑纲要,思维飞跃浮动。 你偶然想到点子,也不必立即放到某个最后呈现固定位置。只需要不断堆砌积累就好。 你知道它是拼图,最终总会有合适位置。 ?...Gingko 有意思地方在于,你可以在这个二维平面上直接拖拽,后续下级节点都跟着一起走,这样可以最大限度降低结构调整成本。使你更愿意仔细端详逻辑架构,做出调整。 ? 这样,大部分材料都不会写废。...3.4 全键盘操作 前面我给你演示了用鼠标拖拽,便可以卡片自由游动,拆分组合调整逻辑结构。 但是,手离开键盘这件事儿本身,有时候也比较人烦恼。...同样,不论是拖拽着一整棵树杈满屏乱跑,还是把节点与前后内容合并、拆分,全都可以用快捷键完成。 当你很快熟悉了按键组合后,文稿在你手里就像一个面团,想怎么捏就怎么捏,架构也会锤炼迭代得越发合理。...这意味着只要你记得住账号密码,打开任何一个浏览器就能用。这样一来,不管是图书馆,还是宿舍,你都可以随时用自己笔记本电脑,或者公共计算机来编辑和完善文稿。

88910

2019最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)

CSS Sprites为一些大型网站节约了带宽,提高了用户加载速度和用户体验,不需要加载更多图片 6. 如何用原生js给一个按钮绑定两个onclick事件?...拖拽会用到哪些事件 · dragstart:拖拽开始时在被拖拽元素触发此事件,监听器需要设置拖拽所需数据,从操作系统拖拽文件到浏览器时不触发此事件. · dragenter:拖拽鼠标进入元素时该元素触发...,用于给拖放元素设置视觉反馈,高亮 · dragover:拖拽时鼠标目标元素移动时触发.监听器通过阻止浏览器默认行为设置元素为拖放元素. · dragleave:拖拽时鼠标移出目标元素时目标元素触发...,最后将该div等块级元素分别左移和移,左移和大小就是该div等块级元素宽度和高度一半。...客户端编程语言中,javascript和 ActionScript,同源策略是一个很重要安全理念,它在保证数据安全性方面有着重要意义。

1.9K20
领券