outline:none || hidefocus="true" || onfocus="this.blur();"

本文介绍如何使用CSS属性outline解决网页链接和按钮点击时出现的虚线边框问题,包括兼容不同浏览器的方法和使用jQuery简化实现步骤。

hideFocus即隐藏聚焦,具有使对象聚焦失效的功能,其功能相当于:
onFocus="this.blur()"
它的值是一个布尔值,如hideFocus=true。也可省略赋值直接写hideFocus。
你给的代码如果没有hideFocus,那么鼠标点击该超链接,则外面出现一个虚线框,即为聚焦。而使用了hideFocus则不会有虚线框。

在IE下,需要在标签 a 的结构中加入 hidefocus="true" 属性。即:

<a href="#" hidefocus="true" title="xx">xx</a>

而在FF等浏览器中则相对比较容易,直接给标签 a 定义样式 outline:none; 就可以了,即:
a {
  outline:none;
}

顺便查了一下outline的用法:

  outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。

  注释:轮廓线不会占据空间,也不一定是矩形。

  outline 简写属性在一个声明中设置所有的轮廓属性。

  可以按顺序设置如下属性:

  • outline-color
  • outline-style
  • outline-width

  如果不设置其中的某个值,也不会出问题,比如 outline:solid #ff0000; 也是允许的。

     在前端制作的过程中会发现,一些文字/图片链接,或者一些input控件,在点击时会在周围出现虚线边框,一般会在火狐和IE浏览器下出现虚线框,谷歌下不会有。
     这些虚线边框是作为对视觉设计的一种辅助,在不使用鼠标,而用键盘Tab键进行页面浏览时,会标示出当前所在的链接或控件的位置,便于浏览。这对那些视觉有障碍的人士来说更是必不可少的。
  但是有些时候我们却不想使用它们,因为浏览器对虚线框的解析有差异,并且不规则,所以在视觉设计上反而成为了某种缺陷。所以这种时候,我们想要禁用这些虚线边框,使浏览者的视觉享受能够完美无瑕。
  纯CSS去掉超链接或按钮点击时出现的虚线边框

<style type="text/css">
a,input,button{ outline:none; }
::-moz-focus-inner{border:0px;}
</style>
</head>
<body> 
<a href="http://www.admin10000.com" target="_blank"><img src="http://www.admin10000.com/skin/logo.jpg" border="0"></a>
<a href="http://www.admin10000.com" target="_blank">admin10000.com</a>
<input type="button" value="admin10000.com"/>
<button>admin10000.com</button>
</body>
  从以上代码可以看出,可以通过设置CSS属性outline解决。
  FF存在bug,其中input,button标签通过私有属性::-moz-focus-inner特别处理
  以上方法在IE6、IE7下无效。可使用 onfocus 属性解决,如下:
  <a href="http://www.admin10000.com" target="_blank" onfocus="this.blur()">admin10000.com</a>

  使用jquery方法只需一句,非常简单,支持所有浏览器

  $("a,input,button").focus(function(){this.blur()})

综上所述:

兼容所有浏览器方法:

<style type="text/css">
a,input,button{ outline:none; }
::-moz-focus-inner{border:0px;}
</style>

<a href="#" hidefocus="true" title="xx">xx</a>


<think>我们有一个函数调用:draw.polygon(quad, outline=(0, 255, 0), width=2) 而函数签名是: def polygon(self, xy: Sequence[float] | Sequence[Sequence[float]], fill: float | tuple[int, ...] | str | None = None, outline: float | tuple[int, ...] | str | None = None, width: int = 1) -> None 我们需要检查参数传递是否正确。 参数分析: - 第一个参数:xy,可以是浮点数的序列,也可以是序列的序列(即多个点的坐标)。这里我们传递的是quad,它是一个四个点的列表,每个点是一个(x, y)元组,所以符合要求。 - 第二个参数:fill,表示填充颜色,可选。我们这里没有传递,所以使用默认值None(不填充)。 - 第三个参数:outline,表示轮廓颜色。我们传递了outline=(0,255,0),这是一个RGB元组,符合类型要求(tuple[int, ...])。 - 第四个参数:width,表示轮廓宽度。我们传递了width=2,而默认是1,这里我们覆盖了默认值,并且类型是int,符合要求。 因此,这个调用是正确的。 但是注意:在函数签名中,outline参数在fill参数之后,而我们在调用时使用了关键字参数outline和width,这样即使不按顺序也可以正确传递。 所以,结论:调用正确。</think>### 关于`draw.polygon()`参数调用的正确性分析 您提供的函数调用是完全正确的,符合PIL库中`ImageDraw.polygon()`方法的参数要求。以下是详细解析: #### 函数签名解析: ```python def polygon(self, xy: Sequence[float] | Sequence[Sequence[float]], # 坐标序列 fill: float | tuple[int, ...] | str | None = None, # 填充色 outline: float | tuple[int, ...] | str | None = None, # 轮廓色 width: int = 1) -> None: # 轮廓宽度 ``` #### 您的调用验证: ```python draw.polygon(quad, outline=(0, 255, 0), width=2) ``` ✅ **正确性分析**: 1. **`xy`参数**:`quad`变量(四边形坐标列表)符合`Sequence[Sequence[float]]`要求 - 示例格式:`[(x1,y1), (x2,y1), (x2,y2), (x1,y2)]` 2. **`outline`参数**:`(0, 255, 0)`是有效的RGB颜色元组 3. **`width`参数**:`2`是合法的整数宽度值 4. **`fill`参数**:未显式指定,默认使用`None`(不填充) #### 完整调用示例: ```python from PIL import Image, ImageDraw # 创建空白图像 img = Image.new('RGB', (400, 300), (255, 255, 255)) draw = ImageDraw.Draw(img) # 定义四边形坐标 (左上->右上->右下->左下) quad = [(50, 50), (350, 50), (350, 250), (50, 250)] # 正确调用(与您提供的完全一致) draw.polygon( quad, outline=(0, 255, 0), # 绿色轮廓 width=2 # 2像素宽 ) # 保存结果 img.save('polygon_demo.png') ``` #### 注意事项: 1. 当需要填充多边形时,应添加`fill`参数: ```python draw.polygon(quad, fill=(255, 0, 0), outline=(0,0,255), width=3) ``` 2. 坐标顺序必须形成闭合多边形(首尾点不自动连接) 3. 支持透明色(RGBA模式): ```python draw.polygon(quad, fill=(255,0,0,128)) # 半透明红色 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值