- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面复制了我的页面的简化版本。在下面的演示中,单击一个圆圈,应该打印出在 div 中单击的圆圈的名称。我有 2 个问题。 1)当我放大页面时(Chrome似乎会在加载页面时自动在我的页面上执行此操作,因此我目前必须缩小才能使可点击区域在使用Chrome浏览器时工作),逐像素点击检测没有更长的作品。我通过检查距圆中心的距离(以像素为单位)来检测是否在三个圆之一内发生单击。您可以尝试放大并查看单击圆圈是否会产生预期结果。
2)圆圈右侧的文字有时不显示,我必须手动刷新一次页面(首次加载后)才能看到文字出现在圆圈旁边。
定义点击的代码位于脚本部分的底部。我建议以整页方式查看下面的页面。
var total_vap_count = 12;
var total_sta_count = 3;
//ac
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(175,50,30,0,2*Math.PI);
ctx.fillStyle = "#004379";
ctx.font = "14px Lato";
if ("1" < 2){
ctx.fillText("1" + " AC", 211, 50);
} else {
ctx.fillText("2" + " ACs", 211, 50);
}
ctx.fill();
//sta
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(175,300,30,0,2*Math.PI);
ctx.fillStyle = "#004379";
ctx.font = "14px Lato";
if (total_sta_count < 2){
ctx.fillText("" + total_sta_count + " device", 211, 300);
} else {
ctx.fillText("" + total_sta_count + " devices", 211, 300);
}
ctx.fillText("connected", 211, 315);
ctx.fill();
//ssid
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(50,175,30,0,2*Math.PI);
ctx.fillStyle = "#004379";
ctx.font = "14px Lato";
if (total_vap_count < 2){
ctx.fillText("" + total_vap_count + " SSID", 86, 175);
} else {
ctx.fillText("" + total_vap_count + " SSIDs", 86, 175);
}
ctx.fill();
// ssid status
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(50 + Math.sin(Math.PI/4) * 30,175-Math.cos(Math.PI/4) * 30,8,0,2*Math.PI);
if (total_vap_count){
ctx.fillStyle = "#4caf50";
} else {
ctx.fillStyle = "#ff0000";
}
ctx.fill();
// sta status
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(175 + Math.sin(Math.PI/4) * 30,300 - Math.cos(Math.PI/4) * 30,8,0,2*Math.PI);
if (total_sta_count){
ctx.fillStyle = "#4caf50";
} else {
ctx.fillStyle = "#ff0000";
}
ctx.fill();
// ac status
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(175 + Math.sin(Math.PI/4) * 30,50 - Math.cos(Math.PI/4) * 30,8,0,2*Math.PI);
if (parseInt("1") > 0){
ctx.fillStyle = "#4caf50";
} else {
ctx.fillStyle = "#ff0000";
}
//ctx.fillStyle = "#e9ebee";
ctx.fill();
// Lines.
if (parseInt("1") > 0){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(50 + Math.sin(Math.PI/4) * 30+10,175-Math.cos(Math.PI/4) * 30-10);
ctx.lineTo(175 - Math.sin(Math.PI/4) * 30-5,50 + Math.cos(Math.PI/4) * 30+5);
ctx.lineWidth = 3;
ctx.strokeStyle = "#004379"
ctx.stroke();
}
if (total_vap_count && total_sta_count){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(50 + Math.sin(Math.PI/4) * 30+5,175+Math.cos(Math.PI/4) * 30+ 5);
ctx.lineTo(175 - Math.sin(Math.PI/4) * 30-5,300 - Math.cos(Math.PI/4) * 30-5);
ctx.lineWidth = 3;
ctx.strokeStyle = "#004379"
ctx.stroke();
}
$(document).ready(function() {
var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
var paint1 = setTimeout(()=>{
ctx.font="16px FontAwesome";
ctx.fillStyle = "white";
ctx.fillText('\uf0ac',170, 55);
},2000);
var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
var paint2 = setTimeout(()=>{
ctx.font="16px FontAwesome";
ctx.fillStyle = "white";
ctx.fillText('\uf10b',170, 305);
},2000);
var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
var paint3 = setTimeout(()=>{
ctx.font="16px FontAwesome";
ctx.fillStyle = "white";
ctx.fillText('\uf012',45, 180);
},2000);
$('#myCanvas').click(function(e){
var x = e.clientX;
var y = e.clientY;
console.log("inside click");
console.log(x);
console.log(y);
//x start: 5, y start: 213 for canvas
if (Math.pow(x-55, 2) + Math.pow(y-175-213, 2) < Math.pow(30, 2)){
//$j("#overview_page").hide();
//openNav();
$("#demo").empty().append("ssid clicked");
}
if (Math.pow(x-175, 2) + Math.pow(y-300-213, 2) < Math.pow(30, 2)){
//$j("#overview_page").hide();
//openNav_sta();
$("#demo").empty().append("sta clicked");
}
if (Math.pow(x-175, 2) + Math.pow(y-50-213, 2) < Math.pow(30, 2)){
//$j("#overview_page").hide();
//openNav_ac();
$("#demo").empty().append("ac clicked");
}
});
})
#left_menu {
list-style-type: none;
margin: 0;
padding: 0;
width: 330px;
background-color: #e9ebee;
position: fixed;
height: 100%;
overflow: auto;
border: 1px solid #e9ebee;
border-radius: 6px;
font-family: 'Lato', Helvetica, sans-serif;
font-size: 18px;
}
li a {
display: block;
color: #000;
padding: 8px 18px;
text-decoration: none;
}
li a.active {
background-color: #008b10;
color: white;
}
li a:hover:not(.active) {
background-color: #555;
color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"/>
<ul id="left_menu">
<li><div><a id="tab_wireless" href="#"><i class="fas fa-chart-line"></i> System Status</a></div></li>
<li><div><a id="tab_system" href="#"><i class="fa fa-laptop" aria-hidden="true"></i> Network Configuration</a></div></li>
<li><div><a id="radio_list" href="#"><i class="fas fa-broadcast-tower"></i> Radio Information</a></div></li>
<!--<li><a id="search" href="#">Search</a></li>-->
<li><canvas id="myCanvas" width="310" height="400" style="position: relative; top: 110px; left: 5px;">
Your browser does not support the canvas element.
</canvas></li>
</ul>
<div id="demo" style="margin-left:330px;padding:1px 16px;border:1px solid #e9ebee; border-radius:6px;">hello world</div>
最佳答案
我只是在这里使用了 offsetX
和 offsetY
作为快速修复,但是如果您想要的话,您需要一种更安全的方法来获取相对于 Canvas 的鼠标单击位置关于生产。点击 Canvas 左上角时,需要获取鼠标位置[0, 0]。
var total_vap_count = 12;
var total_sta_count = 3;
//ac
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(175,50,30,0,2*Math.PI);
ctx.fillStyle = "#004379";
ctx.font = "14px Lato";
if ("1" < 2){
ctx.fillText("1" + " AC", 211, 50);
} else {
ctx.fillText("2" + " ACs", 211, 50);
}
ctx.fill();
//sta
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(175,300,30,0,2*Math.PI);
ctx.fillStyle = "#004379";
ctx.font = "14px Lato";
if (total_sta_count < 2){
ctx.fillText("" + total_sta_count + " device", 211, 300);
} else {
ctx.fillText("" + total_sta_count + " devices", 211, 300);
}
ctx.fillText("connected", 211, 315);
ctx.fill();
//ssid
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(50,175,30,0,2*Math.PI);
ctx.fillStyle = "#004379";
ctx.font = "14px Lato";
if (total_vap_count < 2){
ctx.fillText("" + total_vap_count + " SSID", 86, 175);
} else {
ctx.fillText("" + total_vap_count + " SSIDs", 86, 175);
}
ctx.fill();
// ssid status
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(50 + Math.sin(Math.PI/4) * 30,175-Math.cos(Math.PI/4) * 30,8,0,2*Math.PI);
if (total_vap_count){
ctx.fillStyle = "#4caf50";
} else {
ctx.fillStyle = "#ff0000";
}
ctx.fill();
// sta status
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(175 + Math.sin(Math.PI/4) * 30,300 - Math.cos(Math.PI/4) * 30,8,0,2*Math.PI);
if (total_sta_count){
ctx.fillStyle = "#4caf50";
} else {
ctx.fillStyle = "#ff0000";
}
ctx.fill();
// ac status
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(175 + Math.sin(Math.PI/4) * 30,50 - Math.cos(Math.PI/4) * 30,8,0,2*Math.PI);
if (parseInt("1") > 0){
ctx.fillStyle = "#4caf50";
} else {
ctx.fillStyle = "#ff0000";
}
//ctx.fillStyle = "#e9ebee";
ctx.fill();
// Lines.
if (parseInt("1") > 0){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(50 + Math.sin(Math.PI/4) * 30+10,175-Math.cos(Math.PI/4) * 30-10);
ctx.lineTo(175 - Math.sin(Math.PI/4) * 30-5,50 + Math.cos(Math.PI/4) * 30+5);
ctx.lineWidth = 3;
ctx.strokeStyle = "#004379"
ctx.stroke();
}
if (total_vap_count && total_sta_count){
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(50 + Math.sin(Math.PI/4) * 30+5,175+Math.cos(Math.PI/4) * 30+ 5);
ctx.lineTo(175 - Math.sin(Math.PI/4) * 30-5,300 - Math.cos(Math.PI/4) * 30-5);
ctx.lineWidth = 3;
ctx.strokeStyle = "#004379"
ctx.stroke();
}
$(document).ready(function() {
var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
var paint1 = setTimeout(()=>{
ctx.font="16px FontAwesome";
ctx.fillStyle = "white";
ctx.fillText('\uf0ac',170, 55);
},2000);
var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
var paint2 = setTimeout(()=>{
ctx.font="16px FontAwesome";
ctx.fillStyle = "white";
ctx.fillText('\uf10b',170, 305);
},2000);
var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
var paint3 = setTimeout(()=>{
ctx.font="16px FontAwesome";
ctx.fillStyle = "white";
ctx.fillText('\uf012',45, 180);
},2000);
$('#myCanvas').click(function(e){
var x = e.offsetX;
var y = e.offsetY;
//x start: 5, y start: 213 for canvas
if (pointInCircle(x, y, 50, 175, 30)){
//$j("#overview_page").hide();
//openNav();
$("#demo").empty().append("ssid clicked");
}
if (pointInCircle(x, y, 175, 300, 30)){
//$j("#overview_page").hide();
//openNav_sta();
$("#demo").empty().append("sta clicked");
}
if (pointInCircle(x, y, 175, 50, 30)){
//$j("#overview_page").hide();
//openNav_ac();
$("#demo").empty().append("ac clicked");
}
});
})
function pointInCircle(x, y, cx, cy, radius) {
var distancesquared = (x - cx) * (x - cx) + (y - cy) * (y - cy);
return distancesquared <= radius * radius;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"/>
<canvas id="myCanvas" width="310" height="400" style="position: relative; top: 110px; left: 5px;">
Your browser does not support the canvas element.
</canvas>
<div id="demo"></div>
关于javascript - 放大使 Canvas 区域点击变得困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52633467/
当点击content 时,我想触发我的alert。我的 content 中可以有任意数量的子元素,所以我不想对每个元素都进行硬编码。我想也许我可以监听对该父元素的点击,然后每次点击子元素都会触发我的操
对于 Mac 应用程序,我想检测应用程序中的用户事件,因此我可以定期让 Web 服务知道用户在端点上仍然处于事件状态。 在 Cocoa Touch 中,我会覆盖 UIApplication 的 sen
第一次在这里发帖,但天知道我一直使用这个网站来搜索问题 :P 好吧,我现在遇到了自己的问题,我似乎无法轻松地在 Google 上搜索,在玩了大约 2 小时后,我终于决定发布一个问题,看看你们是怎么想的
Angular 触控 ngTouch导致在触摸释放时发生点击。 有没有办法让点击发生在触摸开始? fast-click下面的指令似乎可以在触摸屏上执行我想要的操作,但它不适用于鼠标点击。 myApp.
1) 如果我有这个,当我点击子 Container 时它不会打印'tap': Container( color: Colors.red, child: GestureDetector(
我简直要发疯了,只是想从 jQuery 中的事件中解除 onclick 处理程序的绑定(bind),以便稍后可以将其绑定(bind)到另一个函数。 我已将代码隔离在测试页中,因此除了核心之外什么都没有
我有一个有趣的情况。我需要触发实时点击,因为简单的点击不起作用。 这就是我所拥有的: $('.text').trigger('click'); 但我需要这样的东西: $('.text').trigge
这是我的作业,这是我第一次做表单验证。以下代码分别是我的HTML代码和JavaScript代码。 HTML 代码: First N
正如标题所示,如何获取 Magento 中特定产品的浏览量/点击量/展示次数。欢迎任何帮助。 最佳答案 这个简单的示例将为您提供在您指定的日期+其查看次数之间查看过的产品列表: $fromDate =
我正在创建一个应用程序,但在其中遇到错误。我想在按钮上添加 OnclickListner。该按钮位于 fragment 类上。从这个 fragment 类我想继续另一个类。代码如下: fragment
我在数组中有一些值。首先,我想在 View 中显示该数组的前两个值,接下来我想在某些按钮单击操作后显示剩余的值,并将数组索引增加 1。例如:一次点击显示第三个值,然后另一次点击显示第四个值。 我怎样才
在下面的代码片段中,如果在链接上执行“CMD+CLICK”,则不会显示 alert('CMD')。这是为什么? 我想在用户按下 CMD 按钮(或 Windows 上的 CTRL 键)+单击 href
我希望在单击链接时开始加载一些内容。在单击该链接之前,我不希望它使用任何带宽。另外如何实现几乎所有灯箱中都能看到的旋转光标动画? 最佳答案 使用$.ajax()函数动态加载内容。 对于动画,请找到一个
我有如下的 DOM: users 当用户点击按钮时,它会将新的“td”附加到“tr”。它运作良好。问题:单击“a”我想打开两个链接。最好的方法是首先将当前页面重定向到另一个页面,然后
这是我正在尝试做的.. 点击按钮会显示一个随机数组项。 数组项只能显示一次。 目前我已经将代码设置为: 点击随机数组项显示。 按钮点击继续循环,没有结束。 按钮点击多次显示元素。 这是代码的链接 ht
我想创建...基本上是一个宏程序。点击记录后,它会记录所有鼠标(可能最终是键盘)事件。然后你可以保存,然后播放,鼠标应该移动并点击在相同的地方当你录制它时它会发生。 我知道如何获取全局鼠标事件,但我不
我有一个关于将 onClick 添加到 ListView 的问题,我已经尝试尽可能多地遵循 Android NotePad 教程,但是对于我的布局我不太明白如何添加它。 这是 Activity 类,它
我正在使用一个网站以表格的形式显示信息。用户可以单击表格中的行来更改它们的颜色,我还有一个按钮允许用户暂停页面的刷新,这样就不会添加新信息。这两个功能都适用于桌面,但不适用于触摸屏。我的第一个想法是触
所以我的网站上有一个正常的链接,我想为它添加跟踪。我可以设想很多方法来做到这一点,但我已经确定通过编写一个小的 jquery 函数并在我的标签中放置一个小片段来实现这一点非常简单: click me!
我正在尝试使我的图片按钮看起来不错。我尝试了几种不同的方法,但它们看起来都不对。这是一个圆形图像,我想让它看起来像是可以按下的。这是我到目前为止所得到的。 android:textAppearance
我是一名优秀的程序员,十分优秀!