div+css实现完整的手机在线音乐考试系统网站app的ui页面原型图代码
代码语言:html
所属分类:布局界面
代码描述:div+css实现完整的手机在线音乐考试系统网站app的ui页面原型图代码
代码标签: div css 完整 手机 在线 音乐 考试 系统 网站 app ui 页面 原型图 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover" />
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/all.6.5.1.css">
<style>
:root{
--bg: #f6f7fb;
--canvas-bg: #ffffff;
--panel: #ffffff;
--border: #e8e8ef;
--muted: #8c8fa1;
--text: #222433;
--primary: #6c5ce7;
--primary-2: #4f46e5;
--accent: #00d4ff;
--success: #22c55e;
--warning: #f59e0b;
--danger: #ef4444;
--shadow: 0 8px 30px rgba(23,31,54,.08);
--radius: 16px;
--phone-radius: 24px;
--gap: 40px;
}
*{box-sizing: border-box}
html,body{height:100%}
body{
margin:0;
color:var(--text);
background:
radial-gradient(circle at 1px 1px, rgba(76,81,191,.18) 1px, transparent 2px) 0 0/24px 24px,
linear-gradient(180deg, #f8f9ff 0%, #eef1ff 100%);
font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "PingFang SC","Hiragino Sans GB","Microsoft YaHei", Arial, "Noto Sans CJK SC", sans-serif;
-webkit-font-smoothing: antialiased;
}
/* Viewport + Canvas */
#viewport{
position:fixed; inset:0;
overflow:hidden;
cursor:default;
user-select:none;
}
#viewport.space{ cursor:grab; }
#viewport.panning{ cursor:grabbing; }
#canvas{
position:absolute; left:0; top:0;
transform-origin: 0 0;
will-change: transform;
display:grid;
grid-template-columns: repeat(4, 440px);
grid-auto-rows: auto;
gap: var(--gap);
padding: 60px;
background:
linear-gradient(180deg, rgba(255,255,255,.7), rgba(255,255,255,.7));
border-radius: 24px;
box-shadow: 0 10px 50px rgba(38,45,73,.08);
}
/* HUD (zoom controls) */
.hud{
position:fixed; z-index:10;
left:16px; right:16px; top:12px;
display:flex; align-items:center; justify-content:space-between;
pointer-events:none;
}
.hud .brand{
pointer-events:auto;
display:flex; align-items:center; gap:10px;
padding:8px 12px; border-radius:14px;
background: rgba(255,255,255,.8);
border: 1px solid rgba(0,0,0,.06);
backdrop-filter: blur(10px);
box-shadow: var(--shadow);
font-weight:700; color:#2b2d42;
}
.hud .brand .tag{
font-size:12px; color:#5a5f7c; font-weight:600; padding:3px 8px; border-radius:999px;
background: #f1f3ff; border:1px solid #e7e9ff;
}
.hud .zoom{
pointer-events:auto;
display:flex; gap:8px; align-items:center;
background: rgba(255,255,255,.85);
border: 1px solid rgba(0,0,0,.06);
padding:6px; border-radius:14px; box-shadow: var(--shadow);
}
.hud .zoom button{
appearance:none; border:0; outline:0; cursor:pointer;
background:#fff; border:1px solid var(--border);
width:36px; height:36px; border-radius:10px;
display:grid; place-items:center; color:#374151;
}
.hud .zoom button:hover{ background:#f7f8ff }
.hud .zoom .label{
padding:0 10px; font-weight:700; color:#2b2d42;
min-width:58px; text-align:center;
}
/* Module container */
.module{
position:relative;
width: 440px;
background: var(--panel);
border:1px solid var(--border);
border-radius: var(--radius);
padding: 24px 24px 28px;
box-shadow: var(--shadow);
}
.module-title{
position:absolute; top:-14px; left:18px;
background: linear-gradient(135deg, var(--primary), #7c67ff);
color:white; font-weight:700; font-size:14px;
padding:6px 12px; border-radius:999px; display:inline-flex; align-items:center; gap:8px;
box-shadow: 0 6px 20px rgba(108,92,231,.3);
}
.module .desc{ color:var(--muted); font-size:12px; margin-top:6px }
/* Phone shell */
.phone{
width: 380px; height: 760px; margin: 0 auto;
background: #fff; border: 1px solid #ececf4; border-radius: var(--phone-radius);
overflow:hidden; display:flex; flex-direction:column;
box-shadow: 0 16px 40px rgba(29,37,69,.12);
}
.statusbar{
height: 18px; background: linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,0));
}
.appbar{
display:flex; align-items:center; justify-content:space-between;
padding: 12px 16px;
background: linear-gradient(135deg, rgba(108,92,231,.12), rgba(0,212,255,.10));
border-bottom: 1px solid #eef0ff;
backdrop-filter: blur(8px);
}
.appbar .title{ font-weight:800; letter-spacing:.3px; }
.appbar .right, .appbar .left{ display:flex; align-items:center; gap:10px }
.chip{
display:inline-flex; align-items:center; gap:6px; padding:6px 10px; border-radius:999px;
background:#f4f5ff; border:1px solid #e9ebff; color:#3b3f73; font-weight:600; font-size:12px;
}
.content{
flex:1; overflow:auto; padding: 16px;
background: linear-gradient(180deg, #ffffff 0%, #fbfcff 100%);
}
.tabbar{
height:60px; display:flex; align-items:center; justify-content:space-around;
border-top:1px solid #f0f1f6; background:#fff;
}
.tabbar .item{ display:flex; flex-direction:column; align-items:center; gap:4px; color:#606488; font-size:12px }
.tabbar .item.active{ color: var(--primary) }
/* Forms */
.segmented{
display:flex; background:#f6f7ff; border:1px solid #e8eaff; border-radius:12px; padding:4px; gap:6px;
}
.segmented button{
flex:1; padding:8px 10px; border-radius:8px; border:0; background:transparent; font-weight:700; color:#4b4f7b; cursor:pointer;
}
.segmented button.active{ background:#fff; color:var(--primary); box-shadow: 0 6px 14px rgba(108,92,231,.15) }
.form-row{ display:flex; gap:10px }
.form-group{ margin:10px 0 }
.form-group label{ display:block; font-size:12px; color:#656a8b; margin-bottom:6px }
.input, .select, .textarea{
width:100%; padding:12px 12px;
border:1px solid #e7e9f6; border-radius:12px; outline:0;
background:#fff; font-size:14px;
}
.input:focus, .textarea:focus{ border-color:#cdd2ff; box-shadow: 0 0 0 4px rgba(108,92,231,.10) }
.input-icon{
display:flex; align-items:center; gap:8px; border:1px solid #e7e9f6; border-radius:12px; padding:10px 12px; background:#fff;
}
.input-icon input{ border:0; outline:0; flex:1; font-size:14px }
.input-append{ display:flex; gap:8px; align-items:center }
.input-append input{ flex:1 }
.hint{ color:#8a8fac; font-size:12px }
.agree{ display:flex; align-items:center; gap:8px; font-size:12px; color:#6a6f90; margin-top:8px }
.btn{
appearance:none; border:0; outline:0; cursor:pointer;
display:inline-flex; align-items:center; justify-content:center; gap:8px;
padding:12px 14px; border-radius:12px; font-weight:800; letter-spacing:.2px;
box-shadow: 0 8px 16px rgba(81,56,238,.18);
}
.btn.primary{
background: linear-gradient(135deg, var(--primary), #7c67ff); color:#fff;
}
.btn.secondary{
background:#f3f5ff; color:#3f4580; border:1px solid #e6eaff; box-shadow:none;
}
.btn.outline{
background:#fff; border:1px solid #e7e9f6; color:#3b3f73; box-shadow:none;
}
.btn.success{ background: linear-gradient(135deg, #16a34a, #22c55e); color:#fff }
.btn.paypal{ background:#0147ff; color:#fff }
.btn.wx{ background:#10b981; color:#fff }
.btn.full{ width:100% }
.btn.small{ padding:8px 10px; border-radius:10px; font-weight:700 }
/* Lists, Cards, Badges */
.badge{ display:inline-flex; align-items:center; gap:6px; padding:4px 8px; border-radius:999px; font-size:12px; font-weight:700 }
.badge.free{ background:#ecfdf5; color:#059669; border:1px solid #bbf7d0 }
.badge.paid{ background:#fef3c7; color:#b45309; border:1px solid #fde68a }
.badge.bought{ background:#eef2ff; color:#4f46e5; border:1px solid #e0e7ff }
.card{
border:1px solid #edf0ff; border-radius:14px; overflow:hidden; background:#fff; box-shadow: 0 6px 20px rgba(22,30,70,.06);
}
.card .thumb{ height:120px; background:#eef0ff; position:relative; overflow:hidden }
.card .thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.card .body{ padding:12px 12px 14px }
.row{ display:flex; align-items:center; justify-content:space-between; gap:10px }
.row.wrap{ flex-wrap:wrap }
.chips{ display:flex; gap:8px; flex-wrap:wrap }
.chips .chip{ background:#f4f6ff; border-color:#e6eaff }
.progress{
height:8px; background:#eef1ff; border-radius:6px; overflow:hidden;
}
.progress .bar{ height:100%; background: linear-gradient(135deg, var(--primary), #7c67ff) }
/* Options */
.option{
display:flex; align-items:flex-start; gap:10px; padding:10px; border:1px solid #eef0ff; border-radius:12px; margin-bottom:10px; background:#fff;
}
.option:hover{ border-color:#d9ddff; background:#fbfcff }
.option input{ margin-top:2px; }
.option .text{ flex:1 }
.q-title{ font-weight:800; font-size:16px; margin:8px 0 12px }
.q-meta{ display:flex; gap:8px; color:#6b7095; font-size:12px; align-items:center; flex-wrap:wrap }
.q-index{ font-weight:800; color:#4f46e5 }
.toolbar{ display:flex; gap:10px; align-items:center }
.subtle{ color:#6b7095; font-size:13px }
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:10px }
.grid-3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px }
.list{ display:flex; flex-direction:column; gap:10px }
.list-item{
display:flex; gap:12px; align-items:center; padding:12px; border:1px solid #edf0ff; border-radius:12px; background:#fff;
}
.avatar{ width:38px; height:38px; border-radius:10px; overflow:hidden; background:#eef0ff }
.avatar img{ width:100%; height:100%; object-fit:cover }
/* Score ring */
.ring{
width:160px; height:160px; position:relative;
}
.ring svg{ transform: rotate(-90deg) }
.ring .label{
position:absolute; inset:0; display:grid; place-items:center;
font-weight:900; font-size:28px;
}
/* Helpers */
.divider{ height:1px; background:#f0f1f6; margin:12px 0 }
.muted{ color:#858aae }
.right{ margin-left:auto }
.price{ font-weight:900; color:#111827 }
.skeleton{ background: linear-gradient(90deg,#eef0ff 25%, #f6f8ff 37%, #eef0ff 63%); background-size: 400% 100%; animation: shimmer 1.4s infinite }
@keyframes shimmer{ 0%{background-position:100% 0} 100%{background-position:-100% 0} }
/* Prevent text selection while panning with space */
.noselect{ -webkit-user-select:none; -moz-user-select:none; user-select:none }
</style>
</head>
<body>
<div class="hud">
<div class="brand">
<i class="fa-solid fa-music"></i> MusicExam
<span class="tag"><i class="fa-solid fa-layer-group"></i> 原型画布</span>
</div>
<div class="zoom">
<button id="zoomOut" title="缩小"><i class="fa-solid fa-minus"></i></button>
<div id="zoomLabel" class="label">100%</div>
<button id="zoomIn" title="放大"><i class="fa-solid fa-plus"></i></button>
<button id="zoomFit" title="适配屏幕"><i class="fa-solid fa-expand"></i></button>
<button id="zoomReset" title="重置"><i class="fa-solid fa-rotate-right"></i></button>
</div>
</div>
<div id="viewport" class="noselect">
<div id="canvas">
<!-- 登录页 -->
<section class="module">
<div class="module-title"><i class="fa-solid fa-right-to-bracket"></i> 登录页</div>
<div class="phone">
<div class="statusbar"></div>
<div class="appbar">
<div class="left">
<span clas.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0