美文网首页
JS实现三角形对应不同事件

JS实现三角形对应不同事件

作者: e只咸鱼 | 来源:发表于2021-12-06 23:42 被阅读0次

大致效果 点击不同颜色三角形对应不同事件

triangle.png

1. 通过offsetX offsetY实现

HTML代码

<div class="box" @click="clickBox"></div>

css代码

.box {
    width: 0px;
    height: 0px;
    border-width: 100px;
    border-style: solid;
    border-color: blue blue pink pink;
  }

JS代码

clickBox(event) {
      let X = event.offsetX;
      let Y = event.offsetY;
      if (X > 0 && Y < 0) {
        //第一种情况
        console.log("蓝色 右上");
      } else if (X < 0 && Y > 0) {
       //第二种情况
        console.log("粉色 左下");
      } else if (X < 0 && Y < 0) {
       //第三种情况 里面分俩种情况
        if (X > Y) {
          console.log("蓝色 左上");
        } else {
          console.log("粉色 左下");
        }
      } else if (X > 0 && Y > 0) {
      //第四种情况 里面分俩种情况
        if (Y > X) {
          console.log("粉色 右下");
        } else {
          console.log("蓝色 右上");
        }
      }
    },

2.通过canvas里getImageData方法来获取点击的颜色来判断想要触发对应事件

HTML代码

<canvas id="boxDom" width="200" height="200" @click="clickBox"></canvas>

js 代码

methods: {
    init() {
      let bg = document.getElementById("boxDom");
      console.log(bg)
      let ctx = bg.getContext("2d");
      //绘制三角形
      ctx.beginPath();
      ctx.moveTo(0, 0); //从A(100,0)开始
      ctx.lineTo(0, 200); //从A(100,0)开始,画到B (0,173)结束
      ctx.lineTo(200, 200); //B(0,173)-C(200,173)

      let grd = ctx.createLinearGradient(0, 0, 200, 0); //使用渐变颜色填充,从(0,0)到(200,0) (左到右)
      grd.addColorStop(0, "pink"); //起始颜色
      ctx.fillStyle = grd; //以上面定义的渐变填充
      ctx.fill(); //闭合形状并且以填充方式绘制出来

      ctx.beginPath();
      ctx.moveTo(200, 0); //从A(100,0)开始
      ctx.lineTo(200, 200); //从A(100,0)开始,画到B (0,173)结束
      ctx.lineTo(0, 0); //B(0,173)-C(200,173)

      let grd2 = ctx.createLinearGradient(0, 0, 200, 0); //使用渐变颜色填充,从(0,0)到(200,0) (左到右)
      grd2.addColorStop(0, "blue"); //起始颜色
      ctx.fillStyle = grd2; //以上面定义的渐变填充
      ctx.fill(); //闭合形状并且以填充方式绘制出来
    },
    clickBox(e) {
      let bg = document.getElementById("boxDom");
      let ctx = bg.getContext("2d");
      let imageData = ctx.getImageData(e.offsetX, e.offsetY, 1, 1);
      let pixel = imageData.data;
      let r = pixel[0];
      let g = pixel[1];
      let b = pixel[2];
      let a = pixel[3] / 255;
      a = Math.round(a * 100) / 100;
      let rHex = r.toString(16);
      r < 16 && (rHex = "0" + rHex);
      let gHex = g.toString(16);
      g < 16 && (gHex = "0" + gHex);
      let bHex = b.toString(16);
      b < 16 && (bHex = "0" + bHex);
      let rgbaColor = "rgba(" + r + "," + g + "," + b + "," + a + ")";
      let rgbColor = "rgb(" + r + "," + g + "," + b + ")";
      let hexColor = "#" + rHex + gHex + bHex;
      console.log(rgbaColor, rgbColor, hexColor);
    },
}
mounted(){
    this.init();
  }

相关文章

  • JS实现三角形对应不同事件

    大致效果 点击不同颜色三角形对应不同事件 1. 通过offsetX offsetY实现 HTML代码 css代码 ...

  • Jquery总结

    Jquery能实现的JS都能实现,JS实现的Jquery未必能实现 事件 常用的基本事件 鼠标事件mouseent...

  • vue 事件处理

    v-on:eventName 绑定事件 事件修饰符 对应原生JS .prevent阻止默认事件-----.prev...

  • js键盘事件对应键码

    常用js键码 keyCode 8 = BackSpace BackSpacekeyCode 9 = Tab Tab...

  • dom事件代理

    实现一个js事件代理的模块,帮助用户快速实现事件代理。

  • js与jquery方法对比

    一.文档就绪 jquery实现 简写形式为: js实现 二、元素选择 三、点击事件 jquery实现 js实现 四...

  • 模型之相似三角形

    相似三角形指的是形状相同,大小不同的两个三角形。相似三角形的对应角相等,对应边成比例(其比值即为相似比)。若两个三...

  • OpenGL ES 实现马赛克滤镜

    马赛克滤镜 主要是实现不同马赛克样式的滤镜,主要有以下三种样式 正方形 六边形 三角形 不同马赛克样式,对应不同的...

  • JS自定义事件

    2018年2月28日 背景 业务开发中遇到JS消息没被成功接收的问题。顺带复习一下 JS 事件。 为实现不同模块间...

  • 探究Android触摸事件传递机制

    一、什么是触摸事件? 触摸事件在Android的API中对应的是MotionEvent类,其中不同的触摸事件对应于...

网友评论

      本文标题:JS实现三角形对应不同事件

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