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

如何用CSS实现目标线性渐变边框?当前代码仅显示部分边框

实现线性渐变边框问题解决

渐变边框效果示例

我希望使用CSS实现图中的线性渐变边框,尝试了以下代码:

.demo-mode {
  background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0) 62.72%);
  box-shadow: inset 0 100vw #111026;
  border: 1px solid transparent;
  border-radius: 24px;
}

完整代码片段:

.wrapper {
padding: 20px;
background: #111026;
}
.demo-mode {
  background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0) 62.72%);
  box-shadow: inset 0 100vw #111026;
  border: 1px solid transparent;
  border-radius: 24px;
  width: 250px;
  height: 250px
}
<div class="wrapper">
<div class="demo-mode"></div>
</div>

但当前效果仅显示左侧、右侧和底部边框,顶部边框未显示。


问题原因

box-shadow: inset 0 100vw #111026是从顶部向下填充内部背景,直接覆盖了顶部的渐变边框区域,导致顶部边框无法显示。

解决方案

改用双层背景配合background-clip和background-origin属性实现,这是更规范的渐变边框实现方式:

修改后的代码:

.wrapper {
  padding: 20px;
  background: #111026;
}
.demo-mode {
  /* 内部纯色背景 */
  background-color: #111026;
  /* 渐变边框背景 */
  background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0) 62.72%);
  /* 第一层背景限制在padding区域,第二层延伸到边框区域 */
  background-clip: padding-box, border-box;
  /* 第一层从padding区域开始绘制,第二层从边框区域开始 */
  background-origin: padding-box, border-box;
  border: 1px solid transparent;
  border-radius: 24px;
  width: 250px;
  height: 250px;
}

替代方案(调整阴影写法)

如果想保留原思路,也可以把阴影改为从四周向内填充,避免覆盖顶部边框:

.demo-mode {
  background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0) 62.72%);
  box-shadow: inset 0 0 0 100vw #111026; /* 修改此处 */
  border: 1px solid transparent;
  border-radius: 24px;
  width: 250px;
  height: 250px;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:10:09