body { min-height:100vh; display:flex; justify-content:center; align-items:center; background:#151519; font-family:"Inter",sans-serif; } * { box-sizing:border-box; } svg { padding:0; margin:0; transform:translate3d(0,0,0); } .app { padding:18px; background:#53565B; border-radius:10px; min-width:201px; height:101px; } .actions { display:flex; gap:8px; } .actions .default { width:12px; height:12px; background:gray; border-radius:50%; position:relative; } .actions .default svg { position:absolute; width:12px; height:12px; top:0; left:0; opacity:0; } .actions:hover > .default svg { opacity:1; } .actions:hover .close { background:#EC6A5E; } .actions:hover .min { background:#F3BE4F; } .actions:hover .max { background:C555; } .update { background:#68A7FF; width:12px; height:12px; border-radius:50%; position:relative; } .update svg { position:absolute; width:12px; height:12px; top:0; left:0; } .update svg path.svg-update { opacity:1; transform:scale(1); } .update svg circle.svg-progress { stroke-dashoffset:16px; stroke-dasharray:16px; transform:rotate(270deg); transform-origin:center; } .update.progress svg path.svg-update,.update.refresh svg path.svg-update { opacity:0; transform:scale(.5); } .update.progress svg circle.svg-progress { stroke-dashoffset:0px; transform:rotate(270deg); transition:all 4s linear; } .update svg path.svg-refresh { opacity:0; transform:scale(.2) rotate(-135deg); transition:all .3s ease; transform-origin:center; } .update.refresh svg path.svg-refresh { opacity:1; transform:scale(1) rotate(0); } .tooltip { display:block; position:absolute; left:50%; transform:translate3D(-50%,-10px,0) scale(.5); opacity:0; top:calc(100% + 10px); background:black; color:white; padding:8px 10px; border-radius:5px; transition:all .1s ease; pointer-events:none; font-size:12px; box-shadow:0 1px 3px rgba(0,0,0,.1); } .tooltip:before { content:""; width:8px; height:8px; background:black; display:block; position:absolute; top:-3px; left:calc(50% - 4px); transform:rotate(45deg); border-radius:2px; } .update .tooltip:after { content:"Download Update"; white-space:nowrap; } .update:not(.progress,.refresh)::before { content:""; display:block; position:absolute; top:2px; left:2px; width:8px; height:8px; background-color:#68A7FF; transform-origin:center; border-radius:999px; } .update:hover:before { animation:anim-update 1.2s linear infinite; } .update:hover .tooltip { transform:translate3D(-50%,0,0) scale(1); opacity:1; } .update.progress .tooltip { visibility:hidden; } .update.refresh .tooltip { visibility:visible; } .update.refresh .tooltip:after { content:"Reopen App"; } @keyframes anim-update { 0% { transform:scale(0); opacity:1; } 100% { transform:scale(4); opacity:0; } }
更新时间:2024-01-02 14:50:00
模拟macos窗口样式,可以用于美化页面,提升用户留存。