用CSS实现在两个拖动的DIV之间画一条线

当我们需要在web页面中展示关系图谱或交互式地连接两个元素时,我们经常需要在不同元素之间绘制一条线。本文将介绍如何使用CSS来实现这样的效果,其中涉及到用JavaScript和CSS设置元素位置和尺寸、尺寸单位、CSS伪元素等知识点。

HTML结构

首先,我们需要一个包含两个可拖动的DIV的HTML结构,这里我们把它们分别命名为“div1”和“div2”。它们可以是任意内容,这里为了方便演示给它们添加了一些文字和颜色。

---- ----------------- ----------------------------
---- ----------------- ----------------------------

CSS布局

接下来,我们需要使用CSS来设置这两个DIV的位置和尺寸,并使它们可拖动。这里我们使用了flex布局和绝对定位来实现这个效果。

---- -
  -------- -----
  ---------------- -------
  ------------ -------
  ------- ------
-

---------- -
  --------- ---------
  ------ ------
  ------- ------
  ----------------- -----
  -------------- -----
  ----------- -------
  ------- -----
-

----- -
  ---- ----
  ----- ----
  ---------- --------------- ------
-

----- -
  ---- ----
  ----- ----
  ---------- --------------- ------
-

这里我们把两个DIV相对于页面居中,并设置它们的高度、宽度、背景颜色和圆角等样式。然后,我们使用绝对定位将它们放在想要的位置上,并使它们可拖动。

用CSS画线

现在,我们需要在这两个DIV之间画一条线。使用CSS实现这个效果的方法是,创建一个伪元素,将其定位在两个DIV的中心,然后使用CSS属性transform来旋转它以及heightborder-bottom属性来设置线的长度和宽度。

------------------ -
  -------- ---
  --------- ---------
  ---- ----
  ----- --
  ------ ----
  ------- ----
  ----------------- -----
  ----------------- --- -----
  ---------- ---------------
-
----------------- -
  -------- ---
  --------- ---------
  ---- ----
  ------ --
  ------ ----
  ------- ----
  ----------------- -----
  ----------------- --- ------
  ---------- --------------
-

这里我们创建了两个伪元素::before::after,并分别将它们定位在两个DIV的中心。我们使用transform-origin属性来设置旋转的基准点,并使用transform属性将它们旋转到正确的角度。最后使用heightborder-bottom属性分别设置线的长度和宽度。

JavaScript实现拖动

现在,我们已经实现了用CSS画线的效果,但是我们还需要实现让这两个DIV可拖动的功能。可以使用JavaScript和CSS的结合,在鼠标移动时改变元素的位置。

--- ---------- - ------
--- ---------- - -----
--- ------- - --
--- ------- - --

-------------------------------------- -------- ------- -
  -- ---------------------------------------------- -
    ---------- - -----
    ---------- - -------------
    ------- - ------------- - ----------------------
    ------- - ------------- - ---------------------
  -
---

-------------------------------------- -------- -

----------------------------------------------------------- ----------
---------------------------------------------------------------------------------------
  

猜你喜欢

  • 如何使用 IIFE(立即调用函数表达式)提高前端开发效率

    IIFE,全称为 Immediately Invoked Function Expression,是一种 JavaScript 函数的写法,在前端开发中经常会用到。

    7 年前
  • jQuery的位置链接

    在前端开发中,经常需要根据元素的位置来进行一些操作。而jQuery提供了一系列的方法来获取和修改元素的位置信息,本文将详细介绍这些方法。 获取元素位置信息 offset() offset() 方法返回...

    7 年前
  • 在 NG Init中声明多个值

    在 Angular 中,我们通常会使用 ngOnInit() 方法来初始化组件的属性。但是有时候,我们需要同时初始化多个属性,并且这些属性之间可能存在依赖关系。这时候,我们可以使用 ngOnInit(...

    7 年前
  • 如何使用HTML编程为下降选择添加事件监听器

    当用户与网页上的元素进行交互时,我们可以通过JavaScript在HTML页面中添加事件监听器来捕获这些交互事件。例如,如果用户将鼠标悬停在一个元素上,我们可以使用mouseover事件来触发一些动作...

    7 年前
  • 用空格键访问JavaScript对象

    在 JavaScript 中,访问对象的属性是一个常见的操作。通常情况下,我们使用点符号或方括号表示法来访问这些属性。但是,在某些情况下,我们可能希望更简单和快捷的方式来访问对象的属性。

    7 年前
  • 将二进制数据在 Node.js 和浏览器中处理的几种方式

    在前端开发中,我们经常需要对二进制数据进行操作,比如图片上传、文件下载、音视频播放等。Node.js和浏览器提供了多种操作二进制数据的方式,本文将介绍其中的几种常见方式。

    7 年前
  • 这几年记在有道云笔记上的前端知识

    概述 作为前端开发人员,我们需要不断学习和掌握新的技术。在这篇文章中,我想分享一些我在过去几年中学到的前端知识。这些知识涵盖了各种主题,包括HTML、CSS、JavaScript、框架等等。

    7 年前
  • 在JavaScript中,什么是优势?!function() { }()(){ }在函数()()?

    在JavaScript中,function() {}()和()(){}()都是函数的调用方式,但它们有什么不同呢?本文将深入探讨这两种调用方式的区别以及它们的优势。

    7 年前
  • ESRI:无法解析的源图

    ESRI 是一个领先的 GIS(地理信息系统)技术提供商,它提供了一系列的开发工具和软件产品来支持地理数据的处理和可视化。其中,ArcGIS API for JavaScript 是一个非常受欢迎的前...

    7 年前
  • 如何强制JS进行数学运算

    在 JavaScript 中,它一直是被称为一门“动态”语言。这意味着变量类型(字符串、数字等)可能会随着代码的执行而改变。这种灵活性在某些情况下非常有用,但也可能导致意外的行为,尤其是在涉及到数学运...

    7 年前
  • 为什么使用 jQuery on() 代替 ()

    背景 在前端开发中,经常需要基于用户的交互行为进行事件绑定和处理。jQuery 是一个流行的 JavaScript 库,它提供了一系列方便的方法来处理 DOM 操作和事件处理。

    7 年前
  • 为什么解析([ 1234 ] ]返回1234?

    在前端开发中,我们经常会遇到需要将字符串转换成数字的需求。通常情况下,我们可以使用parseInt、parseFloat等函数来实现。但是,有些情况下,这些函数的行为可能并不如我们所期望。

    7 年前
  • 如何在JavaScript中创建查询参数?

    在Web开发中,我们常常需要向服务器发送HTTP请求并附带一些参数。其中,查询参数是最常用的一种参数传递方式。本文将介绍如何在JavaScript中创建查询参数。 什么是查询参数? 查询参数(quer...

    7 年前
  • JavaScript的继承

    JavaScript 是一门基于原型的语言,而不是类。在 JavaScript 中,对象可以通过关联其他对象来实现继承。 原型链 当一个对象被用作另一个对象的原型时,这个对象就成为了原型对象。

    7 年前
  • 如何仅删除JavaScript中的父元素而不是子元素?

    在编写前端代码时,经常需要添加、修改或删除一个 HTML 元素。当需要删除一个元素时,通常会使用 JavaScript 来实现。但有些情况下,我们只想删除该元素的父级元素,同时保留子元素。

    7 年前
  • 如何摆脱连接3贬低警报?

    在前端开发中,我们常常会遇到“连接3已降级”的警报,这意味着我们的网站或应用程序性能低下,需要优化。本文将介绍一些可以帮助您摆脱这种警报的技巧和最佳实践。 什么是连接3? 连接3是指浏览器与服务器之间...

    7 年前
  • 调整谷歌地图标记图标图像

    Google Maps API 是一个广泛使用的前端库,它提供了交互式地图和定位服务。在 Google 地图上放置自定义标记是很常见的需求,但默认的标记图标可能无法满足我们的需求。

    7 年前
  • Safari中无效日期的问题

    在前端开发中,处理日期是一项常见任务。然而,Safari浏览器会对某些日期进行错误解析,导致无法正确渲染日期选择器或日期时间选择器等组件。本文将介绍这个问题的原因以及解决方案。

    7 年前
  • 如何添加任何东西?

    在前端开发中,我们经常需要向网页中添加各种元素,包括文本、图片、视频等等。下面将介绍一些添加元素的基本方法。 添加文本 在 HTML 中,添加文本最简单的方式就是使用 <p> 标签,如下所...

    7 年前
  • 使用JavaScript动态地更改元素样式属性

    在前端开发中,我们经常需要根据不同的条件或用户操作来动态地更改网页上的元素样式。这时候,JavaScript就成为了一个非常有用的工具。 获取元素对象 在更改元素样式之前,我们首先需要获取到对应的元素...

    7 年前

相关推荐

    暂无文章