首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js判断元素在某个区域内是否可见(转)

    getBoundingClientRect介绍 getBoundingClientRect获取元素位置 getBoundingClientRect用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置...document.documentElement.scrollLeft; var Y =this.getBoundingClientRect().top+document.documentElement.scrollTop; getBoundingClientRect判断元素是否在可视区域...以前的办法是通过各种offset判断元素是否可见,网上很多教程,大家可以自己去查找。 ...getBoundingClientRect是获取可视区域相关位置信息的,使用这个属性来判断更加方便: function isElementInViewport (el) { var rect =...caniuse 参考网址:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect https://div.io

    7.6K20

    js判断是否是子元素

    文本俺将跟大家介绍,如何判断一个当前点击的元素,是否是指定元素的子元素。 解决思路: 俺给父元素指定了一个id,并使用这个循环检查当前元素是否属于它的子元素。...:当前元素是否是被筛选元素的子元素 jQuery.fn.isChildOf = function(b){ return (this.parents(b).length > 0); }; //判断:当前元素是否是被筛选元素的子元素或者本身...方法三: const isDescendant = (el, parentId) => { let isChild = false if (el.id === parentId) { //判断是否是其本身...' if (isDescendant(event.target, parentId)) { //处理是子元素的情况 } else { //处理不是子元素的情况 } }) 在while...循环中,俺使用赋值运算符=进行迭代,直到不再有父节点,在本例中为el.parentNode返回null时, while循环结束。

    10.8K00

    判断元素是否在视窗之内

    本文作者:IMWeb elvin 原文出处:IMWeb社区 未经同意,禁止转载 作为一名前端工程师我们经常需要判断目标元素是否在视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能...目前流行的方式是通过 Element.getBoundingClientRect() 拿到元素的相关位置信息后进行手动的判断,但是这种方法由于运行在 JavaScript的主进程上,所以当需要监听的元素较多时...那么仔细想一想,其实在浏览器渲染的时候,它就知道了元素是否在视窗之内,自身面积有多少在视窗之内。...下图是使用 Element.getBoundingClientRect() 进行计算实现的效果,可以看到有非常明显的卡顿,主要是因为需要对每一个元素都进行计算,判断它们是否在视窗之内。...如果一个元素在视窗之内的话,那么它一定满足下面四个条件: top 大于等于 0 left 大于登录 0 bottom 小于等于视窗高度 right 小于等于视窗宽度 考虑到不同浏览器的兼容性,可以写出来如下的函数用于判断元素是否在视窗之内

    2.1K20

    JS中鼠标拖拽div(2)(setCapture()方法和releaseCapture()方法)

    接着鼠标拖拽div(1)解决问题,当在拖拽事件所在的页面按下键盘的ctrl+A全选后,再去拖拽div,浏览器会默认去搜索网页中的内容,拖拽功能就会失效,(搜索网页内容是浏览器的默认行为,所以要想不发生这种情况...可以将setCapture()方法用到鼠标拖拽div的例子中,但是注意,在给mousedown事件中,调用的box的**setCapture()方法之后,会有一个问题,就是当鼠标松开之后,事件还会一直被捕获...,网页中的其他选项都无法点击,而且就算鼠标松开,div也还会跟着鼠标对应的位置移动,为了解决这个问题,就需要在鼠标松开的时候取消捕获,可以使用releaseCapture()**方法来取消先前调用的捕获方法...优化拖拽代码 在之前拖拽div的代码中,如果要拖拽多个内容,就需要重新为一个内容绑定事件,所有的操作都要重新写一遍,所以对之前的代码进行了优化: 定义函数,将拖拽的方法封装起来,方便调用,要拖拽哪个元素...box.setCapture(); // } obj.setCapture && obj.setCapture();//和上面的判断效果相同

    2.4K20
    领券