美文网首页
css3渐变

css3渐变

作者: 张正yi | 来源:发表于2018-02-01 11:09 被阅读0次

    一.线性渐变linear-gradient (向下/向上/向左/向右/对角方向)
    1.使用方法:

      background:-webkit-linear-gradient(red,blue);
      background:-moz-linear-gradient(red,blue);
      background:linear-gradient(red,blue);
    

    2.语法:

    // 1:基本用法
    background: linear-gradient(direction, color-stop1, color-stop2, ...);
    // direction可以为left,right,bottom,top也可以为left top 表示左上角。
    // 2 使用角度
    background: linear-gradient(angle, color-stop1, color-stop2);
    // 如 0deg,90deg
    

    3.补充
    CSS3 渐变也支持透明度(transparent),可用于创建减弱变淡的效果。如下:

    background: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); 
    

    二.径向渐变radial-gradient (由它们的中心定义)
    1.使用方法:

      background:-webkit-radial-gradient(red,blue);
      background:-webkit-radial-gradient(100px 50px,circle,red,blue);  
      //形状: ellipse、circle或者具体数值或百分比,也可以是关键字(最近端,最近角,最远端,最远角,包含或覆盖
      // (closest-side, closest-corner, farthest-side, farthest-corner, contain or cover));  
      // firefox目前只支持关键字
    

    2.语法:

    background: radial-gradient(center, shape size, start-color, ..., last-color);
    // 径向渐变 - 颜色结点均匀分布(默认情况下)
    // shape 参数定义了形状。它可以是值 circle 或 ellipse。其中,circle 表示圆形,ellipse 表示椭圆形。默认值是 ellipse。
    

    实例1:使用linear-gradient实现切角画册
    关键代码:(四个切角)

    background: -webkit-linear-gradient(45deg, transparent 10px, #fff 10px),
                -webkit-linear-gradient(135deg, transparent 10px, #fff 10px),
                -webkit-linear-gradient(225deg, transparent 10px, #fff 10px),
                -webkit-linear-gradient(315deg, transparent 10px, #fff 10px);
                background-position: bottom left, bottom right, top right, top left;
                background-size: 55% 55%;
                background-repeat: no-repeat;
    

    使用到的知识点(补充)

    水平居中
    1、text-align: center. 
        这个大家一般都用过,我就稍微扯一点:只要父级的div设置了这个属性,里面的文字就会居中(包括图片),这个属性只对行内元素起作用。
        如果想要居中的是块级元素,它就无能为力了,要么把这个块级元素display: inline-block;要么换另一种方法。
            .box-wrap {
                text-align: center;
            }    
            .box {
              display:inline-block;
            }
            要点:要居中的必须是行内元素才有作用
    
        2、margin: 0 auto; 
            这个算是一个大招了,想让谁居中,就给谁设置上这个属性,左右居中妥了。即使父级使用了绝对定位或者相对定位,也是妥妥的好使。但是必须加上宽度width,否则白瞎。
          .box {
            margin: 0 auto;
            width: 100px;
          }
             要点: 
              1、必须给要居中的元素设置宽度 
              2、这个家伙不能是浮动元素,否则居中失效 
              3、没有声明DOCTYPE会导致居中失效
    

    具体实现:
    效果如下:


    1.pic.jpg 17.pic.jpg

    如下代码,根据linear-gradient弄出四个切角,并改为透明色。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>linear-gradient</title>
        <style>
            .main {
                position: relative;
                width: 520px;
                height: 720px;
                margin: 100px auto;
                text-align: center;
                background-color: #e3e3e3;
                border-radius: 20px;
            }
            .tucked-corners-top {
                position: relative;
                display: inline-block;
                width: 400px;
                min-height: 200px;
                margin: 40px auto;
                padding: 20px;
                background-color: #FFF;
                background: -webkit-linear-gradient(45deg, transparent 10px, #fff 10px),
                -webkit-linear-gradient(135deg, transparent 10px, #fff 10px),
                -webkit-linear-gradient(225deg, transparent 10px, #fff 10px),
                -webkit-linear-gradient(315deg, transparent 10px, #fff 10px);
                background: -moz-linear-gradient(45deg, transparent 10px, #fff 10px),
                -moz-linear-gradient(135deg, transparent 10px, #fff 10px),
                -moz-linear-gradient(225deg, transparent 10px, #fff 10px),
                -moz-linear-gradient(315deg, transparent 10px, #fff 10px);
                background: -o-linear-gradient(45deg, transparent 10px, #fff 10px),
                -o-linear-gradient(135deg, transparent 10px, #fff 10px),
                -o-linear-gradient(225deg, transparent 10px, #fff 10px),
                -o-linear-gradient(315deg, transparent 10px, #fff 10px);
                background-position: bottom left, bottom right, top right, top left;
                background-size: 55% 55%;
                background-repeat: no-repeat;
                -moz-box-shadow: 0 20px 10px -20px rgba(0, 0, 0, .5);
                -webkit-box-shadow: 0 20px 10px -20px rgba(0, 0, 0, .5);
                box-shadow: 0 20px 10px -20px rgba(0, 0, 0, .5);
            }
        </style>
    </head>
    <body>
    <div class="main">
        <div class="tucked-corners-top">
            <div class="tucked-corners-bottom">
                <img src="练习/a.jpg" height="600" width="400"/>
            </div>
        </div>
    </div>
    </body>
    </html>
    

    为达到更好的效果,添加如下代码:

            [class*='tucked-corners-']::before,
            [class*='tucked-corners-']::after {
                content: '';
                position: absolute;
                height: 20px;
                width: 80px;
                -webkit-box-shadow: 0 8px 15px -7px rgba(0, 0, 0, .5);
                -moz-box-shadow: 0 8px 15px -7px rgba(0, 0, 0, .5);
                box-shadow: 0 8px 15px -7px rgba(0, 0, 0, .5);
                box-shadow: none \9; /* IE9 */
            }
    
            .tucked-corners-top::before,
            .tucked-corners-top::after {
                top: -10px;
            }
    
            .tucked-corners-bottom::before,
            .tucked-corners-bottom::after {
                bottom: -10px;
            }
    
            .tucked-corners-top::before,
            .tucked-corners-bottom::before {
                left: -42px;
            }
    
            .tucked-corners-top::after,
            .tucked-corners-bottom::after {
                right: -42px;
            }
    
            .tucked-corners-top::before {
                -webkit-transform: rotate(-45deg);
                -moz-transform: rotate(-45deg);
                -ms-transform: rotate(-45deg);
                -o-transform: rotate(-45deg);
                transform: rotate(-45deg);
            }
    
            .tucked-corners-top::after {
                -webkit-transform: rotate(45deg);
                -moz-transform: rotate(45deg);
                -ms-transform: rotate(45deg);
                -o-transform: rotate(45deg);
                transform: rotate(45deg);
            }
    
            .tucked-corners-bottom::before {
                -webkit-transform: rotate(-135deg);
                -moz-transform: rotate(-135deg);
                -ms-transform: rotate(-135deg);
                -o-transform: rotate(-135deg);
                transform: rotate(-135deg);
            }
    
            .tucked-corners-bottom::after {
                -webkit-transform: rotate(135deg);
                -moz-transform: rotate(135deg);
                -ms-transform: rotate(135deg);
                -o-transform: rotate(135deg);
                transform: rotate(135deg);
            }
    

    实例2:利用css3径向渐变做一张优惠券
    关键代码:

    background: radial-gradient(transparent 0, transparent 5px, #F39B00 5px);
    background-size: 15px 15px;
    background-position: 9px 3px;
    

    具体实现如下:

    HTML代码:
        <div class="stamp stamp01">
            <div class="par">
                <p>XXXXXX折扣店</p><sub class="sign">¥</sub>
                <span>50.00</span><sub>优惠券</sub>
                <p>订单满100.00元</p>
            </div>
            <div class="copy">副券<p>2015-08-13<br>2016-08-13</p></div>
            <i></i>
        </div>  
    
        CSS代码:
            .stamp {
                width: 387px;height: 140px;padding: 0 10px;position: relative;overflow: hidden;
             }
            .stamp:before {content: '';position: absolute;top:0;bottom:0;left:10px;right:10px;z-index: -1;}
            .stamp:after {
              content: '';position: absolute;
              left: 10px;top: 10px;right: 10px;bottom: 10px;
              box-shadow: 0 0 20px 1px rgba(0, 0, 0, 0.5);z-index: -2;}
            .stamp i{
              position: absolute;left: 20%;top: 45px;height: 190px;width: 390px;
              background-color: rgba(255,255,255,.15);transform: rotate(-30deg);
              }
            .stamp .par{
              float: left;padding: 16px 15px;width: 220px;
              border-right:2px dashed rgba(255,255,255,.3);text-align: left;
              }
            .stamp .par p{color:#fff;}
            .stamp .par span{font-size: 50px;color:#fff;margin-right: 5px;}
            .stamp .par .sign{font-size: 34px;}
            .stamp .par sub{position: relative;top:-5px;color:rgba(255,255,255,.8);}
            .stamp .copy{
              display: inline-block;padding:21px 14px;width:100px;
              vertical-align: text-bottom;font-size: 30px;
              color:rgb(255,255,255);
              }
            .stamp .copy p{font-size: 16px;margin-top: 15px;}
            .stamp01{
                background: #F39B00;
                background: radial-gradient(rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 5px, #F39B00 5px);
                background-size: 15px 15px;
                background-position: 9px 3px;
            }
            .stamp01:before{
                background-color:#F39B00;
            }
    

    效果如下:


    18.pic.jpg

    相关文章

      网友评论

          本文标题:css3渐变

          本文链接:https://www.haomeiwen.com/subject/qazrzxtx.html