2023-06-12 04:13:22
使用CSS绘制带有缺口的三角形可通过伪元素叠加或clip-path属性实现,以下是具体方法:
方案一:伪元素叠加法通过::before和::after伪元素分别创建两个三角形,组合成缺口效果。
主三角形:使用border技巧生成(如设置宽高为0,通过边框宽度和颜色形成三角形)。
缺口部分:用另一个伪元素覆盖主三角形的局部区域,形成缺口。
创建主三角形:.triangle { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid black; position: relative;}
添加缺口(通过::after覆盖):.triangle::after { content: ''; position: absolute; width: 30px; height: 30px; background: white; /* 缺口颜色需与背景一致 */ top: 20px; /* 调整缺口位置 */ left: 50%; transform: translateX(-50%);}
通过多边形路径直接裁剪出缺口三角形。
直接定义多边形路径:.triangle-clip { width: 100px; height: 100px; background: black; clip-path: polygon(50% 0%, /* 顶部中点 */0% 100%, /* 左下角 */100% 100%, /* 右下角 */50% 30% /* 缺口底部中点(调整30%控制缺口高度) */);}
代码简洁,无需额外元素。
缺口形状更灵活(如可改为弧形缺口)。
需注意浏览器对clip-path的支持(部分旧浏览器需添加-webkit-前缀)。
优点:兼容性好,适合需要动态调整缺口或复杂动画的场景。
缺点:需计算定位,代码稍冗长。
优点:代码简洁,形状控制精确。
缺点:兼容性略低,复杂缺口需手动计算坐标。
若需缺口随交互变化(如悬停时缺口扩大),可结合CSS变量或JavaScript动态修改参数:
.triangle-dynamic { --gap-size: 20px; clip-path: polygon( 50% 0%, 0% 100%, 100% 100%, 50% calc(30% + var(--gap-size)) ); transition: --gap-size 0.3s;}.triangle-dynamic:hover { --gap-size: 40px; /* 悬停时缺口变大 */}根据需求选择合适方案,伪元素法适合兼容性优先的场景,clip-path法适合现代浏览器下的简洁实现。