::-ms-clear
伪元素可以使用哪些其他属性?::-ms-clear
伪元素可以使用哪些其他属性?更新: 正如另一个回答者指出的那样,自2013年6月19日以来,MS文档已经更新,包括::-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属性,但实际上根本没有作用:
text-align
float
添加其他CSS伪元素不会影响::-ms-clear
。具体来说,我尝试使用::after
和::before
,并使用content: "y"
对其进行操作,但没有任何结果。
显然,这取决于您想应用于文本框的伴随图标的大小,但我使用14-16px的图标,并发现margin-right: 17px
可以给x
留出明确的间隙,将x
向左移动到右对齐的图标的左侧。有趣的是,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;
}
::after
和::before
没有任何效果的原因不是因为::-ms-clear
,而是因为::-ms-clear
适用于input
元素,这些元素不能生成内容,因为它们没有任何内容(即它们是空元素)。当然,除非在IE10/IE11中有所改变,但我怀疑这种情况。 - BoltClock