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