• 技术文章 >web前端 >前端问答

    css径向渐变可以改变角度吗

    青灯夜游青灯夜游2022-08-12 17:04:32原创343

    css径向渐变不可以改变角度。css径向渐变使用radial-gradient()函数实现,语法“background:radial-gradient(类型 大小 at 位置, 开始颜色, …, 终止颜色 );”;该函数可以设置径向渐变的渐变形状(圆形或椭圆形)、渐变大小(最近端,最近角,最远端,最远角,包含或覆盖)、渐变位置和渐变的起止颜色,但因此无法设置径向渐变的角度。

    大前端零基础入门到就业:进入学习

    本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。

    CSS3 径向渐变

    radial-gradient() 函数用径向渐变创建" 图像 "。径向渐变由中心点定义。

    径向渐变允许你指定渐变的形状(圆形或椭圆形)、大小(最近端,最近角,最远端,最远角,包含或覆盖 (closest-side, closest-corner, farthest-side, farthest-corner, contain or cover))、位置和渐变的起止颜色。颜色起止(Color stops):就像用线性渐变,你应该沿着渐变线定义渐变的起止颜色。

    实例:以下实例演示了径向渐变 - 颜色结点均匀分布:

    #grad {
      background-image: radial-gradient(red, green, blue);
    }

    1.png

    语法:

    background-image: radial-gradient( shape size at position, start-color, …, last-color );

    <radial - gradient> = radial-gradient( [ [ <shape> || <size> ] [ at <position> ]?,| at <position> ,] ? <color-stop> ]+)

    描述
    shape确定圆的类型:
    • ellipse (默认): 指定椭圆形的径向渐变。
    • circle :指定圆形的径向渐变
    size定义渐变的大小,可能值:
    • farthest-corner (默认) : 指定径向渐变的半径长度为从圆心到离圆心最远的角
    • closest-side :指定径向渐变的半径长度为从圆心到离圆心最近的边
    • closest-corner : 指定径向渐变的半径长度为从圆心到离圆心最近的角
    • farthest-side :指定径向渐变的半径长度为从圆心到离圆心最远的边
    position定义渐变的位置。可能值:
    • center(默认):设置中间为径向渐变圆心的纵坐标值。
    • top:设置顶部为径向渐变圆心的纵坐标值。
    • bottom:设置底部为径向渐变圆心的纵坐标值。
    start-color, ..., last-color用于指定渐变的起止颜色。

    下面为了更好的理解radial-gradient()具体的用法,我们主要通过不同的示例来对比CSS3径向渐变的具体用法

    示例一:

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

    效果:

    1.png

    示例二:

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

    效果如下:

    2.png

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

    示例三:

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

    效果如下:

    3.png

    示例四:

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

    效果如下:

    4.png

    示例三和示例四我们从效果中就可以看出,其形状不一样,示例三程圆形而示例四程椭圆形状,也是就是说他们存在形状上的差异。然而我们在回到两个示例的代码中,显然在示例三中设置其形状为 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);

    效果如下:

    5.png

    示例六:

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

    效果如下:

    6.png

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

    示例七:

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

    效果如下:

    7.png

    示例八:

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

    效果如下:

    8.png

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

    示例九:

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

    效果如下:

    9.png

    示例十:

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

    效果如下:

    10.png

    示例九和示例十演示了包含圆 。在这里你可以看到示例九的默认圈,同一渐变版本,但是被包含的示例十的圆。

    最后我们在来看两个实例一个是应用了中心定位和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);

    效果如下:

    11.png

    下面这个实例应用的是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);

    效果如下:

    12.png

    扩展知识:

    我们看看CSS3 重复渐变(Repeating Gradient)的应用

    如果您想重复一个渐变,您可以使用-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);

    效果:

    13.png 14.png

    有关于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));
    }

    效果:

    15.png

    (学习视频分享:css视频教程

    以上就是css径向渐变可以改变角度吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:css 径向渐变
    上一篇:css3怎么设置字体翻转 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 纯CSS实现多级导航联动(附图文示例)• 一张图帮你完全掌握CSS所有属性!• webpack打包CSS详细流程解析• 示例解析webpack提取css为单独文件(附代码)• webpack处理css浏览器兼容性问题
    1/1

    PHP中文网