You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CSS中实现边框局部透明并适配图片/渐变背景?

实现局部透明边框并透出背景的方案

根据你的需求,要实现边框局部透明、直接透出元素背景(图片/渐变均可)的效果,推荐以下两种无需伪元素蒙版的CSS方案:

方案一:使用CSS Mask(灵活适配任意缺口位置)

通过遮罩(mask)属性,在边框对应位置留出透明区域,元素的背景会自然透过该区域显示,完全无需手动匹配背景颜色。

示例代码(以顶部中间缺口为例):

.target-element {
  width: 300px;
  height: 150px;
  /* 基础边框样式 */
  border: 2px solid #333;
  /* 元素自身背景(图片/渐变都支持) */
  background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
  /* 遮罩设置:顶部中间创建透明缺口 */
  -webkit-mask: 
    /* 第一个渐变:顶部中间20px高、80px宽的透明区域 */
    linear-gradient(transparent 20px, black 20px) top center / 80px 100% no-repeat,
    /* 第二个渐变:完整覆盖元素的不透明遮罩 */
    linear-gradient(black, black);
  mask: 
    linear-gradient(transparent 20px, black 20px) top center / 80px 100% no-repeat,
    linear-gradient(black, black);
  /* 遮罩合成规则:将两个遮罩的重叠区域设为透明 */
  -webkit-mask-composite: xor;
  mask-composite: exclude;
}

原理:通过两层遮罩的组合,在边框对应位置“挖”出透明缺口,元素背景直接透过缺口展示,完全适配图片或渐变背景。

方案二:使用Border Image(适合简单线性缺口)

如果缺口是规则的线性分布(如左右/上下的一段透明),可以用border-image直接定义带透明段的边框:

示例代码(左右两侧留透明缺口):

.target-element {
  width: 300px;
  height: 150px;
  /* 边框设为透明,用border-image填充样式 */
  border: 2px solid transparent;
  /* 定义带透明段的渐变边框图像 */
  border-image: linear-gradient(to right, #333 15%, transparent 15%, transparent 85%, #333 85%) 1;
  /* 元素背景示例 */
  background: url('your-background-image.jpg') center/cover;
}

原理:将渐变作为边框图像,其中transparent段对应边框的透明区域,元素背景会直接透过该区域显示。

内容的提问来源于stack exchange,提问作者Gingko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:55:25