CSS实现透明内层+渐变边框的优雅方案

效果展示

实际应用场景 :毛玻璃效果,希望有渐变边框的同时,内层也是渐变背景(需要透最外面的背景色)

解决

border-image 方案❌

/* 这个方法不行 */

直接用 border-image会破坏圆角效果:border-image和 border-radius是互斥的

javascript 复制代码
.element {
  border: 1px solid;
  border-image: linear-gradient(...) 1;
  border-radius: 22px; /* 这个会失效! */
}

伪元素和CSS mask✔

html 复制代码
<!-- template -->
<div class="wrap">
    <div class="content">
        test
    </div>
</div>
javascript 复制代码
// css
.wrap {
    position: relative;
    border-radius: 22px;

    /* 用伪元素实现边框 */
    &::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        border-radius: 22px;
        padding: 0.55px; /* 边框宽度 */
        background: linear-gradient(
            180deg,
            rgba(255, 255, 255, 0.3) 0%,
            rgba(255, 255, 255, 0.06) 100%
        );
        
		/* 关键:mask技术实现"边框挖空"效果 */
        mask:
            linear-gradient(#fff 0 0) content-box,
            linear-gradient(#fff 0 0);
        -webkit-mask-composite: xor;
        mask-composite: exclude;
        pointer-events: none;
        z-index: 0;
    }

    /* 内容区域在伪元素之上 */
    & > * {
        position: relative;
        z-index: 1;
    }
}

/* 内层内容区域 */
.content {
    background: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0.1) 0%,
        rgba(255, 255, 255, 0.02) 100%
    );
}
  1. 伪元素的妙用

    使用 ::before伪元素专门负责边框绘制

    主元素保持透明,不干扰背景显示,伪元素的层级在内容之下(z-index: 0)

  2. mask

    它的工作原理:

    创建两个相同的蒙版

    第一个蒙版覆盖 content-box(内容区域)

    第二个蒙版覆盖整个元素

    使用 xor运算,实现"挖空"效果,只保留边框区域

相关推荐
zhiyouTech几秒前
从“被看见“到“被信任“:关于信源评级机制的一点观察
大数据·前端·人工智能
Hashan2 分钟前
Vibe Coding 下前后端怎么对接接口?后端不给力的兜底方案
前端·后端·vibecoding
你挚爱的强哥1 小时前
【sgKeyboard】自定义组件:虚拟键盘
前端·javascript·计算机外设
锅里游的鱼吖1 小时前
echarts自定义折线图
前端·javascript·数据库
hunteritself1 小时前
卷卷卷!GPT-6 Sol、Luna 正式发布,OpenAI 开始卷价格了
大数据·前端·人工智能·深度学习·transformer
何何____2 小时前
Vue 全局事件总线详解
前端·javascript·vue.js
涉密IT资质笔记2 小时前
涉密人员脱密期管理规范:期限分级模型、就业限制边界与违规认定标准
java·服务器·前端·网络·数据库
u0111026752 小时前
工具页案例图如何编写 alt让图片说明与处理场景对应
java·前端·javascript·图像处理·人工智能·算法·ai作画
事圆则缓3 小时前
Flutter 状态管理框架对比(五):GetX 的响应式、依赖注册与生命周期
前端·javascript·flutter
广州智造3 小时前
Radioss复合材料使用的单元属性
前端·设计·cad·建模·cae·radioss