场景题 - 画三角形并只点击三角形触发事件-实现

1、svg解法

使用 svgpolygon 绘制三角形,并在 polygon 上绑定事件。

<svg width="100" height="100">
   <!-- 定义三角形的三个顶点 -->
    <polygon id="polygon" points="50,0 100,100 0,100" fill="blue" />
</svg>
const polygon = document.getElementById('polygon');
// 为三角形添加点击事件处理程序
polygon.addEventListener('click', function () {
    alert('polygon clicked!');
});

2、canvas解法

使用 canvasapi 连线、填充,给canvas整体绑定事件,点击时进行坐标判断。

<canvas id="canvas"></canvas>
const canvas = document.getElementById('canvas')
const ctx = canvas.getContext('2d');
// 绘制三角形
function drawTriangle(ctx, x1, y1, x2, y2, x3, y3) {
    ctx.beginPath();
    ctx.moveTo(x1, y1);
    ctx.lineTo(x2, y2);
    ctx.lineTo(x3, y3);
    ctx.closePath();
    ctx.fill();
}
drawTriangle(ctx, 20, 0, 40, 40, 0, 40);
canvas.addEventListener('click', function (e) {
    var x = e.offsetX, y = e.offsetY; // 点击位置判断
    if (ctx.isPointInPath(x, y)) {
        alert('canvas clicked!');
    }
});

3、css3 clip-path解法

利用 css3 的新特性 clip-path 裁剪可视区域实现三角形,然后直接绑定事件。

<div id="cssDiv"></div>
<style type="text/css">
#cssDiv {
    width: 100px;
    height: 100px;
    background-color: blue;
    clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
</style>
<script>
const cssDiv = document.getElementById('cssDiv');
cssDiv.addEventListener('click', function () {
    alert('cssDiv clicked!');
});
</script>
上一篇:鸿蒙开发案例:记忆翻牌


下一篇:基于R语言遥感随机森林建模与空间预测