看来即使使用 shivs 你也不能做类似的事情input[type="search"]
在 IE7 中设置新的 HTML5 输入元素的样式。您可以在以下位置查看示例http://jsfiddle.net/2tmAp/ http://jsfiddle.net/2tmAp/(当然是在 IE7 模式下查看)。
大概 IE7 将这些元素设置为type="text"
即使 DOM 本身保持不变,这仍然会以某种方式阻止样式的应用。
解决这个问题最巧妙的方法是什么?我们可以在 Javascript 中做一些事情来欺骗 IE7 应用样式,就像 shivs 在元素上的工作方式一样吗?
shiv 只是一种强制创建新元素的方法,无论是否支持。但处理类型和属性以及选择器是另一回事。这新“输入”的后备是“文本”类型 http://www.coreservlets.com/html5-tutorial/input-types.html。这适用于搜索、日期选择器和其他(无法跟踪新的)。
要理解自动回退在所有主要浏览器中一致工作的原因有两个关键:
-
输入元素的默认类型是“文本”.
- 所有浏览器都会忽略未知属性。
这两点的结果是,如果你说<input type="foo" bar="baz"/>
, 所有浏览器都会同等对待<input type="text"/>
(除非“foo”是可识别的输入type 或“bar”是输入元素的可识别属性)。
since type="search"
IE7 不知道,它会回退到type="text"
并且你无法在 CSS 中将其作为type="search"
既然现在type="text"
要解决您的选择器问题,您可以尝试使用选择性 http://selectivizr.com/它使用 JS 库的能力来进行跨浏览器选择器匹配(即使在不支持的浏览器中使用一些伪选择器匹配脚本)。我不知道他们是否会拾取 shiv 创建的元素。
或者更好的是,使用通常的方法在 HTML/JS 中创建搜索框作为后备,
为了一个简单的答案,我会按照其他人的评论去做。只需创建一个名为“search”的类并将该类名称应用于所有搜索框即可。它们的样式与您使用选择器的样式相同,就像:
input[type="search"],input.search{
/*styles*/
}
<input type="search" class="search" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)