GD-ML/AndroidCode
13.4k
1<!DOCTYPE html>2<html lang="en">3<head>4<meta charset="UTF-8">5<meta name="viewport" content="width=1080, initial-scale=1.0">6<title>Mobile UI Mock</title>7<style>8 body { margin: 0; padding: 0; background: transparent; font-family: "Roboto", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif; }9 #render-target {10 width: 1080px;11 height: 2400px;12 position: relative;13 overflow: hidden;14 background: #ffffff;15 border-radius: 36px;16 box-shadow: 0 10px 40px rgba(0,0,0,0.15);17 }18 19 /* Status bar */20 .status-bar {21 position: absolute;22 top: 0;23 left: 0;24 width: 1080px;25 height: 120px;26 background: #CFCFCF;27 color: #FFFFFF;28 display: flex;29 align-items: center;30 justify-content: space-between;31 padding: 0 40px;32 box-sizing: border-box;33 letter-spacing: 0.5px;34 font-weight: 500;35 }36 .status-right {37 display: flex;38 align-items: center;39 gap: 24px;40 }41 .status-icon { width: 40px; height: 40px; }42 43 /* Content area */44 .content {45 position: absolute;46 top: 120px;47 left: 0;48 right: 0;49 bottom: 1144px; /* leaves space for action bar + keyboard + gesture pill */50 background: #FFFFFF;51 }52 .back-wrap {53 position: absolute;54 top: 160px;55 left: 48px;56 width: 72px;57 height: 72px;58 display: flex;59 align-items: center;60 justify-content: center;61 }62 .back-icon { width: 48px; height: 48px; }63 64 /* Action bar above keyboard */65 .action-bar {66 position: absolute;67 bottom: 924px; /* directly above keyboard (900) + gesture (24) */68 left: 0;69 width: 100%;70 height: 220px;71 background: #FFFFFF;72 border-top: 1px solid #ECECEC;73 display: flex;74 align-items: center;75 justify-content: space-around;76 box-shadow: 0 -2px 8px rgba(0,0,0,0.04);77 }78 .action-item {79 width: 300px;80 text-align: center;81 color: #666666;82 font-size: 34px;83 }84 .action-icon {85 width: 88px;86 height: 88px;87 margin: 0 auto 18px auto;88 display: block;89 color: #3E3E3E;90 }91 92 /* Keyboard block */93 .keyboard {94 position: absolute;95 bottom: 24px; /* gesture pill space */96 left: 0;97 width: 100%;98 height: 900px;99 background: #1E1E1E;100 box-sizing: border-box;101 padding: 28px 28px 36px 28px;102 }103 .kb-top-strip {104 height: 100px;105 display: flex;106 align-items: center;107 gap: 28px;108 color: #EAEAEA;109 padding: 0 12px;110 box-sizing: border-box;111 }112 .kb-top-btn {113 width: 84px;114 height: 84px;115 border-radius: 20px;116 background: #2A2A2A;117 display: flex;118 align-items: center;119 justify-content: center;120 font-size: 30px;121 color: #DCDCDC;122 }123 124 .kb-row {125 display: flex;126 gap: 12px;127 margin-top: 24px;128 padding: 0 12px;129 }130 .key {131 width: 80px;132 height: 120px;133 border-radius: 22px;134 background: #2A2A2A;135 color: #D9D9D9;136 display: flex;137 align-items: center;138 justify-content: center;139 font-size: 40px;140 letter-spacing: 0.5px;141 box-shadow: inset 0 -2px 0 rgba(255,255,255,0.03);142 }143 .key-wide { width: 120px; }144 .space { flex: 1; height: 120px; border-radius: 22px; background: #2A2A2A; }145 .key-light { background: #3A3A3A; color: #FFFFFF; }146 147 .search-btn {148 width: 120px;149 height: 120px;150 border-radius: 60px;151 background: #BFD2EA;152 color: #2A2A2A;153 display: flex;154 align-items: center;155 justify-content: center;156 font-size: 42px;157 }158 159 /* Gesture pill */160 .gesture {161 position: absolute;162 bottom: 0;163 left: 50%;164 transform: translateX(-50%);165 width: 220px;166 height: 16px;167 border-radius: 12px;168 background: #BFBFBF;169 opacity: 0.8;170 }171</style>172</head>173<body>174<div id="render-target">175 <!-- Top status bar -->176 <div class="status-bar">177 <div class="status-left">3:28</div>178 <div class="status-right">179 <!-- WiFi -->180 <svg class="status-icon" viewBox="0 0 24 24" fill="none" stroke="#FFFFFF" stroke-width="2">181 <path d="M2 8c5-4 15-4 20 0"/>182 <path d="M6 12c3-3 9-3 12 0"/>183 <path d="M10 16c2-2 4-2 6 0"/>184 <circle cx="12" cy="19" r="1.5" fill="#FFFFFF" />185 </svg>186 <!-- Battery -->187 <svg class="status-icon" viewBox="0 0 26 24" fill="none">188 <rect x="2" y="6" width="18" height="12" rx="2" stroke="#FFFFFF" stroke-width="2"/>189 <rect x="4" y="8" width="14" height="8" fill="#FFFFFF"/>190 <rect x="21" y="9" width="3" height="6" rx="1.2" fill="#FFFFFF"/>191 </svg>192 </div>193 </div>194 195 <!-- Content area -->196 <div class="content">197 <div class="back-wrap">198 <svg class="back-icon" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">199 <path d="M15 5l-7 7 7 7"/>200 </svg>201 </div>202 </div>203 204 <!-- Action bar above keyboard -->205 <div class="action-bar">206 <div class="action-item">207 <svg class="action-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8">208 <rect x="3" y="6" width="18" height="13" rx="3"/>209 <circle cx="12" cy="12.5" r="3.5"/>210 <path d="M9 6l1.5-2h3L15 6"/>211 </svg>212 <div>Take photo</div>213 </div>214 <div class="action-item">215 <svg class="action-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8">216 <rect x="5" y="5" width="14" height="14" rx="2"/>217 <path d="M9 9h6v6H9z"/>218 </svg>219 <div>Scan Code</div>220 </div>221 <div class="action-item">222 <svg class="action-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">223 <path d="M12 2C7.6 2 4 5.6 4 10c0 6 8 12 8 12s8-6 8-12c0-4.4-3.6-8-8-8z"/>224 <circle cx="12" cy="10" r="3"/>225 </svg>226 <div>Find stores</div>227 </div>228 </div>229 230 <!-- Keyboard -->231 <div class="keyboard">232 <div class="kb-top-strip">233 <div class="kb-top-btn">◧</div>234 <div class="kb-top-btn">🙂</div>235 <div class="kb-top-btn">GIF</div>236 <div class="kb-top-btn">⚙️</div>237 <div class="kb-top-btn">G↔︎</div>238 <div class="kb-top-btn">🎨</div>239 <div class="kb-top-btn">🎤</div>240 </div>241 242 <div class="kb-row">243 <div class="key">q</div><div class="key">w</div><div class="key">e</div><div class="key">r</div><div class="key">t</div><div class="key">y</div><div class="key">u</div><div class="key">i</div><div class="key">o</div><div class="key">p</div>244 </div>245 <div class="kb-row">246 <div class="key">a</div><div class="key">s</div><div class="key">d</div><div class="key">f</div><div class="key">g</div><div class="key">h</div><div class="key">j</div><div class="key">k</div><div class="key">l</div>247 </div>248 <div class="kb-row">249 <div class="key key-wide">⇧</div>250 <div class="key">z</div><div class="key">x</div><div class="key">c</div><div class="key">v</div><div class="key">b</div><div class="key">n</div><div class="key">m</div>251 <div class="key key-wide">⌫</div>252 </div>253 <div class="kb-row">254 <div class="key key-wide key-light">?123</div>255 <div class="key">,</div>256 <div class="key">☺</div>257 <div class="space"></div>258 <div class="key">.</div>259 <div class="search-btn">🔍</div>260 </div>261 </div>262 263 <!-- Gesture pill -->264 <div class="gesture"></div>265</div>266</body>267</html>