更新:正如另一位回答者所指出的,MS 文档已于 2013 年 6 月 19 日更新,以包含 ::-ms-clear 可用的所有属性。目前尚不清楚这是否适用于 IE10 而不是当前即将推出的 IE11,因此我将在下面留下其余答案。
为了完整起见,他们还更新了::-ms-reveal 的文档,看起来与::-ms-clear 完全相同。
下面的答案至少适用于 IE10。
我找不到详尽的清单,因此我进行了实验:
::-ms-clear {
margin: *; /* except margin-left */
background: *;
color: *;
display: none|block;
visibility: *;
}
不幸的是,我无法欺骗 IE 的开发人员模式 (F12) 来向我显示样式树中的 ::-ms-clear 属性,因此我不得不手动尝试并重新加载页面以进行实验。我什至尝试通过添加onblur=this.focus() 作弊,但没有奏效。
CSS 属性做了一些事情,并且看起来很有用:
-
margin:边距给了我一种从文本框右侧移动它的方法。我将它移动了图标的大小,再加上 1-3 个像素以提供缓冲区。只有margin-left 似乎不起作用。
-
background:只是x的背景。应用任何background 设置会将您想要的内容置于其后面;它不会取代 x!
-
color:控制x的颜色。
-
display:正如让我来到这里的问题所指出的,none 将隐藏 x。
-
visibility:似乎与display 类似。
您可以组合 color 和 background 以替换 x 使用不同的背景图片,只要它适合给定大小的x,看起来大约是 20px,但这只是我的眼睛。
::-ms-clear {
color: transparent;
background: no-repeat url("../path/to/image") center;
}
做了某事但似乎没用的CSS属性:
-
padding:它会影响x,但从未像我预期的那样影响它(一切似乎都隐藏了图标,或者至少将其移出视线)。
-
position:与padding 相同的行为。诚然,我更像是一名程序员而不是一名设计师,所以这可能是我自己的缺点。
我猜测的 CSS 属性可能会做一些事情,但根本没有做任何事情:
添加其他 CSS 伪元素不会影响::-ms-clear。具体来说,我用content: "y"尝试了::after和::before,都没有结果。
显然,这取决于您打算应用于文本框的伴随图标的大小,但我使用 14-16 像素的图标,我发现 margin-right: 17px 给了 x 一个明显的差距,这改变了 @987654359 @ 在我的右对齐图标的左侧。有趣的是,margin-left 似乎没有任何效果,但您可以对margin-right 使用负值。
我最终使用的实际 CSS 阻止了我的图标被 x 覆盖。
[class^="tbc-icon-"]::-ms-clear, [class*=" tbc-icon-"]::-ms-clear {
margin-right: 17px;
}
我的图标都共享相同的基本名称tbc-icon-,这意味着::-ms-clear 伪元素会在应用时自动应用于所有图标。在所有其他情况下,伪元素以其默认方式运行。
有趣的是,::-ms-reveal 的行为方式似乎相同,如果您要将图标应用于密码字段(我期望的可能性要小得多),那么您可以按照上面的示例:
[class^="tbc-icon-"]::-ms-clear, [class*=" tbc-icon-"]::-ms-clear,
[class^="tbc-icon-"]::-ms-reveal, [class*=" tbc-icon-"]::-ms-reveal {
margin-right: 17px;
}