带有渐变光晕

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>最终版无缝边框 Demo</title>
    <style>
        html {
            font-size: 16px;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            margin: 0;
            padding: 20px;
            box-sizing: border-box;
            background-color: #f0f2f5;
        }

        .display-box {
            display: inline-flex;
            flex-direction: column;
            position: relative; 
            
            min-width: 200px;
            max-width: 560px;
            min-height: 200px;
            max-height: 500px;

            background-color: #ffffff;
            border-radius: 8px; /* 圆角半径 */
            box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
            
            /* 新增:隐藏超出容器的部分,用于裁剪光晕 */
            overflow: hidden;
        }
        
        .display-box::before {
            content: '';
            position: absolute;
            inset: 0;
            
            border-radius: inherit;
            pointer-events: none;
            
            /* 新增:提升边框层级 */
            z-index: 2;

            background: red;

            -webkit-mask:
                linear-gradient(to right, white, transparent) top 0 left 6px / calc(33.33% - 6px) 1px no-repeat,
                linear-gradient(to bottom, white, transparent) top 6px left 0 / 1px calc(33.33% - 6px) no-repeat,
                linear-gradient(to left, white, transparent) bottom 0 right 6px / calc(33.33% - 6px) 1px no-repeat,
                linear-gradient(to top, white, transparent) bottom 6px right 0 / 1px calc(33.33% - 6px) no-repeat,
                radial-gradient(circle at bottom right, transparent 7px, white 7px, white 8px, transparent 8px) top left / 8px 8px no-repeat,
                radial-gradient(circle at top left, transparent 7px, white 7px, white 8px, transparent 8px) bottom right / 8px 8px no-repeat;
            mask:
                linear-gradient(to right, white, transparent) top 0 left 6px / calc(33.33% - 6px) 1px no-repeat,
                linear-gradient(to bottom, white, transparent) top 6px left 0 / 1px calc(33.33% - 6px) no-repeat,
                linear-gradient(to left, white, transparent) bottom 0 right 6px / calc(33.33% - 6px) 1px no-repeat,
                linear-gradient(to top, white, transparent) bottom 6px right 0 / 1px calc(33.33% - 6px) no-repeat,
                radial-gradient(circle at bottom right, transparent 7px, white 7px, white 8px, transparent 8px) top left / 8px 8px no-repeat,
                radial-gradient(circle at top left, transparent 7px, white 7px, white 8px, transparent 8px) bottom right / 8px 8px no-repeat;
        }

        /* 修改:创建椭圆形光晕效果 */
        .display-box::after {
            content: '';
            position: absolute;
            
            /* 尺寸:椭圆形,宽度60%,高度40% */
            width: 60%;
            height: 0;
            padding-bottom: 40%; /* 使用padding-bottom技巧创建响应式椭圆形 */
            
            /* 定位到左下角 */
            left: 0;
            bottom: 0;

            /* 使用transform将椭圆中心向右移动30% */
            transform: translate(-20%, 50%);
            
            /* 创建椭圆形径向渐变光晕 */
            background: radial-gradient(ellipse at center, rgba(255, 0, 0, 0.25) 0%, transparent 70%);
            
            border-radius: 50%;
        }

        .display-box-content {
            padding: 1.25rem;
            padding-right: 2.5rem;
            box-sizing: border-box;
            overflow-y: auto;
            
            /* 新增:提升内容层级,使其位于光晕之上 */
            position: relative;
            z-index: 1;

            scrollbar-width: thin;
            scrollbar-color: #c1c1c1 #f1f1f1;
        }
        
        .title { font-size: 0.875rem; color: #303133; line-height: 1.5; white-space: nowrap; }
        .title .label { font-weight: bold; color: red; font-size: 1rem; margin-right: 0.5em; }
        .details { margin-top: 0.5rem; }
        .suggestion { margin-top: 1rem; }
        .details h3, .suggestion h3 { font-size: 1rem; color: #303133; margin-top: 0; margin-bottom: 0.25rem; font-weight: 600; }
        .details-content, .suggestion-content { font-size: 0.875rem; color: #606266; line-height: 1.7; }
        .details-content { min-height: 50px; }
    </style>
</head>
<body>

    <div class="display-box">
        <div class="display-box-content">
            <div class="title">
                <span class="label">标题:</span><span>关于系统功能更新的详细说明</span>
            </div>
            <div class="details">
                <h3>详情</h3>
                <div class="details-content">
                    <p>此版本在左下角新增了一个椭圆形的渐变光晕效果,作为视觉点缀。</p>
                </div>
            </div>
            <div class="suggestion">
                <h3>建议</h3>
                <div class="suggestion-content">
                    <p>这个效果是通过 ::after 伪元素结合椭圆形径向渐变和 overflow: hidden 实现的,光晕中点已向右移动。</p>
            </div>
        </div>
    </div>

</body>
</html>
相关推荐
子兮曰1 小时前
深入 HTML-in-Canvas:当 Canvas 学会了渲染 DOM,前端图形生态要变天了
前端·javascript·canvas
ws_qy1 小时前
从大模型原理到前端 AI Coding 工程化实践
前端·ai编程
倾颜1 小时前
React 19 源码主线拆解 04:Fiber 到底是什么,React 为什么需要 Fiber?
前端·react.js·源码阅读
AI攻城狮1 小时前
国产大模型能力大比拼,社区有话说
前端
IT_陈寒2 小时前
Vite的public文件夹放静态资源?这坑我替你踩了
前端·人工智能·后端
涵涵(互关)2 小时前
GoView各项目文件中的相关语法2
前端·javascript·vue.js
子兮曰2 小时前
别让爬虫白嫖你的导航站了:纯免费,手把手实现加密字体防爬
前端·javascript·后端
小村儿3 小时前
连载06 - Hooks 源码深度解析:Claude Code 的确定性自动化体系
前端·后端·ai编程
心中无石马3 小时前
uniapp引入tailwindcss4.x
前端·css·uni-app
焰火19993 小时前
[Vue]可重置的响应式状态reactive
前端·vue.js