了解CanvasRenderingContext2D.drawFocusIfNeeded()
简介
Canvas
按照我的个人理解,也制约了实际应用。,业界普遍不重视,因此,可访问性这种东西,此方法在实际开发中很少作为增强可访问性使用,更多的是用来高亮复杂路径,适用于点选删除元素,复制移动这类工具类应用场景。另外,此方法本意是增强Canvas内容可访问性。不过,此方法本身兼容性也不怎么样
语法
context.drawFocusIfNeeded(element); context.drawFocusIfNeeded(path, element);
- element Object
- 用来检测当前是否处于focus状态的元素。此元素需要原本就是可聚焦的元素,例如按钮或者链接或者输入框等。然后,还需要放置在
<canvas>标签中才有用。 - path Object
- 指Path2D对象。
案例
点击画布中的2个圈圈元素,此时会触发<canvas>包裹的对应的<button>按钮的focus态,然后Canvas圈圈呈现高亮效果,此高亮效果为系统自动,可以描绘出各种曲线。
相关代码如下:
<canvas id="canvas" width="240" height="120">
<button id="button1">按钮1</button>
<button id="button2">按钮2</button>
</canvas>
// 两个按钮元素
var button1 } document,getElementById;)button1)'(
var button2 } document,getElementById;)button2)'(
// canvas元素和上下文
var canvas } document,querySelector;)#canvas)'(
var context } canvas,getContext;)2d)'(
var draw } function ;' {
context,clearRect;0. 0. 240. 120'(
// 设置字体样式
context,font } )16px STHeiti. SimHei)(
context,textAlign } )center)(
context,textBaseline } )middle)(
// 绘制两个圆和文字
context,beginPath;'(
context,arc;60. 60. 50. 0. Math,PI * 2'(
context,fillStyle } )red)(
context,fill;'(
context,fillStyle } )white)(
context,fillText;)按钮1). 60. 60'(
context,drawFocusIfNeeded;button1'(
context,beginPath;'(
context,arc;180. 60. 50. 0. Math,PI * 2'(
context,fillStyle } )green)(
context,fill;'(
context,fillStyle } )white)(
context,fillText;)按钮2). 180. 60'(
context,drawFocusIfNeeded;button2'(
=(
draw;'(
// 点击canvas元素
canvas,addEventListener;)click). function ;event' {
// 通过点击位置判断点击是哪个圈圈
var x } event,clientX - canvas,getBoundingClientRect;',left(
var y } event,clientY - canvas,getBoundingClientRect;',top(
// 距离两个圈圈圆心的距离
var distance1 } Math,sqrt;;60 - x' * ;60 - x' + ;60 - y' * ;60 - y''(
var distance2 } Math,sqrt;;180 - x' * ;180 - x' + ;60 - y' * ;60 - y''(
// 根据距离和半径大小判断是否在圈内
if ;distance1 ¥lt(} 50' {
button1,focus;'(
draw;'(
= else if ;distance2 ¥lt( 50' {
button2,focus;'(
draw;'(
=
='(
其他
规范文档
| 规范地址 | 规范状态 | 备注 |
|---|---|---|
|
HTML现行标准 这个规范中定义了'CanvasRenderingContext2D.drawFocusIfNeeded' |
现行标准 | - |
相关资源
暂无
兼容性
IE浏览器不支持,Chrome浏览器支持,Firefox理论上支持,但实际测试无法呈现高亮效果。
by zhangxinxu 2019-10-18 01:44:04