`
shizisongsong
  • 浏览: 39513 次
文章分类
社区版块
存档分类
最新评论

CSS3 径向渐变(radial-gradient)

阅读更多

上篇文章介绍了 CSS3 线性渐变(linear-gradient),这篇文章向大家介绍 radial-gradient(径向渐变)以及重复渐变(线性重复、径向重复)。在以前,渐变效果和阴影、圆角效果一样都是做成图片,现在 CSS3 可以直接编写  CSS 代码来实现。

CSS3 径向渐变和线性渐变是很相似的,我们首先来看其语法:

-moz-radial-gradient([<bg-position> || <angle>,]? [<shape> || <size>,]? <color-stop>, <color-stop>[, <color-stop>]*);
 -webkit-radial-gradient([<bg-position> || <angle>,]? [<shape> || <size>,]? <color-stop>, <color-stop>[, <color-stop>]*);

 

  除了您已经在线性渐变中看到的起始位置,方向,和颜色,径向梯度允许你指定渐变的形状(圆形或椭圆形)和大小(最近端,最近角,最远端,最远角,包含或覆盖 (closest-side, closest-corner, farthest-side, farthest-corner, contain or cover))。 颜色起止(Color stops):就像用线性渐变,你应该沿着渐变线定义渐变的起止颜色。下面为了更好的理解其具体的用法,我们主要通过不同的示例来对比CSS3径向渐变的具体用法.分享一个最好用的UI前端框架!

  示例一:

background: -moz-radial-gradient(#ace, #f96, #1E90FF);
background: -webkit-radial-gradient(#ace, #f96, #1E90FF);

 

  效果:

  示例二:

background: -moz-radial-gradient(#ace 5%, #f96 25%, #1E90FF 50%);
background: -webkit-radial-gradient(#ace 5%, #f96 25%, #1E90FF 50%);

 

  效果如下:

  从以上俩个示例的代码中发现,他们起止色想同,但就是示例二定位了些数据,为什么会造成这么大的区别呢?其实在径向渐变中虽然具有相同的起止色,但是在没有设置位置时,其默认颜色为均匀间隔,这一点和我们前面的线性渐变是一样的,但是设置了渐变位置就会按照渐变位置去渐变,这就是我们示例一和示例的区别之处:虽然圆具有相同的起止颜色,但在示例一为默认的颜色间隔均匀的渐变,而示例二每种颜色都有特定的位置。分享一个最好用的UI前端框架!

  示例三:

background: -moz-radial-gradient(bottom left, circle, #ace, #f96, #1E90FF);
background: -webkit-radial-gradient(bottom left, circle, #ace, #f96, #1E90FF);

 

  效果如下:

  示例四:

background: -moz-radial-gradient(bottom left, ellipse, #ace, #f96, #1E90FF);
background: -webkit-radial-gradient(bottom left, ellipse, #ace, #f96, #1E90FF);

 

  效果如下:

  示例三和示例四我们从效果中就可以看出,其形状不一样,示例三程圆形而示例四程椭圆形状,也是就是说他们存在形状上的差异。然而我们在回到两个示例的代码中,显然在示例三中设置其形状为 circle,而在示例四中 ellipse,换而言之在径向渐变中,我们是可以设置其形状的。

  示例五:

background: -moz-radial-gradient(ellipse closest-side, #ace, #f96 10%, #1E90FF 50%, #f96);
background: -webkit-radial-gradient(ellipse closest-side, #ace, #f96 10%, #1E90FF 50%, #f96);

 

  效果如下:

  示例六:

background: -moz-radial-gradient(ellipse farthest-corner, #ace, #f96 10%, #1E90FF 50%, #f96);
background: -webkit-radial-gradient(ellipse farthest-corner, #ace, #f96 10%, #1E90FF 50%, #f96);

 

  效果如下:

  从示例五和示例六中的代码中我们可以清楚知道,在示例五中我人应用了closest-side而在示例六中我们应用了farthest-corner。这样我们可以知道在径向渐变中我们还可以为其设置大小(Size):size的不同选项(closest-side, closest-corner, farthest-side, farthest-corner, contain or cover)指向被用来定义圆或椭圆大小的点。 示例:椭圆的近边VS远角 下面的两个椭圆有不同的大小。示例五是由从起始点(center)到近边的距离设定的,而示例六是由从起始点到远角的的距离决定的。分享一个最好用的UI前端框架!

  示例七:

background: -moz-radial-gradient(circle closest-side, #ace, #f96 10%, #1E90FF 50%, #f96);
background: -webkit-radial-gradient(circle closest-side, #ace, #f96 10%, #1E90FF 50%, #f96);

 

  效果如下:

  示例八:

 

  效果如下:

  示例七和示例八主要演示了圆的近边VS远边 ,示例七的圆的渐变大小由起始点(center)到近边的距离决定,而示例八的圆则有起始点到远边的距离决定。

  示例九:

background: -moz-radial-gradient(#ace, #f96, #1E90FF);
background: -webkit-radial-gradient(#ace, #f96, #1E90FF);

 

  效果如下:

  示例十:

background: -moz-radial-gradient(contain, #ace, #f96, #1E90FF);
background: -webkit-radial-gradient(contain, #ace, #f96, #1E90FF);

 

  效果如下:

  示例九和示例十演示了包含圆 。在这里你可以看到示例九的默认圈,同一渐变版本,但是被包含的示例十的圆。分享一个最好用的UI前端框架!

  最后我们在来看两个实例一个是应用了中心定位和full sized,如下所示:

/* Firefox 3.6+ */
 background: -moz-radial-gradient(circle, #ace, #f96);
 /* Safari 4-5, Chrome 1-9 */
 /* Can't specify a percentage size? Laaaaaame. */
 background: -webkit-gradient(radial, center center, 0, center center, 460, from(#ace), to(#f96));
 /* Safari 5.1+, Chrome 10+ */
 background: -webkit-radial-gradient(circle, #ace, #f96);

 

  效果如下:

  下面这个实例应用的是Positioned, Sized,请看代码和效果:

/* Firefox 3.6+ */
/* -moz-radial-gradient( [ || ,]? [ || ,]? , [, ]* ) */
background: -moz-radial-gradient(80% 20%, closest-corner, #ace, #f96);
/* Safari 4-5, Chrome 1-9 */
background: -webkit-gradient(radial, 80% 20%, 0, 80% 40%, 100, from(#ace), to(#f96));
/* Safari 5.1+, Chrome 10+ */
background: -webkit-radial-gradient(80% 20%, closest-corner, #ace, #f96);

 

  效果如下:

  到此关于 CSS3 的两种渐变方式我们都介绍完了。再浪费大家一点时间,我们看看CSS3 重复渐变(Repeating Gradient)的应用。

  如果您想重复一个渐变,您可以使用-moz-repeating-linear-gradient(重复线性渐变)和-moz-repeating-radial-gradient(重复径向渐变)。 在下面的例子,每个实例都指定了两个起止颜色,并无限重复。 分享一个最好用的UI前端框架!

background: -moz-repeating-radial-gradient(#ace, #ace 5px, #f96 5px, #f96 10px);
background: -webkit-repeating-radial-gradient(#ace, #ace 5px, #f96 5px, #f96 10px);
background: -moz-repeating-linear-gradient(top left -45deg, #ace, #ace 5px, #f96 5px, #f96 10px);
background: -webkit-repeating-linear-gradient(top left -45deg, #ace, #ace 5px, #f96 5px, #f96 10px);

 

  效果:

  有关于CSS3渐变的东西就完了,大家看完了肯定会想,他主要用在哪些方面呢?这个说起来就多了,最简单的就是制作背景,我们还可以应用其制作一些漂亮的按钮,还可以用他来制作patterns,我在这里列出几种制作patterns的示例代码吧:

  HTML代码:

<ul>
   <li class="gradient gradient1"></li>
   <li class="gradient gradient2"></li>
   <li class="gradient gradient3"></li>
   <li class="gradient gradient4"></li>
   <li class="gradient gradient5"></li>
   <li class="gradient gradient6"></li>
</ul>

 

  CSS 代码:

ul {
  overflow: hidden;
  margin-top: 20px;
}
li{
  width: 150px;
  height: 80px;
  margin-bottom: 10px;
  float: left;
  margin-right: 5px;
  background: #ace;
  /*Controls the size*/
  -webkit-background-size: 20px 20px;
  -moz-background-size: 20px 20px;
  background-size: 20px 20px;
}
                             
li.gradient1 {
  background-image: -webkit-gradient(
    linear,
    0 100%, 100% 0,
    color-stop(.25, rgba(255, 255, 255, .2)),
    color-stop(.25, transparent),
    color-stop(.5, transparent),
    color-stop(.5, rgba(255, 255, 255, .2)),
    color-stop(.75, rgba(255, 255, 255, .2)),
    color-stop(.75, transparent),
    to(transparent)
    );
  background-image: -moz-linear-gradient(
    45deg,
    rgba(255, 255, 255, .2) 25%,
    transparent 25%,
    transparent 50%,
    rgba(255, 255, 255, .2) 50%,
    rgba(255, 255, 255, .2) 75%,
    transparent 75%,
    transparent
    );
  background-image: -o-linear-gradient(
    45deg,
    rgba(255, 255, 255, .2) 25%,
    transparent 25%,
    transparent 50%,
    rgba(255, 255, 255, .2) 50%,
    rgba(255, 255, 255, .2) 75%,
    transparent 75%,
    transparent
  );
  background-image: linear-gradient(
    45deg,
    rgba(255, 255, 255, .2) 25%,
    transparent 25%,
    transparent 50%,
    gba(255, 255, 255, .2) 50%,
    rgba(255, 255, 255, .2) 75%,
    transparent 75%,
    transparent
    );
}
                         
li.gradient2 {
   background-image: -webkit-gradient(linear, 0 0, 100% 100%,
      color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent),
      color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)),
      color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent),
      to(transparent));
   background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
      transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
      transparent 75%, transparent);
   background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
      transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
      transparent 75%, transparent);
   background-image: linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
      transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
      transparent 75%, transparent);
}
                             
li.gradient3 {
  background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.5, transparent), to(transparent));
  background-image: -moz-linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent);
  background-image: -o-linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent);
  background-image: linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent);
}
                             
li.gradient4 {
  background-image: -webkit-gradient(linear, 0 0, 100% 0, color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.5, transparent), to(transparent));
  background-image: -moz-linear-gradient(0deg, rgba(255, 255, 255, .2) 50%, transparent 50%, transparent);
  background-image: -o-linear-gradient(0deg, rgba(255, 255, 255, .2) 50%, transparent 50%, transparent);
  background-image: linear-gradient(0deg, rgba(255, 255, 255, .2) 50%, transparent 50%, transparent);
}
                             
li.gradient5 {
  background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.25, #555), color-stop(.25, transparent), to(transparent)),
      -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, #555), color-stop(.25, transparent), to(transparent)),
      -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.75, transparent), color-stop(.75, #555)),
      -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.75, transparent), color-stop(.75, #555));
  background-image: -moz-linear-gradient(45deg, #555 25%, transparent 25%, transparent),
     -moz-linear-gradient(-45deg, #555 25%, transparent 25%, transparent),
     -moz-linear-gradient(45deg, transparent 75%, #555 75%),
     -moz-linear-gradient(-45deg, transparent 75%, #555 75%);
  background-image: -o-linear-gradient(45deg, #555 25%, transparent 25%, transparent),
     -o-linear-gradient(-45deg, #555 25%, transparent 25%, transparent),
     -o-linear-gradient(45deg, transparent 75%, #555 75%),
     -o-linear-gradient(-45deg, transparent 75%, #555 75%);
  background-image: linear-gradient(45deg, #555 25%, transparent 25%, transparent),
    linear-gradient(-45deg, #555 25%, transparent 25%, transparent),
    linear-gradient(45deg, transparent 75%, #555 75%),
    linear-gradient(-45deg, transparent 75%, #555 75%);
}
                             
li.gradient6 {
  background-image: -webkit-gradient(linear, 0 0, 0 100%, color-stop(.5, transparent), color-stop(.5, rgba(200, 0, 0, .5)), to(rgba(200, 0, 0, .5))),
     -webkit-gradient(linear, 0 0, 100% 0, color-stop(.5, transparent), color-stop(.5, rgba(200, 0, 0, .5)), to(rgba(200, 0, 0, .5)));
  background-image: -moz-linear-gradient(transparent 50%, rgba(200, 0, 0, .5) 50%, rgba(200, 0, 0, .5)),
     -moz-linear-gradient(0deg, transparent 50%, rgba(200, 0, 0, .5) 50%, rgba(200, 0, 0, .5));
  background-image: -o-linear-gradient(transparent 50%, rgba(200, 0, 0, .5) 50%, rgba(200, 0, 0, .5)),
     -o-linear-gradient(0deg, transparent 50%, rgba(200, 0, 0, .5) 50%, rgba(200, 0, 0, .5));
  background-image: linear-gradient(transparent 50%, rgba(200, 0, 0, .5) 50%, rgba(200, 0, 0, .5)),
     linear-gradient(0deg, transparent 50%, rgba(200, 0, 0, .5) 50%, rgba(200, 0, 0, .5));
}

 

  效果:分享一个最好用的UI前端框架!

  不错的效果吧,当然感兴趣的朋友可以到这里学习制作更多的不同效果。

0
1
分享到:
评论

相关推荐

    CSS3径向渐变radial-gradient实现波浪边框和内倒角的方法

    大佬给了一张优惠券图片(如下图),我一看,这波浪型的边框和内倒角用css写不出来吧,遂向大佬说明并要ui切图,大佬回答:css3可以实现。好吧,大佬都说可以实现了,还不赶紧去求谷哥,度娘。 实现内倒角 上代码,...

    CSS 实现渐变效果小结( linear-gradient线性渐变 和 radial-gradient径向渐变)

    径向渐变( radial-gradient ) background-image: radial-gradient(大小 形状 at 方向, 开始颜色, 中间颜色1, 中间颜色2, ..., 结束颜色 ); 大小 : 圆半径一个值 或者 椭圆半长轴和半短轴两个值 百分比 / 像素 形状 ...

    CSS3,线性渐变(linear-gradient)的使用总结

    在CSS3中,渐变分为线性渐变(linear-gradient)和径向渐变(radial-gradient)。本文将重点探讨线性渐变的使用方法。 一、线性渐变的基本语法 线性渐变的基本语法可以表示为: ```css background: linear-gradient...

    css3-image-gradient-hover.zip

    在CSS3中,有线性渐变(linear-gradient)和径向渐变(radial-gradient)两种类型。线性渐变沿着一条直线方向从一种颜色平滑过渡到另一种颜色,而径向渐变则从一个圆心向外扩散,颜色由内至外变化。这些渐变可以作为...

    前端开源库-filter-gradient

    在现代浏览器中,CSS3提供了线性渐变(linear-gradient)和径向渐变(radial-gradient)两种方式来创建渐变效果。然而,早期的IE浏览器,尤其是IE8及以下版本,不支持CSS3渐变,而是采用滤镜(filter)技术。`filter...

    HTML5&CSS3网页制作:CSS3径向渐变.pptx

    在网页设计领域,CSS3(层叠样式表第三版)引入了诸多新的特性和功能,其中一项便是径向渐变(Radial Gradient)。径向渐变使得网页元素的背景颜色可以按照圆形或椭圆形的方式平滑过渡,为设计带来了丰富的视觉效果...

    15种CSS3渐变颜色色板配色代码

    首先,我们要了解CSS3中的两种主要渐变类型:线性渐变(linear-gradient)和径向渐变(radial-gradient)。线性渐变沿着一个方向从一种颜色平滑过渡到另一种颜色,而径向渐变则从一个圆形或椭圆形中心向外扩散颜色。...

    CSS3实现内凹圆角的实例代码

    CSS3的径向渐变语法是`background-image: radial-gradient(中心位置, 起始颜色, 结束颜色);`。例如: ```css .raidal { height: 100px; width: 100px; background: radial-gradient(transparent 50%, blue 50%...

    css-gradient_脚本实例_

    首先,CSS渐变分为线性渐变(Linear Gradient)和径向渐变(Radial Gradient)。线性渐变沿着一个方向平滑过渡颜色,而径向渐变则从一个圆形或椭圆形的中心向外扩散颜色。在CSS中,我们可以通过`background-image`...

    CSS3样式前缀和线性渐变.docx

    此外,还可以使用`repeating-linear-gradient`和`repeating-radial-gradient`创建重复的线性渐变和径向渐变,这样颜色模式将在整个背景中不断重复。 总结起来,CSS3的兼容前缀和渐变特性是解决跨浏览器样式问题的...

    纯css3优惠券效果

    2. **边框与背景**:CSS3允许我们使用线性渐变、径向渐变和图案作为背景,这对于创建优惠券的精美边框和背景颜色过渡非常有用。 3. **阴影效果**:`box-shadow`和`text-shadow`属性可以为元素添加阴影,增加立体感...

    DIV+CSS创建网页-CSS3渐变属性.pptx

    本篇将详细讲解CSS3中的线性渐变、径向渐变以及重复渐变。 1. **线性渐变** 线性渐变允许颜色在一条直线上平滑过渡,这种效果通常用于创建水平或垂直的背景效果。在CSS3中,我们可以使用`linear-gradient()`函数来...

    纯CSS3实现的颜色渐变背景效果的实现代码.zip

    在CSS3中,颜色渐变是通过`background-image`属性实现的,它可以创建两种主要类型的渐变:线性渐变(linear-gradient)和径向渐变(radial-gradient)。下面我们将详细探讨这两种渐变的实现方法。 1. **线性渐变...

    纯css3 gradient属性制作6种渐变色的按钮样式

    三、径向渐变(Radial Gradient) 径向渐变从一个中心点向外扩散,可以创建出类似光晕的效果。基本语法如下: ```css button { background-image: radial-gradient(circle, red, blue); /* 其他按钮样式 */ } ```...

    CSS3渐变属性案例.pdf

    `repeating-radial-gradient(circle at 50% 50%, #E50743, #E8ED30 10%, #3FA62E 15%)`定义了一个以50% 50%位置为中心的圆形重复径向渐变,颜色从洋红色(#E50743)渐变至浅黄色(#E8ED30),然后在10%的位置变为青绿色...

    css背景色渐变

    1. `radial-gradient`函数:用于创建径向渐变,它同样接受颜色和位置参数,但形式略有不同。 ```css background-image: radial-gradient(circle at center, red, yellow); ``` 这里的`circle at center`表示以中心为...

    纯CSS3 gradient属性制作36种漂亮的html网页渐变按钮样式.zip

    首先,让我们了解CSS3中的两种主要类型的渐变:线性渐变(linear-gradient)和径向渐变(radial-gradient)。线性渐变沿直线方向从一种颜色平滑过渡到另一种颜色,而径向渐变则以圆心为中心,颜色从内向外扩散。 1....

    详解CSS3中使用gradient实现渐变效果的方法

    CSS3 Gradient分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。线性渐变在Webkit下的应用 CSS Code复制内容到剪贴板 -webkit-linear-gradient( [ || ,]? ,  [, ]* )//最新发布书写语法   第...

    CSS3中border-radius、box-shadow与gradient那点事儿

    然后,`gradient`即渐变,CSS3提供了两种类型的渐变:线性渐变(linear-gradient)和径向渐变(radial-gradient)。线性渐变沿着一条直线方向变化颜色,可以指定起点和方向,例如`background: linear-gradient(to ...

Global site tag (gtag.js) - Google Analytics