2011-09-25 153 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(,,,)'找不到匹配的定义' –