美文网首页
vue判断两个元素是否重叠

vue判断两个元素是否重叠

作者: coder丶L | 来源:发表于2020-08-04 17:50 被阅读0次

我做的是通过接口返回的列表数据渲染元素,元素可以调整位置和大小,所以遍历中的item包含元素的positionX,positionY,width,height等信息,也可通过获取元素的offsetLeft、offsetTop、width、height等方式参考下面的几种重叠的情况进行判断:

watch: {
    pageData: {
      handler(nVal, oVal) {
        //设置元素重叠默认标识
        nVal.articles.forEach((item1, index1) => {
          item1.overlap = false;
        });
        nVal.articles.forEach((item1, index1) => {
          nVal.articles.forEach((item2, index2) => {
            // 1左上在其他元素内
            let leftTopOver =
              item1.positionX > item2.positionX &&
              item1.positionX < item2.positionX + item2.width &&
              item1.positionY > item2.positionY &&
              item1.positionY < item2.positionY + item2.height;
            // 2右下在其他元素内
            let rightBottomOver =
              item1.positionX + item1.width > item2.positionX &&
              item1.positionX + item1.width < item2.positionX + item2.width &&
              item1.positionY + item1.height > item2.positionY &&
              item1.positionY + item1.height < item2.positionY + item2.height;
            // 3右上在其他元素内
            let rightTopOver =
              item1.positionX + item1.width > item2.positionX &&
              item1.positionX + item1.width < item2.positionX + item2.width &&
              item1.positionY > item2.positionY &&
              item1.positionY < item2.positionY + item2.height;
            // 4左下在其他元素内
            let leftBottomOver =
              item1.positionX > item2.positionX &&
              item1.positionX < item2.positionX + item2.width &&
              item1.positionY + item1.height > item2.positionY &&
              item1.positionY + item1.height < item2.positionY + item2.height;
            // 5十字交叉重叠
            let centerCenterOver =
              item1.positionX < item2.positionX &&
              item1.positionX + item1.width > item2.positionX + item2.width &&
              item1.positionY > item2.positionY &&
              item1.positionY + item1.height < item2.positionY + item2.height;
            // 6覆盖重叠
            let containOver =
              item1.positionX > item2.positionX &&
              item1.positionX + item1.width < item2.positionX + item2.width &&
              item1.positionY > item2.positionY &&
              item1.positionY + item1.height < item2.positionY + item2.height;
            if (
              leftTopOver ||
              rightBottomOver ||
              rightTopOver ||
              leftBottomOver ||
              centerCenterOver ||
              containOver
            ) {
              //设置元素重叠标识
              item1.overlap = true;
              item2.overlap = true;
            }
          });
        });
      },
      deep: true
    }
  },

相关文章

  • vue判断两个元素是否重叠

    我做的是通过接口返回的列表数据渲染元素,元素可以调整位置和大小,所以遍历中的item包含元素的positionX,...

  • 哈希表

    哈希表确定元素是否相同 1. 判断的是两个元素的哈希值是否相同 如果相同,再判断两个对象的内容是否相同。 2. 判...

  • 并查集(union-find sets)

    概述 并查集作为一种数据结构可以方便地合并若干个不重叠的集合,快捷地查询元素所属集合、判断两个元素是否属于同一个集...

  • 访问和操作数组-查找

    判断是否包含指定元素 contains(_:) 判断数组是否包含给定元素 contains(where:) 判断数...

  • Swift 3 不常用内置函数介绍

    1 .elementsEqual(other: Sequence)判断两个序列/数组中的元素是否完全相等,元素的顺...

  • LeetCode之Matrix Diagonal Sum(Kot

    问题: 方法:先遍历主轴,再遍历次轴,然后判断是否有重叠的位置,然后删除重叠的位置,判断条件是列数是否为奇数。 有...

  • 10.2常用操作元素方法3

    判断元素是否激活:isEnabled() 测试用例: 代码实现: 判断元素是否展示:isDisplayed() 之...

  • iOS判断两个控件是否有重叠

    一、父控件相同的两个控件的重叠判断 图中,红色的View与蓝色的View拥有相同的父控件,都是控制器的View,即...

  • 判断时间是否有重叠

    重叠一共有4种情况,设A为待比较时段 B为基准时段 ==的情况根据需要设置 https://www.luyuqia...

  • 判断两个Frame是否有一半的重叠

    //判断 是否有一半的frame重叠 -(BOOL)isHaveHalfFrameOverlapWithFirst...

网友评论

      本文标题:vue判断两个元素是否重叠

      本文链接:https://www.haomeiwen.com/subject/qhwwrktx.html