css如何制作切割盒子(clip-path)

138 阅读2分钟

这个问题也是我在自学前端的时候,练习模仿淘宝商城页面出现的,淘宝商城登录页面如下:

image.png

可以看到右上角有一个切了角度的二维码标志。

首先我找了张二维码图片,并把他做成绝对定位后,保持在父盒子的右上角

.barcode img {
        position:absolute;
        top:0;
        right:0;
        width:60px;
        height:60px;
    }

这样写完后大致的效果是这样:\

image.png

接着我想要模仿淘宝的右上角切角二维码,我查了很多资料发现了一种方法是使用

background-img里的linear-gradient属性,但是这个方法只能设置纯色盒子的切割,不能用于img元素上。

后来我查阅资料发现css3中有一个clip-path属性,意思是按照路径切割,保留坐标区域内部的图案。

其中clip-path:polygon()意思是按照多边形进行切割,里面可以多对坐标,多对坐标围城的路径就是要保留的部分。

在二维码案例中,可以如下设置,就是第一个位置是(0,0)也就是左上角,第二个是(100%,0)也就是右上角,第三个是(100%,100%)也就是右下角,作用就是只保留左上角、右上角和右下角的部分,其余部分舍弃。

.barcode img {
        position:absolute;
        top:0;
        right:0;
        width:60px;
        height:60px;
        clip-path: polygon(0 0, 100% 0, 100% 100%);
    }

然后登录页面的二维码就大功告成了!

image.png

同理,右上角的“扫码登录更安全”这个盒子是不规则形状,同样也可以用

首先把盒子的位置摆好:

image.png

.barcodeTips {
        position: absolute;
        width: 130px;
        height: 25px;
        font-size: 10px;
        background-color:#fffbed;
        color: #d19b5b;
        line-height: 25px;
        top: 10px;
        right: 45px;
    }

之后加入切割

.barcodeTips {
        position: absolute;
        width: 130px;
        height: 25px;
        font-size: 10px;
        background-color:#fffbed;
        color: #d19b5b;
        line-height: 25px;
        clip-path: polygon(0 0, 95% 0, 95% 35%, 100% 50%, 95% 75%,95% 100%,0 100%);
        top: 10px;
        right: 45px;
    }

image.png

一个类似的图案就产生了!