와 PNG 이미지에서 사용자 정의 클릭 모양의 버튼을 구현 I 투명성 다음과 같은 PNG
이미지가 있습니다HTML - 투명성
내가 HTML
& CSS
그 용도에 버튼을하고 싶습니다를 alpha
채널을 마스크로 사용하여 사용자가 분홍색 영역을 클릭하는 경우에만 작동합니다.
그럴 수 있습니까? 어떻게 구현 될 수 있습니까?
와 PNG 이미지에서 사용자 정의 클릭 모양의 버튼을 구현 I 투명성 다음과 같은 PNG
이미지가 있습니다HTML - 투명성
내가 HTML
& CSS
그 용도에 버튼을하고 싶습니다를 alpha
채널을 마스크로 사용하여 사용자가 분홍색 영역을 클릭하는 경우에만 작동합니다.
그럴 수 있습니까? 어떻게 구현 될 수 있습니까?
당신은 이미지 맵을 당신은 픽셀 값을 얻을 알파 채널 값 확인하기 위해 canvas
에 이미지를 그릴 필요 HTML map Tag
)하지만 나는 그것이 미래에 바뀔 수있는 경우 특별히 임의의 모양/이미지에 대한 올바른 해결책이라고 생각하지 않습니다. 이미지의 알파 채널을 고려하여 수동으로 정의해야합니다. – Danziger
체크 아웃 할 수 있습니다
const messageBox = document.getElementById('messageBox');
const imageButton = document.getElementById('imageButton');
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const width = imageButton.width;
const height = imageButton.height;
canvas.width = width;
canvas.height = height;
context.drawImage(imageButton, 0, 0, width, height);
imageButton.onclick = function(e) {
const alpha = context.getImageData(e.offsetX, e.offsetY, 1, 1).data[3];
switch (alpha) {
case 255:
messageBox.innerText = "Inside clicked";
break;
case 0:
messageBox.innerText = "Outside clicked";
// Here you could do e.preventDefault(); if this is a form submit event or something like that.
break;
default:
messageBox.innerText = "Border clicked.";
// Decide how to handle clicks in the border or change the switch for an if and define a range of valid and invalid values for the alpha channel.
break;
}
};
#imageButton {
box-shadow: inset 0 0 0 1px rgba(255, 0, 0, .5);
cursor: pointer;
width: 100px;
}
<img id="imageButton" src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7" />
<div id="messageBox"></div>
참고 Cross-Origin
문제 나 허용 된 것보다 큰 답변을 피하기 위해 이미지 대신 작은 데이터 URI를 사용하고 있습니다.
답장을 보내 주셔서 감사합니다. 자바 스크립트 코드 주석이 도움이됩니다! 프런트 엔드로 전환하는 프로그래밍 배경에서 왔습니다 # 원더풀! –
그게 사용자에게 어색한 짓을하는 한 가지 방법입니다 - 버튼의 특정 영역을 클릭하여 작동 시키려면 ... 사용자 편의성을 높이십시오! –
작은 게임을 실행하는 웹 앱이있는 양방향 웹 사이트의 경우 이미지는 극단적 인 예입니다! –
@Andreww 누구든지 문제를 해결 했습니까? 그렇다면 최상의 답을 수락 할 수 있습니까? (포인트 아래의 체크 표시를 클릭하십시오). 그러면 질문에 대한 다른 사용자가 답변을 빨리 찾을 수 있으며 15 명의 담당자에게 도움이됩니다. 저자 : (단순한 및 정적 사용 사례에 대해 작동 할 것입니다 : – Danziger