【问题标题】:CSS3 Gradient shows wrong colors in Internet ExplorerCSS3 渐变在 Internet Explorer 中显示错误的颜色
【发布时间】:2013-04-17 18:30:36
【问题描述】:

我使用 Ultimate CSS Gradient Generator 创建了以下渐变。它在除 IE 之外的任何浏览器中都能正确显示(我已经在 IE7、IE8 和 IE9 中对其进行了测试)。在大多数浏览器中,渐变是绿色的。在 IE 中,渐变是蓝色和黑色。任何想法为什么?代码生成后我没有篡改过。

        background: #104815; /* Old browsers */
        /* IE9 SVG, needs conditional override of 'filter' to 'none' */
        background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMTAwJSIgeDI9IjEwMCUiIHkyPSIwJSI+CiAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjMTA0ODE1IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzkyYjY5MiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
        background: -moz-linear-gradient(45deg,  #104815 0%, #92b692 100%); /* FF3.6+ */
        background: -webkit-gradient(linear, left bottom, right top, color-stop(0%,#104815), color-stop(100%,#92b692)); /* Chrome,Safari4+ */
        background: -webkit-linear-gradient(45deg,  #104815 0%,#92b692 100%); /* Chrome10+,Safari5.1+ */
        background: -o-linear-gradient(45deg,  #104815 0%,#92b692 100%); /* Opera 11.10+ */
        background: -ms-linear-gradient(45deg,  #104815 0%,#92b692 100%); /* IE10+ */
        background: linear-gradient(45deg,  #104815 0%,#92b692 100%); /* W3C */
        filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#104815', endColorstr='#92b692',GradientType=1 ); /* IE6-8 fallback on horizontal gradient */

这是使用 NetRenderer 的屏幕截图,显示了 IE8 中的蓝黑渐变:

【问题讨论】:

  • 它在所有版本的 IE 中都显示为绿色。看到这个小提琴:jsfiddle.net/F9wY7/1。我还删除了 -ms- 属性,因为 IE 10 final 发布时没有前缀,所以不需要它。
  • 这很奇怪。 IE一定搞砸了我的电脑。感谢您为我调查。
  • 实际上,我刚刚在 IE8 中使用 NetRenderer 进行了测试(参见上面的屏幕截图),但我仍然得到蓝色到黑色的渐变,所以显然发生了一些事情。
  • 必须是网站上的另一个问题,因为 jsfiddle 显示代码正常工作。我看不出颜色会改变的任何合乎逻辑的原因。你有指向页面本身的链接吗?
  • 我找到了问题所在。 IE9 及以下使用您提供的过滤器。但是对于颜色值,引号被转义(我猜是你的服务器)为 '当过滤器中的颜色值以 ' 为前缀和后缀时错误处理正在制作不同的颜色。如果您删除这些,它可以正常工作。您可以在 F12 工具中试一试。

标签: internet-explorer css colors generator gradient


【解决方案1】:

过滤器属性中颜色值的引号被编码为'。这会导致颜色依赖错误处理并更改原始值。

固定引号将给出正确的绿色渐变。

【讨论】:

  • 仅供任何可能遇到此问题的人参考,我在使用 Wordpress 网站时遇到了这个问题。所以显然在使用 Wordpress 时必须从 CSS3 渐变代码中删除引号。
猜你喜欢
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 2015-07-13
  • 1970-01-01
  • 2011-05-10
相关资源
最近更新 更多