使用HTML+CSS美化上传进度条展示

html 复制代码
<!DOCTYPE html>
<html lang="zh‑CN">
<head>
<meta charset="UTF‑8">
<title>上传文件弹窗‑任务队列美化版</title>
<style>
*{box-sizing:border-box;margin:0;padding:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;}
body{background:#777;padding:48px;}

/* ========== 弹窗外层 ========== */
.modal-wrap{
    width:1260px;
    background:#ffffff;
    border-radius:20px;
    box-shadow:0 20px 60px rgba(0,0,0,0.22);
    padding:36px;
    position:relative;
}
.modal-title{
    font-size:26px;
    font-weight:600;
    color:#111827;
    margin-bottom:26px;
}
.btn-close{
    position:absolute;
    top:30px;
    right:30px;
    width:36px;height:36px;
    border-radius:50%;
    border:1px solid #E5E7EB;
    background:#F9FAFB;
    cursor:pointer;
    font-size:20px;
    color:#6B7280;
    transition:all 0.2s;
}
.btn-close:hover{
    background:#E5E7EB;
}

/* ========== 分类下拉 ========== */
.form-label{
    font-size:14px;
    color:#6B7280;
    margin-bottom:8px;
    display:block;
}
.select-box{
    width:100%;
    height:50px;
    border:1px solid #D1D5DB;
    border-radius:12px;
    padding:0 20px;
    font-size:15px;
    color:#111827;
    appearance:none;
    background:#fff;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6‑6'/%3E%3C/svg%3E");
    background-repeat:no-repeat;
    background-position:right 18px center;
    margin-bottom:28px;
    cursor:pointer;
    transition:border 0.2s;
}
.select-box:focus{
    border-color:#165DFF;
    outline:none;
}

/* ========== 上传任务总面板 大改版:增加阴影、分层、更强视觉 ========== */
.upload-task-panel{
    border-radius:16px;
    background:#F8FAFC;
    box-shadow:inset 0 0 0 1px #E2E8F0;
    padding:24px;
}
.task-header-row{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    margin-bottom:16px;
}
.task-left-title h4{
    font-size:19px;
    color:#0F172A;
    margin-bottom:6px;
    font-weight:600;
}
.task-left-title p{
    font-size:14px;
    color:#64748B;
}
.task-count-wrap{
    display:flex;
    gap:12px;
}
.count-badge{
    border:none;
    color:#165DFF;
    background:#E8F3FF;
    font-size:14px;
    font-weight:500;
    padding:6px 14px;
    border-radius:999px;
}

/* 全局进度 */
.progress-global-wrap{
    margin-bottom:24px;
}
.progress-bar-outer{
    width:100%;
    height:12px;
    background:#E2E8F0;
    border-radius:999px;
    overflow:hidden;
}
.progress-bar-inner{
    width:80%;
    height:100%;
    background:linear-gradient(90deg,#15803d,#22c55e);
    border-radius:999px;
}
.progress-percent{
    font-size:14px;
    color:#475569;
    margin-top:8px;
    font-weight:500;
}

/* ========== 单文件任务卡片 强化美化,卡片独立阴影 ========== */
.task-item{
    background:#ffffff;
    border-radius:14px;
    box-shadow:0 2px 10px rgba(22,93,255,0.08);
    padding:18px;
    display:flex;
    align-items:center;
    gap:16px;
    position:relative;
    margin-bottom:20px;
    border:1px solid #EFF6FF;
}
.task-thumb{
    width:80px;
    height:80px;
    border-radius:10px;
    object-fit:cover;
    background:#F1F5F9;
}
.task-info{
    flex:1;
}
.task-filename{
    font-size:17px;
    font-weight:600;
    color:#0F172A;
    margin-bottom:8px;
}
.task-meta{
    font-size:14px;
    color:#64748B;
    display:flex;
    gap:16px;
}
.task-status-tag{
    position:absolute;
    top:18px;
    right:50px;
    border:none;
    color:#165DFF;
    background:#E8F3FF;
    font-size:14px;
    font-weight:500;
    padding:4px 14px;
    border-radius:999px;
}
.task-close-btn{
    position:absolute;
    top:16px;
    right:16px;
    width:30px;height:30px;
    border-radius:50%;
    border:none;
    background:#F1F5F9;
    color:#475569;
    cursor:pointer;
    transition:all 0.2s;
}
.task-close-btn:hover{
    background:#E2E8F0;
}
.item-progress-outer{
    width:100%;
    height:10px;
    background:#E2E8F0;
    border-radius:999px;
    overflow:hidden;
    margin-top:12px;
}
.item-progress-inner{
    width:80%;
    height:100%;
    background:linear-gradient(90deg,#15803d,#22c55e);
    border-radius:999px;
}

/* ========== 底部按钮 ========== */
.btn-footer-wrap{
    display:flex;
    justify-content:flex-end;
    gap:16px;
    margin-top:8px;
}
.btn-clear{
    border:1px solid #CBD5E1;
    background:#ffffff;
    color:#475569;
    font-size:16px;
    padding:13px 30px;
    border-radius:12px;
    cursor:pointer;
    transition:0.2s;
}
.btn-clear:hover{
    background:#F8FAFC;
}
.btn-processing{
    border:none;
    background:#165DFF;
    color:#fff;
    font-size:16px;
    padding:13px 30px;
    border-radius:12px;
    cursor:not-allowed;
    opacity:0.82;
}
</style>
</head>
<body>
<div class="modal-wrap">
    <h2 class="modal-title">上传文件(支持数字病理与常见图像格式)</h2>
    <button class="btn-close">✕</button>

    <label class="form-label">选择分类(可选)</label>
    <select class="select-box">
        <option>📁 未分类</option>
        <option>🔬 病理标本‑A组</option>
        <option>🧪 病理标本‑B组</option>
        <option>🖼 普通图像库</option>
    </select>

    <div class="upload-task-panel">
        <div class="task-header-row">
            <div class="task-left-title">
                <h4>正在预处理切片</h4>
                <p>正在预处理切片:stag‑beetle_l3_flat.jpg</p>
            </div>
            <div class="task-count-wrap">
                <span class="count-badge">1 个文件</span>
                <span class="count-badge">1.83 MB</span>
            </div>
        </div>

        <!-- 全局总进度 -->
        <div class="progress-global-wrap">
            <div class="progress-bar-outer">
                <div class="progress-bar-inner"></div>
            </div>
            <div class="progress-percent">80%</div>
        </div>

        <!-- 单文件任务项 -->
        <div class="task-item">
            <img class="task-thumb" src="https://p3-flow-image-sign.byteimg.com/tos-cn-i-a9rns2rl98/4011008139344148992f421008411311~tplv-a9rns2rl98-image.image" alt="预览图">
            <div class="task-info">
                <div class="task-filename">stag‑beetle_l3_flat.jpg</div>
                <div class="task-meta">
                    <span>未分类</span>
                    <span>1.83 MB</span>
                    <span>80%</span>
                    <span>0.00 MB/s</span>
                </div>
                <div class="item-progress-outer">
                    <div class="item-progress-inner"></div>
                </div>
            </div>
            <span class="task-status-tag">正在切片</span>
            <button class="task-close-btn">✕</button>
        </div>

        <!-- 底部按钮 -->
        <div class="btn-footer-wrap">
            <button class="btn-clear">清空列表</button>
            <button class="btn-processing">处理中...</button>
        </div>
    </div>
</div>
</body>
</html>
相关推荐
何以解忧,唯有..1 小时前
Vue 3 响应式核心:ref() 与 reactive() 的深入解析与实战
前端·javascript·vue.js
晴天161 小时前
Chrome DevTools Protocol(CDP)分享-Day36
前端·chrome·chrome devtools
风骏时光牛马1 小时前
程序员的职场成长:技术之外,更要修炼底层思考力
前端
YWL1 小时前
CSS变量与预处理器
前端·css
朱 欢 庆4 小时前
云服务器附件备份到本机内网服务器
运维·服务器·前端·经验分享
支支დ10 小时前
VO by Vercel 前端特定优势:为什么它是构建 AI 应用的新范式
前端·人工智能
香芋芋圆10 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
INS_KF11 小时前
【编程笔记】成员函数中两个 const 的区别(const Data &getData() const;)
前端·javascript·笔记
宿67411 小时前
vue3-async
前端·javascript·vue.js