2012-10-20 130 views
3

我爲.html頁面添加了漸變背景。似乎適用於大多數瀏覽器,但我想知道它是否標準並符合所有規則。CSS中的漸變

的.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; 

} 
+0

不,這是不規範的,而且沒有的前綴符合任何規則。目前的情況只允許你選擇更好的瀏覽器兼容性或標準兼容性,但不能同時兼顧。 – BoltClock

回答

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支持,你必須按照這個...是啊,我知道它很爛,但是......對於IE9完整的多站梯度(使用SVG

支持):

添加一個「梯度」類所有的元素有一個梯度,下面覆蓋添加到您的HTML完成IE9支持:

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

由於W3C漸變語法已更改,ColorZilla需要更新其漸變生成代碼。例如,這在Firefox 16中將呈現非常不同的效果。並且,由於您添加了[standards-compliance]標籤,因此我應該指出,有效CSS代碼的唯一部分是前兩行(未預先確定的漸變從技術上驗證,但不符合您的期望)。 – BoltClock

+0

可以理解,因爲瀏覽器供應商似乎沒有達成共識,因此這些糟糕的CSS屬性。他們只是想添加他們的東西,並將其產品作爲市場上最好的產品出售。 :) –