带有渐变光晕

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 小时前
Flutter for OpenHarmony:GridView — 网格布局实现
android·前端·学习·flutter·华为
VX:Fegn08951 小时前
计算机毕业设计|基于ssm + vue超市管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·后端·课程设计
0思必得01 小时前
[Web自动化] 反爬虫
前端·爬虫·python·selenium·自动化
LawrenceLan1 小时前
Flutter 零基础入门(二十六):StatefulWidget 与状态更新 setState
开发语言·前端·flutter·dart
秋秋小事2 小时前
TypeScript 模版字面量与类型操作
前端·typescript
2401_892000522 小时前
Flutter for OpenHarmony 猫咪管家App实战 - 添加提醒实现
前端·javascript·flutter
Yolanda942 小时前
【项目经验】vue h5移动端禁止缩放
前端·javascript·vue.js
广州华水科技4 小时前
单北斗GNSS形变监测一体机在基础设施安全中的应用与技术优势
前端
EndingCoder4 小时前
案例研究:从 JavaScript 迁移到 TypeScript
开发语言·前端·javascript·性能优化·typescript
阿珊和她的猫5 小时前
React 路由:构建单页面应用的导航系统
前端·react.js·状态模式