• png透明部分点击


     看效果:点击空白区域红色1、点击实体区域红色2。分别得到颜色数据(包括透明度数据),控制台蓝色1、2。根据颜色数据即可解决png透明部分的点击问题。

    让图片不能点击,分两种

    1. 整张图片不能点击。这个很好解决,直接用css样式进行控制即可。在目标图片上添加样式:

    .targetPic{
        pointer-events: none;
    }
    

    2. 图片透明部分不可点击,实体部分可点击

    思路:用canvas画一个同等大小、同一位置的图片。用canvas固有方法判断点击位置是否透明。

    // jQuery自己引入, 也可以用js语法书写。1.png为图片资源,自己随便找一个。此处只是抛砖引玉
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>png图片透明区域点击解决方案</title>
            <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
            <style type="text/css">
                * {
                    padding: 0;
                    margin: 0;
                    box-sizing: border-box;
                }
            </style>
        </head>
        <body>
    
            <div id="canvasBox" style="position: relative;border: 1px solid red;">
                <img id="imgPic" src="images/1.png" style="opacity: 0;">
                <canvas id="myCanvas" style="position: absolute;top: 0;left: 0;">
                    您的浏览器不支持 HTML5 canvas 标签。
                </canvas>
            </div>
    
            <script>
                // 原始图片的宽高
                var imgW = $("#imgPic").width(); //
                var imgH = $("#imgPic").height(); //
                console.log("图片尺寸imgW,imgH", imgW, imgH);
    
    
                // 调整canvas画布大小 - 让canvas与原图大小一致
                document.getElementById('myCanvas').width = imgW;
                document.getElementById('myCanvas').height = imgH;
    
                // 注:不能使用以下更改css的写法,否则图片会被拉扯变形
                // $('#myCanvas').width(imgW);
                // $('#myCanvas').height(imgH);
    
                // canvas画图
                var c = document.getElementById("myCanvas");
                var ctx = c.getContext("2d");
                var img = document.getElementById("imgPic");
                ctx.drawImage(img, 0, 0, imgW, imgH);
    
    
                // 点击事件
                $("#canvasBox").click(function(e) {
                    var x = e.offsetX;
                    var y = e.offsetY;
                    console.log("点击元素相对偏移量x,y", x, y)
              
              // canvas取色
    var imgdata = ctx.getImageData(x, y, 1, 1); console.log("点击位置的全部颜色数据[r,g,b,a]", imgdata.data); console.log("点击位置的透明度颜色数据(0~255,0代表完全透明,255代表完全不透明) value:", imgdata.data[3]); }) </script> </body> </html>
  • 相关阅读:
    IOS 学习 开发 自定义 UINavigationController 导航
    -canOpenURL: failed for URL: ""
    一种简单的直观的高效的权限设计
    查询最近24小时、昨天、最近7天、上周、最近30天、上月的数据记录
    MS SQLSERVER中如何快速获取表的记录总数
    MVC MVVM和传统三层的理解
    C# 后台模拟前台post发送json数据
    C# Post发送数据返回页面结果
    CSS同时使用背景图片和背景颜色
    C# 根据日期计算星期几
  • 原文地址:https://www.cnblogs.com/blogNGNL/p/15944836.html
Copyright © 2020-2023  润新知