[css]切角

使用css实现一个切角的功能,有以下几种方案:

html 复制代码
<div class="box"></div>

方案一:linear-gradient

linear-gradient配合backgroud-image可以实现背景渐变的效果。linear-gradient的渐变过渡区的占比是总的空间(高度或宽度)减去上下两个着色块空间占比剩下的空间,所以如果后一个颜色的百分比比前一个颜色小的话,会自动将当前颜色值的百分比设置为前面颜色中的最大百分比值,也就是说

css 复制代码
background:linear-gradient(
    red 50%,
    orange 40%
);

其实相当于

css 复制代码
background:linear-gradient(
    red 50%,
    orange 50%
);

其效果就是过渡区没有空间,即没有过度效果,两个颜色之间是一条直线。

所以可以使用这种方式实现切角效果:

css 复制代码
div{
    margin: 50px;
    width: 200px;
    height: 100px;
}
.box{
    background:linear-gradient(135deg,transparent 10px,lightskyblue 0) left top,
               linear-gradient(-135deg,transparent 10px,lightskyblue 0) right top,
               linear-gradient(-45deg,transparent 10px,lightskyblue 0) right bottom,
               linear-gradient(45deg,transparent 10px,lightskyblue 0) left bottom;
    background-size: 50% 50%;
    background-repeat: no-repeat;
}

方案二:clip-path

clip-path: polygon可以将图形进行切割。图形的左上角为(0,0)坐标,根据坐标进行切割。

所以假设需要切一个20px的角,可以设置:

css 复制代码
.box{
    width: 200px;
    height: 100px;
    background-color: lightskyblue;
    clip-path: polygon(20px 0,calc(100% - 20px) 0,
                        100% 20px, 100% calc(100% - 20px),
                        calc(100% - 20px) 100%, 20px 100%,
                        0 calc(100% - 20px), 0 20px);
}

边框

上述两种方案如果加上边框,边框还是矩形,无法实现切角效果。

结合clip-path和linear-gradient可以实现加上边框的效果。

首先把linear-gradient的第一个颜色设成跟border同一个颜色,获得如下效果:

css 复制代码
.box {
    background: linear-gradient(-45deg, #289eef 8px, lightskyblue 0) bottom right,
        linear-gradient(45deg, #289eef 8px, lightskyblue 0) bottom left,

        linear-gradient(135deg, #289eef 8px, lightskyblue 0) top left,

        linear-gradient(-135deg, #289eef 8px, lightskyblue 0) top right;
    background-size: 50% 51%;
    background-repeat: no-repeat;
    border: solid 1px #289eef;

}

使用clip-path把角切掉,这里注意取值的计算,如果linear-gradient的分割线是8px,88 + 88再开根号,那么clip-path的取值应该是11px。

css 复制代码
.box {
    clip-path: polygon(11px 0, calc(100% - 11px) 0,

            100% 11px, 100% calc(100% - 11px),

            calc(100% - 11px) 100%, 11px 100%,

            0 calc(100% - 11px), 0 11px);

    background: linear-gradient(-45deg, #289eef 8px, lightskyblue 0) bottom right,
        linear-gradient(45deg, #289eef 8px, lightskyblue 0) bottom left,

        linear-gradient(135deg, #289eef 8px, lightskyblue 0) top left,

        linear-gradient(-135deg, #289eef 8px, lightskyblue 0) top right;

    background-size: 50% 51%;

    background-repeat: no-repeat;

    border: solid 1px #289eef;

}
相关推荐
Dxy12393102161 天前
CSS常用样式详解:从基础到进阶的全面指南
前端·css
爱敲代码的菜菜1 天前
【测试】自动化测试
css·selenium·测试工具·junit·自动化·xpath
酉鬼女又兒1 天前
入门前端CSS 媒体查询全解析:从入门到精通,打造完美响应式布局(可用于备赛蓝桥杯Web应用开发)
前端·css·职场和发展·蓝桥杯·前端框架·html5·媒体
结网的兔子1 天前
前端学习笔记——Element Plus 栅格布局系统示例
前端·javascript·css
Predestination王瀞潞1 天前
5.4.1 通信->WWW万维网内容访问标准(W3C):WWW(World Wide Web)基本信息&核心设计目标&现实意义
css·网络·网络协议·html·url·www
木斯佳1 天前
前端八股文面经大全:阿里云AI应用开发二面(2026-03-21)·面经深度解析
前端·css·人工智能·阿里云·ai·面试·vue
spencer_tseng1 天前
secure-keyboard.js secure-keyboard.css
javascript·css
小J听不清2 天前
CSS 外边距(margin)全解析:取值规则 + 实战用法
前端·javascript·css·html·css3
小J听不清2 天前
CSS 边框(border)全解析:样式 / 宽度 / 颜色 / 方向取值
前端·javascript·css·html·css3
敲代码的约德尔人2 天前
CSS 新特性完全指南:2026 年你必须掌握的 5 个新能力
css