有没有办法编写只会影响文本字段的样式规则.假设我有以下内容:
<div id="helloDiv">
<input type="text" name="something" /><br />
<input type="checkbox" name="somethingElse" /><br />
<input type="submit" name="go" />
</div>
div#helloDiv input {
border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
上面的CSS规则的问题是它将影响所有输入字段,不仅仅是输入文本,还有单选按钮,提交按钮等.
那么是否有一个跨浏览器解决方案来影响div或其他页面元素中的一种输入字段(不需要单独分配输入字段样式).
我们正在开发一个将被出售给许多客户的Web应用程序.已经有一个客户(银行)决定一旦准备好就会购买该产品.不幸的是,由于一些错误传达,它出现的时间相当晚,他们使用的唯一浏览器是IE6.该应用程序已经开始考虑到它不需要支持IE7以下的任何其他内容.结果也很不错 - 它在IE7/FF/Opera/Safari上完全可用.尚未在Chrome上进行测试,但预计会遇到一些问题.不幸的是,现在IE6的要求毕竟......
该应用程序尚未开发得太远,设计非常好,所以变化并不是那么可怕.不过,它还需要一些工作.
IE6的一个好处是它支持两个非标准且非常有用的功能.首先是条件注释,它允许我只为IE6包含一些CSS/JS文件.其次是CSS表达式.就是这样的事情:
input
{
background-color: expression(this.type='text'?'silver':'');
}
Run Code Online (Sandbox Code Playgroud)
实质上,它将CSS值绑定到JavaScript表达式.这允许轻松模拟IE6本身不支持的许多CSS功能,并且可以大大减轻我的负担.
不幸的是IE因其JavaScript性能而臭名昭着.我担心使用太多这些表达式可能会减慢它的速度.我也不知道银行正在使用什么电脑.由于它是一个非常大的,我希望他们所有的分支机构都有各种各样的.我不希望在那里使用任何东西 - 一些简单的数学运算,三元运算符和查看此元素的/父元素的属性.在IE6_override.CSS文件中仍然会有几十个.
这可能是个问题吗?
补充: Blah,这是我害怕的.好的,会看到我能用多少其他黑客来解决这些缺点.Thanx,人!
javascript css performance internet-explorer-6 css-expressions
我正在制作一个必须在FF/IE6/IE7/Opera/Safari上正确渲染的网站.IE6是一个迟到的要求(当我完成所有其他浏览器时),它必须是可用的,不一定与其他浏览器相同.现在我正在调整它,以便它也可以在IE6上使用.
为此,我在我的主题中创建了另一个样式表IE6_override.css.正如您可能已经猜到的那样,我希望它仅在浏览器是IE6时应用.有条件的评论将是完美的.
唯一的问题是 - ASP.NET <link>为主题文件夹中的每个CSS文件呈现标记,因此在所有浏览器上无条件地包含此文件.
我想坚持主题,因为我们可以在以后为我们的应用程序创建更多皮肤是完全可行的(如果客户希望的话).
有什么方法可以让ASP.NET从其auto-including中排除这个特定的.CSS文件?
补充:谢谢你的答案!最后我找到了一个解决方法.由于我之前提到的一些其他样式问题,我也被迫使用IE6解决方法Javascript.因此,我使用.ie6_dummy类选择器为我的所有IE6特定规则加上前缀,然后在页面加载时将其删除.:)