2011-09-25 75 views
0

我想獲得邊框漸變(從頂端:#0c93c0;到底部:白色)。我想知道,有沒有什麼辦法讓css3爲webkit和moz瀏覽器? THX提前跨瀏覽器邊框漸變

+0

這似乎掩蓋它:http://stackoverflow.com/questions/2717127/css3 - 漸變邊界 – mwan

+0

它只適用於-moz瀏覽器。它不包括webkit –

+0

那麼只需添加另一個WebKit聲明? – BoltClock

回答

2

而不是邊界,我會使用背景漸變和填充。相同的外觀,但更容易,更支持。

一個簡單的例子:

<div class="g"> 
    <div>bla</div> 
</div> 

CSS:

.g { 
    background-image: -webkit-linear-gradient(top, #0c93C0, #FFF); 
    background-image: -moz-linear-gradient(top, #0c93C0, #FFF); 
    background-image:  -ms-linear-gradient(top, #0c93C0, #FFF); 
    background-image:  -o-linear-gradient(top, #0c93C0, #FFF); 
    background-image:   linear-gradient(top, #0c93C0, #FFF); 
    padding: 1px; 
} 

.g > div { background: #fff; } 
+0

+1將其恢復爲零。我不知道爲什麼它被低估。 –

+0

@RobW我認爲它是低調的,因爲缺乏優雅(添加額外的標記不是優雅的)。 –

1

小提琴http://jsfiddle.net/9ZDTA/
添加額外的聲明要支持的每個瀏覽器引擎,使用特定的前綴。

background-color: #0c93C0; /* fallback color if gradients are not supported */ 

    background-image: -webkit-linear-gradient(top, #0c93C0, #FFF); 
    background-image: -moz-linear-gradient(top, #0c93C0, #FFF); 
    background-image:  -ms-linear-gradient(top, #0c93C0, #FFF); 
    background-image:  -o-linear-gradient(top, #0c93C0, #FFF); 
    background-image:   linear-gradient(top, #0c93C0, #FFF); /* standard, but currently unimplemented */ 

請參閱this source

+0

那是什麼?我想要'邊界'漸變。我的意思是邊框:1px,固體...不是「背景」 –

+0

Mozilla不支持邊框漸變。我展示了一個跨瀏覽器的方式來顯示'背景漸變'。當Mozilla添加對邊界漸變的支持時,您可以使用我的答案作爲跨瀏覽器支持的基礎。 –

2

使用less.css(當然你可以不用還),關鍵是在pseudoselectors(:before和:after ):

1.定義跨瀏覽器梯度:

 

    .linear-gradient (@dir, @colorFrom, @colorTo) { 
     background: -webkit-linear-gradient(@dir, @colorFrom, @colorTo); 
     background: -moz-linear-gradient(@dir, @colorFrom, @colorTo); 
     background: -ms-linear-gradient(@dir, @colorFrom, @colorTo); 
     background: -o-linear-gradient(@dir, @colorFrom, @colorTo); 
    } 

2.定義邊界梯度束:

 

    .border-gradient(@colorFrom, @colorTo){ 
     border-top:1px solid @colorFrom; 
     border-bottom:1px solid @colorTo; 
     position:relative; 

     .border-bundle(@colorFrom, @colorTo){ 
      position:absolute; 
      content:""; 
      width:1px; 
      height:100%; 
      top:0; 
      .linear-gradient(top, @colorFrom, @colorTo); 
     } 

     &:before{ .border-bundle(@colorFrom, @colorTo); left: 0; } 
     &:after { .border-bundle(@colorFrom, @colorTo); right:0; } 
    } 

我們現在可以這樣使用它:

 

    .some-class{ 

     /* other properties */ 

     .border-gradient(#0c93c0, #FFF); 
    } 

+0

使用更少!可悲的是,這個問題並沒有要求它,所以不能upvote。另外,添加最後兩行時會出錯('&:before [...]'和'&:after [...]')。 –

+0

錯誤提示是: '.border-bundle(,,,)'找不到匹配的定義' –