CSS3 之 渐变

1.线性渐变

    .linear{
             background:#f1f1f1;
             background: -moz-linear-gradient(top, #f8f8f8 0%, #ddd 100%);/*firefox*/
             background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#ddd));/*old rules- safari,chrome*/
             background: -webkit-linear-gradient(top, #f8f8f8 0%,#ddd 100%);/*new rules- safari,chrome*/
             background: -o-linear-gradient(top, #f8f8f8 0%,#ddd 100%);/*opera*/
             background: -ms-linear-gradient(top, #f8f8f8 0%,#ddd 100%);/*ie*/
             background:filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#f8f8f8, endColorstr=#e6e6e6);/*IE<9>*/
                    -ms-filter: "progid:DXImageTransform.Microsoft.gradient (GradientType=0, startColorstr=#f8f8f8, endColorstr=#e6e6e6)";/*IE8+*/
             background: linear-gradient(top, #f8f8f8 0%,#ddd 100%);
    }
       /*带有角度的渐变*/
    .deg0 { 
    background: -moz-linear-gradient(0deg, #ace, #f96);
    background: -webkit-gradient(linear,0 50%,100% 50%,from(#ace),to(#f96));
    background: -webkit-linear-gradient(0deg, #ace, #f96);
    background: -o-linear-gradient(0deg, #ace, #f96);
    }
    .deg45 { 
    background: -moz-linear-gradient(45deg, #ace, #f96);
    background: -webkit-gradient(linear,0 100%,100% 0%,from(#ace),to(#f96));
    background: -webkit-linear-gradient(45deg, #ace, #f96);
    background: -o-linear-gradient(45deg, #ace, #f96);
    }
    .deg90 {
    background: -moz-linear-gradient(90deg, #ace, #f96);
    background: -webkit-gradient(linear,50% 100%,50% 0%,from(#ace),to(#f96));
    background: -webkit-linear-gradient(90deg, #ace, #f96);
    background: -o-linear-gradient(90deg, #ace, #f96);
    }
    .deg135 { 
    background: -moz-linear-gradient(135deg, #ace, #f96);
    background: -webkit-gradient(linear,100% 100%,0 0,from(#ace),to(#f96));
    background: -webkit-linear-gradient(135deg, #ace, #f96);
    background: -o-linear-gradient(135deg, #ace, #f96);
    }
    .deg180 { 
    background: -moz-linear-gradient(180deg, #ace, #f96);
    background: -webkit-gradient(linear,100% 50%,0 50%,from(#ace),to(#f96));
    background: -webkit-linear-gradient(180deg, #ace, #f96);
    background: -o-linear-gradient(180deg, #ace, #f96);
    }
    .deg225 {
    background: -moz-linear-gradient(225deg, #ace, #f96);
    background: -webkit-gradient(linear,100% 0%,0 100%,from(#ace),to(#f96));
    background: -webkit-linear-gradient(225deg, #ace, #f96);
    background: -o-linear-gradient(225deg, #ace, #f96);
    }
    .deg270 {
    background: -moz-linear-gradient(270deg, #ace, #f96);
    background: -webkit-gradient(linear,50% 0%,50% 100%,from(#ace),to(#f96));
    background: -webkit-linear-gradient(270deg, #ace, #f96);
    background: -o-linear-gradient(270deg, #ace, #f96);
    }
    .deg315 {
    background: -moz-linear-gradient(315deg, #ace, #f96);
    background: -webkit-gradient(linear,0% 0%,100% 100%,from(#ace),to(#f96));
    background: -webkit-linear-gradient(315deg, #ace, #f96);
    background: -o-linear-gradient(315deg, #ace, #f96);
    }
    .deg360 {
    background: -moz-linear-gradient(360deg, #ace, #f96);
    background: -webkit-gradient(linear,0 50%,100% 50%,from(#ace),to(#f96));
    background: -webkit-linear-gradient(360deg, #ace, #f96);
    background: -o-linear-gradient(360deg, #ace, #f96);
    }
                }
    <!--html结构-->
    <div class="linear"></div>

2.径向渐变

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

示例一:

    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%);

示例三:

    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)到近边的距离设定的,而示例六是由从起始点到远角的的距离决定的。*/

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

    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);

4.渐变实例
HTML代码:

    <style>
        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));
    }
    </style>
    <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>

效果图:
这里写图片描述

/来源: http://www.w3cplus.com/content/css3-gradient/

repeating-linear-gradient,来感受一下:
这里写图片描述

来源: https://gold.xitu.io/post/583e97c961ff4b006b662f5e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值