CSS中的渐变效果

3

我为我的.html页面添加了渐变背景。在大多数浏览器中似乎都可以工作,但我想知道它是否符合标准并遵守所有规则。

.css

我为我的.html页面添加了渐变背景。在大多数浏览器中似乎都可以工作,但我想知道它是否符合标准并遵守所有规则。

.css

html {
  /* fallback  */
  background-color: #65a5d1;

  /* Safari 4-5, Chrome 1-9 */
  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#65a5d1));

  /* Safari 5.1, Chrome 10+ */
  background: -webkit-linear-gradient(top, #fff, #65a5d1);

  /* Firefox 3.6+ */
  background: -moz-linear-gradient(top, #fff, #65a5d1);

  /* IE 10 */
  background: -ms-linear-gradient(top, #fff, #65a5d1);

  /* Opera 11.10+ */
  background: -o-linear-gradient(top, #fff, #65a5d1);

  height: 900px;

}

不,这是非标准的,而且没有任何前缀符合任何规则。目前的情况只允许您在更好的浏览器兼容性和标准遵从性之间进行选择,但不能同时具备两者。 - BoltClock
1个回答

4
如果你想生成完全兼容的渐变,可以使用Ultimate CSS Gradient Generator

这是它生成的输出:

/* Old browsers */
background: #1e5799;

/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMTAwJSIgeDI9IjEwMCUiIHkyPSIwJSI+CiAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjMWU1Nzk5IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjMjk4OWQ4IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iNTElIiBzdG9wLWNvbG9yPSIjMjA3Y2NhIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzdkYjllOCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);

/* FF3.6+ */
background: -moz-linear-gradient(45deg,  #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%);

/* Chrome, Safari4+ */
background: -webkit-gradient(linear, left bottom, right top, color-stop(0%,#1e5799), color-stop(50%,#2989d8), color-stop(51%,#207cca), color-stop(100%,#7db9e8));

/* Chrome10+,Safari5.1+ */
background: -webkit-linear-gradient(45deg,  #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);

/* Opera 11.10+ */
background: -o-linear-gradient(45deg,  #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);

/* IE10+ */
background: -ms-linear-gradient(45deg,  #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);

/* W3C */
background: linear-gradient(45deg,  #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);

/* IE6-8 fallback on horizontal gradient */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=1 );

如您所见,它生成了更多属性以涵盖更多情况。


如果您需要支持IE 9,则必须遵循以下步骤...是的,我知道这很糟糕,但是...

使用SVG实现对IE9的完整多停止渐变的支持:

将“gradient”类添加到所有具有渐变的元素中,并将以下覆盖添加到您的HTML中以完成对IE9的支持:

<!--[if gte IE 9]>
  <style type="text/css">
    .gradient {
       filter: none;
    }
  </style>
<![endif]-->

ColorZilla需要更新其渐变生成代码,因为W3C渐变语法已更改。例如,在Firefox 16中,这将呈现非常不同的效果,而在Firefox 15中则不同。由于您添加了[standards-compliance]标签,我应该指出,代码中唯一有效的CSS部分是前两行(未加前缀的渐变在技术上验证,但不会产生您期望的效果)。 - BoltClock
由于浏览器供应商之间似乎没有共识,因此这些可怕的CSS属性很难理解。他们只是想添加自己的东西,并将其产品销售为市场上最好的产品。 :) - Leniel Maccaferri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接