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

D3.如果外包装宽度固定且滚动,则鼠标(This)坐标不正确

D3是一个用于数据可视化的JavaScript库,它可以帮助开发人员创建动态、交互式的数据图表和可视化效果。D3的全称是Data-Driven Documents,它的设计理念是将数据与DOM(文档对象模型)进行绑定,通过使用HTML、CSS和SVG等标准的Web技术,实现数据驱动的可视化。

在D3中,如果外包装宽度固定且滚动,鼠标坐标可能会出现不正确的情况。这是因为D3默认情况下使用的是页面坐标系,而不是相对于外包装容器的坐标系。当外包装容器发生滚动时,页面坐标系与容器坐标系之间的偏移会导致鼠标坐标计算不准确。

为了解决这个问题,可以使用D3提供的事件处理函数来获取相对于外包装容器的正确鼠标坐标。例如,可以使用d3.event.pageXd3.event.pageY来获取鼠标相对于整个页面的坐标,然后通过减去外包装容器的偏移量,得到相对于容器的坐标。

另外,还可以通过设置D3的缩放和平移功能来实现正确的鼠标坐标。通过使用d3.zoom()函数创建一个缩放行为,并将其应用于外包装容器,然后在事件处理函数中使用d3.event.transform来获取缩放和平移的变换信息,从而计算出正确的鼠标坐标。

总结起来,解决外包装宽度固定且滚动导致鼠标坐标不正确的问题,可以采取以下步骤:

  1. 使用D3的事件处理函数获取鼠标相对于整个页面的坐标。
  2. 减去外包装容器的偏移量,得到相对于容器的坐标。
  3. 或者使用D3的缩放和平移功能来实现正确的鼠标坐标。

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

  • 腾讯云D3产品:腾讯云提供的数据可视化服务,支持使用D3库进行数据可视化开发。
  • 腾讯云云计算产品:腾讯云提供的各类云计算产品,包括云服务器、云数据库、云存储等,可以满足不同场景下的需求。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DOM 和 BOM 中的各种宽高属性

image.png 例如,上图中的红框是固定的屏幕可视区,而网页视为可以上下拖动的文档,当滚动条下拉的时候,实际上是文档向上拖动,而这个拖动的距离就是 element.scrollTop 2.4 返回对象系列...如下图: image.png 可以看出,假如元素在页面滚动条的拖动下向上移动,元素的 top 会是负值。...ev.clientX/ev.clientY: 事件发生时,鼠标点击位置相对于浏览器可视区(不包括滚动条和工具栏)左上角(该点为原点)的坐标。...ev.screenX/ev.screenY: 事件发生时,鼠标点击位置相对于设备屏幕左上角(该点为原点)的坐标 ev.offsetX/ev.offsetY: 事件发生时,鼠标点击位置相对于事件源左上角(...ev.pageX/ev.pageY 事件发生时,鼠标点击位置相对于页面左上角(该点为原点)的坐标

1.9K10

「JavaScript 」动画基础 - 01

得到 鼠标在盒子内的坐标 如果想要移动一下鼠标,就要获取最新的坐标,使用鼠标移动 var box = document.querySelector('.box'); box.addEventListener...如果小于零,就把坐标设置为0 如果大于遮挡层最大的移动距离,就把坐标设置为最大的移动距离 遮挡层的最大移动距离:小图片盒子宽度 减去 遮挡层盒子宽度 window.addEventListener('load...页面被卷去的头部 如果浏览器的高(或宽)度不足以显示整个页面时,会自动出现滚动条。当滚动条向下滚动时,页面上面被隐藏掉的高度,我们就称为页面被卷去的头部。滚动条在滚动时会触发onscroll事件。...1.3.3.案例:仿淘宝固定右侧侧边栏 原先侧边栏是绝对定位 当页面滚动到一定位置,侧边栏改为固定定位 页面继续滚动,会让 返回顶部显示出来 1.3.4.案例分析: 需要用到页面滚动事件 scroll...则是 window.pageYOffset 其实这个值 可以通过盒子的 offsetTop可以得到,如果大于等于这个值,就可以让盒子固定定位了 //1.

50310
  • 前端成神之路-WebAPIs05

    得到 鼠标在盒子内的坐标 如果想要移动一下鼠标,就要获取最新的坐标,使用鼠标移动 var box = document.querySelector('.box'); box.addEventListener...如果小于零,就把坐标设置为0 如果大于遮挡层最大的移动距离,就把坐标设置为最大的移动距离 遮挡层的最大移动距离:小图片盒子宽度 减去 遮挡层盒子宽度 window.addEventListener('load...页面被卷去的头部 如果浏览器的高(或宽)度不足以显示整个页面时,会自动出现滚动条。当滚动条向下滚动时,页面上面被隐藏掉的高度,我们就称为页面被卷去的头部。滚动条在滚动时会触发 onscroll事件。...1.3.3.案例:仿淘宝固定右侧侧边栏 原先侧边栏是绝对定位 当页面滚动到一定位置,侧边栏改为固定定位 页面继续滚动,会让 返回顶部显示出来 1.3.4.案例分析: 需要用到页面滚动事件 scroll...则是 window.pageYOffset 其实这个值 可以通过盒子的 offsetTop可以得到,如果大于等于这个值,就可以让盒子固定定位了 //1.

    1.5K10

    scrollwidth和clientwidth_vue监听页面滚动

    三、如果没有给 HTML 元素指定过 top 样式, style.top 返回的是空字符串。...说明 以上基于 DTD HTML 4.01 Transitional,如果是 DTD XHTML 1.0 Transitional 意义又会不同,在 XHTML 中这三个值都是同一个值,都表示内容的实际高度...,clientTop: 这两个返回的是元素周围边框的厚度,如果不指定一个边框或者不定位改元素,他的值就是0. 3.scrollLeft,scrollTop: 如果元素是可以滚动的,可以通过这俩个属性得到元素在水平和垂直方向上滚动了多远...clientWidth 是对象可见的宽度,不包滚动条等边线,会随窗口的显示大小改变。 offsetWidth 是对象的可见宽度,包滚动条等边线,会随窗口的显示大小改变。...等于border+padding+width clientwidth:是元素的可见宽度。等于padding+width scrollwidth:是元素的宽度包括滚动部分。

    1.8K10

    【实例】调整区域大小&动态隐藏区域

    MouseEvent属性 说明 实例值 clientX、clientY 设置或获取鼠标指针位置相对于窗口客户区域的 X、Y 坐标(不包括滚动条) 106+3+300-5+2=406 offsetX、offsetY...设置或获取鼠标指针位置相对于触发事件的对象的X、Y坐标 2 pageX、pageY (只读)相对于整个文档的X、Y坐标以像素为单位的只读属性(包括滚动条) 74+106+3+300-5+2=480 screenX...、screenY 设置或获取获取鼠标指针位置相对于用户屏幕的X、Y坐标 1440+clientX=1846 x、y clientX、clientY的别名 与clientX相等 Element Element...、宽度 0 scrollHeight、scrollWidth (只读,整数)包括由于溢出导致的视图中不可见内容 300 scrollLeft、scrollTop 读取或设置元素滚动条到元素左边、顶部的距离...0(内部无滚动条) - clientHeight:可以通过 CSS height + CSS padding - 水平滚动条高度 (如果存在)来计算 - scrollHeight:返回整数,如果需要小数使用

    1.7K21

    再谈BOM和DOM(6):dom对象及event对象位值计算—如offsetXTop,clentX

    event对象位置信息获取 先总结下区别: event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。...event.offsetX、event.offsetY 鼠标相对于事件源元素(srcElement)的X,Y坐标,只有IE事件有这2个属性,标准事件没有对应的属性。...event.screenX、event.screenY 鼠标相对于用户显示器屏幕左上角的X,Y坐标。...如果这个容器元素未进行CSS定位, offsetParent属性的取值为根元素的引用。...    obj.offsetTop  //元素相对于父元素的top 如果弹框的宽度(offsetWidth)+距离左边的距离(offsetLeft)大于父元素的宽度判断为超出外部元素范围,需要动态改变弹框距离边框的位置

    1.5K20

    一文搞懂 JavaScript 中 DOM 相关的距离

    1、总结一下 1.1、client系列 clientWidth = width(可见区域)+ padding - 滚动宽度如果有) clientHeight = height(可见区域)+...padding - 滚动宽度如果有) clientLeft:相当于元素左border(border-left)的宽度 clientTop:相当于元素上border(border-top)的宽度...元素position:fixed,其offsetParent的值为null,此时相对视口定位。 元素非fixed定位,其父元素无位设置定位,offsetParent均为。...简单来说就是元素相对父元素左边的距离) offsetTop:元素上外边框距离父元素上内边框的距离(简单来说就是元素相对父元素上边的距离) 下面有张图对上面的内容进行了总结,并给出了不同浏览器下的兼容性: 三、鼠标事件相关的坐标距离...鼠标事件中有很多描述鼠标事件发生时的坐标信息的,给大家介个图看看: 这么多的坐标位置到底有什么区别呢?

    1.4K31

    HTML DOM的各种宽高、偏移位置的属性总结

    如果没有滚动条,即为元素设定的高度和宽度如果出现滚动条,滚动条会遮盖元素的宽高,那么该属性就是其本来宽高减去滚动条的宽高,包含内边距,但不包括水平滚动条、边框和外边距。...Event事件对象 1.clientX和clientY 这对属性是当事件发生时,鼠标点击位置相对于浏览器(可视区)的坐标,即浏览器左上角坐标的(0,0),该属性以浏览器左上角坐标为原点,计算鼠标点击位置距离其左上角的位置...2.screenX和screenY 事件发生时鼠标相对于屏幕的坐标,以设备屏幕的左上角为原点,事件发生时鼠标点击的地方即为该点的screenX和screenY值,如下所示:可以看到尽管浏览器窗口被缩到很小...3.offsetX和offsetY 这一对属性是指当事件发生时,鼠标点击位置相对于该事件源的位置,即点击该div,以该div左上角为原点来计算鼠标点击位置的坐标,如下所示: 可以看到,点击该div的靠近左上角处...如果 length 为 0 或负数,将返回一个空字符串。 如果没有指定 length,子字符串将延续到 stringObject 的最后。

    1.6K30

    Threejs入门之二十二:Threejs中的屏幕坐标转标准设备坐标

    标准设备坐标系的坐标值不是绝对值,是相对值,其范围是[-1,1]区间,也就是说canvas画布上任何一个位置的坐标如果用标准设备坐标系来表示,那么坐标的值都是在-1到1之间的。...pageY:鼠标点击位置相对于网页左上角的垂直平偏移量,也就是 clientY + 垂直滚动滚动的距离。 坐标系上某一个元素的pageX/pageY 不会 随着滚动滚动而改变。...page坐标的最大范围是 (document.body.clientWidth + 垂直滚动宽度, document.body.clientHeight + 水平滚动条高度)。...clientX:鼠标点击位置相对于浏览器可视区域的水平偏移量(不会计算水平滚动的距离)。 clientY:鼠标点击位置相对于浏览器可视区域的垂直偏移量(不会计算垂直滚动的距离)。...client坐标的最大范围是 (window.innerWidth - 垂直滚动宽度, window.innerHeight - 水平滚动条高度)。

    2.3K10

    css基础第二弹

    伪类选择器 属性 a:link 没有点击过的(访问过的)链接 a:visited 点击过的(访问过的)链接 ​a:hover 鼠标经过的那个链接 ​a:active 鼠标正在按下还没有弹起鼠标的那个链接...,文字会偏上 如果行高大于盒子高度,文字偏下 四、css的背景 通过 CSS 背景属性,可以给页面元素添加背景样式。...可以使用 方位名词 或者 精确单位 其他说明: 1、参数是方位名词 如果指定的两个值都是方位名词,两个值前后顺序无关,比如 left top 和 top left 效果一致 如果只指定了一个方位名词...,另一个值省略,第二个值默认居中对齐 2、参数是精确单位 如果参数值是精确坐标,那么第一个肯定是 x 坐标,第二个一定是 y 坐标如果只指定一个数值,那该数值一定是 x 坐标,另一个默认垂直居中...3、参数是混合单位 ​如果指定的两个值是精确单位和方位名词混合使用,第一个值是 x 坐标,第二个值是 y 坐标 5、背景图片固定 样式名称: background-attachment 属性设置背景图像是否固定或者随着页面的其余部分滚动

    1.1K10

    css基础第二弹

    伪类选择器 属性 a:link 没有点击过的(访问过的)链接 a:visited 点击过的(访问过的)链接 a:hover 鼠标经过的那个链接 a:active 鼠标正在按下还没有弹起鼠标的那个链接...,文字会偏上 如果行高大于盒子高度,文字偏下 四、css的背景 通过 CSS 背景属性,可以给页面元素添加背景样式。...可以使用 方位名词 或者 精确单位 其他说明: 1、参数是方位名词 如果指定的两个值都是方位名词,两个值前后顺序无关,比如 left top 和 top left 效果一致 如果只指定了一个方位名词,...另一个值省略,第二个值默认居中对齐 2、参数是精确单位 如果参数值是精确坐标,那么第一个肯定是 x 坐标,第二个一定是 y 坐标 如果只指定一个数值,那该数值一定是 x 坐标,另一个默认垂直居中 3、...参数是混合单位 如果指定的两个值是精确单位和方位名词混合使用,第一个值是 x 坐标,第二个值是 y 坐标 5、背景图片固定 样式名称: background-attachment属性设置背景图像是否固定或者随着页面的其余部分滚动

    6610

    JavaScript--DOM总结

    clientX 返回当事件被触发时,鼠标指针的水平坐标。 clientY 返回当事件被触发时,鼠标指针的垂直坐标。 ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。...screenX 返回当某个事件被触发时,鼠标指针的水平坐标。 screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。 shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。...offsetX,offsetY 发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标。 returnValue 如果设置了该属性,它的值比事件句柄的返回值优先级高。...toElement 对于 mouseover 和 mouseout 事件,该属性引用移入鼠标的元素。 x,y 事件发生的位置的 x 坐标和 y 坐标,它们相对于用CSS动态定位的最内层包容元素。...onchange 当改变选择时调用的事件句柄 style对象 Background 属性 属性 描述 background 在一行中设置所有的背景属性 backgroundAttachment 设置背景图像是否固定或随页面滚动

    7410

    让所有GUI都自动化-PyAutoGUI(GUI自动化工具)

    onScreen():要检查 XY 坐标是否在屏幕上,需要用此函数来检验,如果在屏幕上返回 True,否则返回 False。 1、获取当前鼠标坐标 #!...如果屏幕像素是 1920*1080,那么右下角的坐标是 (1919, 1079)。 moveTo():函数会把鼠标光标移动到指定的 XY 轴坐标处。...如果传入 None 值,表示使用当前光标的对象轴坐标值。 moveRel():如果你想让光标以当前位置为原点,进行相对移动,就用此函数。...scroll():函数控制鼠标滚轮的滚动,amount_to_scroll 参数表示滚动的格数。正数页面向上滚动,负数向下滚动。 1、鼠标移动 #!...你可以把截取区域的左上角 XY 坐标值和宽度、高度传入截取。

    4.8K20

    第52天:offset家族、scroll家族和client家族的区别

    offsetParent:返回该对象的带有定位的父级,如果当前元素的父级元素没有 进行CSS定位,offsetParent为body.如果当前元素的父级元素中有定位, 取最近的父级元素 3、offsetLeft...:window.scrollTo 把内容滚动到指定的坐标 scrollTo(xpos,ypos) xpos 必需。...要在窗口文档显示区左上角显示的文档的 x 坐标。 ypos 必需。...要在窗口文档显示区左上角显示的文档的 y 坐标 三、client家族 1、 clientWidth:获取网页可视区域宽度 clientHeight:获取网页可视区域的高度 如果是盒子调用,指的是盒子本身...如果是body/html调用,指的是可视区域的大小 clientX:鼠标距离可视区域左侧距离(event调用) clientY:鼠标距离可视区域上侧距离(event调用) clientTop/clientLeft

    77220

    JavaScript与jQuery获取元素的宽、高和位置

    可视宽高 clientHeight :元素的可视高度(包括内边距,不包括边框、外边距或滚动条) clientWidth :元素的可视宽度(包括内边距,不包括边框、外边距或滚动条) 自身宽高 offsetHeight...) scrollWidth :元素的整个宽度(包括带滚动条的隐蔽的地方) 鼠标滚动距离 scrollLeft :是该元素的显示(可见)的内容上边与该元素实际的内容的距离(滚动条滚去的宽度) scrollTop...鼠标相对于页面的位置 event.pageX :鼠标相对于页面左边缘的距离。 event.pageY :鼠标相对于页面上边缘的距离。...元素的位置偏移量 offset() :返回包含 top 和 left 两个属性的对象,相对于 document 文档的坐标。...若无,相对于document。只对可见元素有效,注意ele{visibility:hidden}也属于可见元素。

    3K00

    6-css样式

    ,背景图片小,背景图片会平铺 铺满整个容器 背景图片位置background-position 背景图片定位的值是两个单位,分别代表坐标x,y轴 背景图片定位的值可以是应为left,right,top,...background-attachment background-attachment:fixed 背景图像是否固定或者随着页面的其余部分滚动 background-attachment的值可以是scroll...hidden visible元素可见 hidden元素不可见 collapse当在表格元素中使用时,此值可删除一行或一列,不会影响表格的布局 溢出隐藏overflow 设置当对象的内容超过其指定高度及宽度时如何显示内容...auto如果内容被修剪,浏览器会显示滚动条以便查看其余的内容。...如果不存在这样的包含块,相对于body元素,即相对于浏览器窗口 position:absolute div{ width: 200px; height: 200px; border

    1.9K20

    CSS第五天-定位

    根据自身原来的位置,进行定位 没有脱标,在页面还占有位置 天生就是给绝对定位当爹用 ---- 绝对定位:absolute 根据最近带有定位(非静态)的祖先元素来定位 子绝父相 脱离标准流,在页面不占有位置 绝对定位,固定定位...,浮动,可以直接设置宽度和高度,默认宽度是内容宽度 ---- 固定定位:fixed 永远根据浏览器可视区域定位,不会随着滚动条的滚动滚动 可以直接加宽高,默认宽度是内容宽度 脱离标准流,在页面不占有位置...解决分辨率问题有两种方法… ---- 定位层级:z-index 只有定位有这属性,绝对定位、固定定位、相对定位 默认值:auto,数字越大,层级越高 可以设置正值或负值,没单位 ---- 过渡: transition...默认值 overflow: visible 溢出部分溢出 overflow: hidden 无论是否溢出,都显示滚动条overflow: scroll 根据是否溢出,自动显示或隐藏滚动条 overflow...(从上、右、下、左) ---- 垂直对齐方式:vertical-align baseline 默认 top 顶部对齐 middle 中部对齐 bottom 底部对齐 ---- 精灵图: 测量图片左上角坐标

    2.7K40

    使用 UICollectionView 实现分页滑动效果

    在上篇博客中,给大家演示了如何利用 UICollectionView 这个强大的控件去实现一个卡片轮播的效果,后来有网友联系我说:"他遇到一个问题,当他滚动的 item 宽度与屏幕宽度一致时,滚动效果是正常的...,但当把 item 宽度的值设置成小于屏幕宽度的时候,滚动就会出现遮挡的 bug, 这该如何解决呢!"...03.每次滚动停止都会调用上述的函数 func targetContentOffset(...), 在这个函数中有一个参数 proposedContentOffset 记录了滚动的目标位移坐标,通过这个坐标和记录的上次滚动坐标可以判断出是向左滚动还是向右滚动...4.如果坐标的水平方向相减的绝对值大于某个固定值(譬如说 item 宽度的 8 分之一),则可以判断发生了分页,然后通过 proposedContentOffset 位移坐标和 item 的宽度大小来计算出当前滚动的页码...;如果小于那个固定值,则不发生分页5.最后记录最新的偏移坐标,然后返回 UICollectionView 停止滚动时的偏移量 Talk is cheap, show me the code, 代码实现如下

    3K20

    CSS入门指南-4:页面布局

    固定宽度布局的大小不会随用户调整浏览器窗口大小而变化,一般是900到1100像素宽。...(这是块级元素的默认行为) 三栏-固定宽度布局 我们先从一个简单的居中的单栏布局开始吧。...用负外边距实现 实现三栏布局让中栏内容区流动(不固定)的核心问题是处理右栏的定位,并在中栏内容区大小改变时控制右栏与布局的关系。...如果我们上边的例子中 nav 用百分比宽度做布局,当窗口宽度很窄时 nav 的内容会以一种不太友好的方式被包裹起来。...你需要设置每一列的宽度 如果HTML源代码中元素之间有空格,那么列与列之间会产生空隙 特别是第三条,如果我们不做任何修改,两个 block 之间会存在空格,像这样: ?

    2.2K10
    领券