纯css布局实现逼真手表秒表指针走动效果代码
代码语言:html
所属分类:布局界面
代码描述:纯css布局实现逼真手表秒表指针走动效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> @import url("https://fonts.googleapis.com/css?family=Open+Sans:400,600,700"); body { background-color: #fff; min-height: 100vh; display: flex; align-items: center; justify-content: center; font-family: monospace; } .wrapper { position: relative; } .watch-case { position: absolute; z-index: 4; top: 50%; left: 50%; transform: translate(-50%, -50%); height: 400px; width: 400px; overflow: hidden; background-image: linear-gradient(-45deg, #000, #800, #fdfdfd); border-radius: 50%; box-shadow: 0 0 1px 2px rgba(0,0,0,0.7); } .watch-center { background-image: radial-gradient(#fff, #eeeeef); height: 380px; width: 380px; border-radius: 50%; position: absolute; z-index: 4; left: 50%; top: 50%; transform: translate(-50%, -50%); box-shadow: -1px -1px 1px 0 #fdfdfd, 0 0 0 2px #b8b7c3, inset 0 0 0 2px #d1d1d6, inset 0 0 0 4px rgba(255,255,255,0.7), inset 0 0 8px 8px rgba(0,0,0,0.1), inset 0 0 50px 50px rgba(0,0,0,0.05); } .watch-strap { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); height: 480px; width: 220px; background-color: #101022; border-radius: 6px; z-index: 2; } .watch-strap .strap-circle { position: absolute; height: 409px; width: 409px; background-color: transparent; top: 50%; left: 50%; transform: translate(-50%, -50%); border-radius: 50%; box-shadow: inset -1px 0 8px 3px #151427, 0 0 2px 1px rgba(255,255,255,0.8); } .watch-strap .strap-circle:after { content: ''; display: block; height: 100%; width: 72px; left: -2px; position: absolute; background-color: #fff; } .watch-strap .strap-circle:before { content: ''; display: block; height: 100%; width: 72px; background-color: #fff; position: absolute; right: -2px; } .watch-strap .strap { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); height: 480px; width: 220px; background-color: #000; border-radius: 6px; z-index: 2; box-shadow: -1px 0 1px 0 #800, inset 0 20px 40px -20px #800, inset 0 -20px 40px -20px rgba(0,0,0,0.7); } .watch-strap-holder { position: absolute; background-color: #000; height: 150px; width: 20px; left: -20px; border-radius: 3px; top: -2px; z-index: -1; box-shadow: inset 0 0 4px 1px rgba(0,0,0,0.2); } .watch-strap-holder.left-bottom { transform: scaleY(-1); top: 332px; left: -20px; } .watch-strap-holder.right-up { transform: scaleX(-1); left: 220px; box-shadow: inset 0 0 4px 1px rgba(0,0,0,0.2); } .watch-strap-holder.right-up:after { border-radius: 14px 70px 0 0; box-shadow: inset 0px 3px 1px -2px rgba(0,0,0,0.6), inset -10px -15px 1px 2px #000, inset -2px 10px 4px 2px #000; } .watch-strap-holder.right-bottom { transform: scaleY(-1) scaleX(-1); top: 332px; left: 220px; } .watch-strap-holder.right-bottom:after { border-radius: 14px 70px 0 0; box-shadow: inset 0px 3px 1px -2px rgba(255,255,255,0.6), inset -10px -15px 1px 2px #000, inset -2px 10px 4px 2px #181820; } .watch-strap-holder:before { content: ''; display: block; position: absolute; background-color: #000; height: 150px; width: 10px; border-radius: 3px 0; transform: rotate(4deg); left: -5px; box-shadow: inset 5px 5px 4px -5px rgba(0,0,0,0.2); } .watch-strap-holder:after { content: ''; display: block; position: absolute; background-color: transparent; background-image: linear-gradient(to bottom, transparent, #fff); height: 150px; width: 30px; border-radius: 12px; transform: rotate(4deg); top: 10px; left: -4px; box-shadow: inset -3px 8px 2px 2px #181820; } .reflection { content: ''; display: block; height: 16px; width: 30px; position: absolute; top: 50px; left: 50px; background-color: #080817; filter: blur(1px); transform: rotate(-56deg) skewX(30deg) scale(0.6); } .reflection.bottom { top: 337px; left: 312px; } .reflection.bottom:after { height: 39px; width: 43px; left: -60px; top: -14px; transform: rotate(-44deg); box-shadow: 34px 17px 0 8px #080817; } .reflection:after { content: ''; display: block; background-color: transparent; height: 40px; width: 30px; border-radius: 50%; background-color: transparent; position: absolute; left: -48px; top: -11px; transform: rotate(-69deg); box-shadow: 34px 17px 0 20px #080817; } .reflection:before { content: ''; display: block; background-color: transparent; height: 40px; width: 30px; border-radius: 50%; background-color: transparent; position: absolute; right: 25px; top: 32px; transform: rotate(-69deg); box-shadow: 34px 17px 0 10px #080817, 14px 32px 0 20px #080817; } .watch-points { position: absolute; z-index: 5; top: calc(50% - 6px); left: calc(50% - 1px); transform: translate(-50%, -50%); } .watch-points:after { content: ''; display: block; height: 325px; width: 325px; position: absolute; border: 2px solid #dededf; top: calc(50% + 6px); left: calc(50% + 1px); transform: translate(-50%, -50%); border-radius: 50%; } .watch-points i { display: block; height: 12px; width: 2px; background-image: linear-gradient(to bottom, #c6c6cb, #e0e0e1); position: absolute; } i:nth-child(1) { transform: rotate(6 -6 deg) translate(0, -172px); } i:nth-child(2) { transform: rotate(12 -6 deg) translate(0, -172px); } i:nth-child(3) { transform: rotate(18 -6 deg) translate(0, -172px); } i:nth-child(4) { transform: rotate(24 -6 deg) translate(0, -172px); } i:nth-child(5) { transform: rotate(30 -6 deg) translate(0, -172px); } i:nth-child(6) { transform: rotate(36 -6 deg) translate(0, -172px); } i:nth-child(7) { transform: rotate(42 -6 deg) translate(0, -172px); } i:nth-child(8) { transform: rotate(48 -6 deg) translate(0, -172px); } i:nth-child(9) { transform: rotate(54 -6 deg) translate(0, -172px); } i:nth-child(10) { transform: rotate(60 -6 deg) translate(0, -172px); } i:nth-child(11) { transform: rotate(66 -6 deg) translate(0, -172px); } i:nth-child(12) { transform: rotate(72 -6 deg) translate(0, -172px); } i:nth-child(13) { transform: rotate(78 -6 deg) translate(0, -172px); } i:nth-child(14) { transform: rotate(84 -6 deg) translate(0, -172px); } i:nth-child(15) { transform: rotate(90 -6 deg) translate(0, -172px); } i:nth-child(16) { transform: rotate(96 -6 deg) translate(0, -172px); } i:nth-child(17) { transform: rotate(102 -6 deg) translate(0, -172px); } i:nth-child(18) { transform: rotate(108 -6 deg) translate(0, -172px); } i:nth-child(19) { transform: rotate(114 -6 deg) translate(0, -172px); } i:nth-child(20) { transform: rotate(120 -6 deg) translate(0, -172px); } i:nth-child(21) { transform: rotate(126 -6 deg) translate(0, -172px); } i:nth-child(22) { transform: rotate(132 -6 deg) translate(0, -172px); } i:nth-child(23) { transform: rotate(138 -6 deg) translate(0, -172px); } i:nth-child(24) { transform: rotate(144 -6 deg) translate(0, -172px); } i:nth-child(25) { transform: rotate(150 -6 deg) translate(0, -172px); } i:nth-child(26) { transform: rotate(156 -6 deg) translate(0, -172px); } i:nth-child(27) { transform: rotate(162 -6 deg) translate(0, -172px); } i:nth-child(28) { transform: rotate(168 -6 deg) translate(0, -172px); } i:nth-child(29) { transform: rotate(174 -6 deg) translate(0, -172px); } i:nth-child(30) { transform: rotate(180 -6 deg) translate(0, -172px); } i:nth-child(31) { transform: rotate(186 -6 deg) translate(0, -172px); } i:nth-child(32) { transform: rotate(192 -6 deg) translate(0, -172px); } i:nth-child(33) { transform: rotate(198 -6 deg) translate(0, -172px); } i:nth-child(34) { transform: rotate(204 -6 deg) translate(0, -172px); } i:nth-child(35) { transform: rotate(210 -6 deg) translate(0, -172px); } i:nth-child(36) { transform: rotate(216 -6 deg) translate(0, -172px); } i:nth-child(37) { transform: rotate(222 -6 deg) translate(0, -172px); } i:nth-child(38) { transform: rotate(228 -6 deg) translate(0, -172px); } i:nth-child(39) { transform: rotate(234 -6 deg) translate(0, -172px); } i:nth-child(40) { transform: rotate(240 -6 deg) translate(0, -172px); } i:nth-child(41) { transform: rotate(246 -6 deg) translate(0, -172px); } i:nth-child(42) { transform: rotate(252 -6 deg) translate(0, -172px); } i:nth-child(43) { transform: rotate(258 -6 deg) translate(0, -172px); } i:nth-child(44) { transform: rotate(264 -6 deg) translate(0, -172px); } i:nth-child(45) { transform: rotate(270 -6 deg) translate(0, -172px); } i:nth-child(46) { transform: rotate(276 -6 deg) translate(0, -172px); } i:nth-child(47) { transform: rotate(282 -6 deg) translate(0, -172px); } i:nth-child(48) { transform: rotate(288 -6 deg) translate(0, -172px); } i:nth-child(49) { transform: rotate(294 -6 deg) translate(0, -172px); } i:nth-child(50) { transform: rotate(300 -6 deg) translate(0, -172px); } i:nth-child(51) { transform: rotate(306 -6 deg) translate(0, -172px); } i:nth-child(52) { transform: rotate(312 -6 deg) translate(0, -172px); } i:nth-child(53) { transform: rotate(318 -6 deg) translate(0, -172px); } i:nth-child(54) { transform: rotate(324 -6 deg) translate(0, -172px); } i:nth-child(55) { transform: rotate(330 -6 deg) translate(0, -172px); } i:nth-child(56) { transform: rotate(336 -6 deg) translate(0, -172px); } i:nth-child(57) { transform: rotate(342 -6 deg) translate(0, -172px); } i:nth-child(58) { transform: rotate(348 -6 deg) translate(0, -172px); } i:nth-child(59) { transform: rotate(354 -6 deg) translate(0, -172px); } i:nth-child(60) { transform: rotate(360 -6 deg) translate(0, -172px); } .watch-week { position: absolute; top: calc(50% - 6px); left: calc(50% - 6px); transform: translate(-120px, 40px) rotate(-70deg); z-index: 10; } .watch-week.days { transform: translate(50px, 40px) rotate(-70deg); } .watch-week.days:after { transform: rotate(256deg); } .watch-week.days ul { transform: rotate(169deg) translate(-58px, -17px); } .watch-week.days div { color: #1f1f21; } .watch-week.days div:nth-child(1) { transform: rotate(0) translate(0, -37px) scaleX(-1); } .watch-week.days div:nth-child(2) { transform: rotate(80deg) translate(0, -37px) scaleX(-1) scaleY(-1); } .watch-week.days div:nth-child(3) { transform: rotate(160deg) translate(0, -37px); } .watch-week.days .week-arrow { transform: rotate(115deg) translate(35px, -8px); } .watch-week:after { content: ''; display: block; height: 100px; width: 100px; border-radius: 50%; background-color: transparent; transform: rotate(-64deg); box-shadow: 1px 2px 0 0px #d6d6d3; position: absolute; left: -2px; top: -28px; } .watch-week .week-arrow { position: absolute; top: 50%; left: 50%; transform: translate(19px, 21px) rotate(22deg); width: 45px; height: 2px; background-color: #0f1743; z-index: 5; } .watch-week .week-arrow:after, .watch-week .week-arrow:before { content: ''; position: absolute; display: block; height: 14px; width: 14px; background-color: #ff5456; border-radius: 50%; left: -6px; top: -6px; z-index: -1; } .watch-week .week-arrow:after { background-color: #0f1743; height: 10px; width: 10px; top: -4px; left: -4px; z-index: -1; } .watch-week div { font-weight: bold; font-size: 11px; position: absolute; z-index: 10; height: 12px; width: 12px; display: block; color: #d6d6d3; } .watch-week div:nth-child(1) { transform: rotate(0) translate(0, -45px); } .watch-week div:nth-child(2) { transform: rotate(25deg) translate(0, -45px); } .watch-week div:nth-child(3) { transform: rotate(50deg) translate(0, -45px); } .watch-week div:nth-child(4) { transform: rotate(75deg) translate(0, -45px); } .watch-week div:nth-child(5) { transform: rotate(100deg) translate(0, -45px); } .watch-week div:nth-child(6) { transform: rotate(125deg) translate(0, -45px); color: #ff5456; } .watch-week div:nth-child(7) { transform: rotate(150deg) translate(0, -45px); } .watch-date { position: absolute; top: calc(50% - 100px); left: 50%; font-size: 14px; font-weight: 600; letter-spacing: 1px; transform: translate(-50%, -50%); } .watch-alert { position: absolute; top: calc(50% + 100px); text-transform: uppercase; text-align: center; left: 50%; font-size: 14px; color: #bfbcd8; font-weight: 600; transform: translate(-50%, -50%); } .watch-alert strong { color: #f00; font-weight: 600; } .watch-tips { height: 300px; width: 300px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(-90deg); z-index: 11; } .hours { width: 120px; height: 6px; position: absolute; top: calc(50% - 3px); left: calc(50% - 30px); transform: rotate(153deg); background-color: #000; transform-origin: 30px center; box-shadow: 0 4px 12px 2px rgba(0,0,0,0.15); border-radius: 0 20px 20px 0; z-index: 12; } .hours:after { content: ''; display: block; position: absolute; left: 23px; top: -5px; height: 14px; width: 14px; background-color: #fff; border-radius: 50%; } .seconds { width: 197px; height: 2px; position: absolute; top: 50%; left: calc(50% - 30px); transform: rotate(0deg); animation: 10s seconds linear infinite; background-color: #fe0806; transform-origin: 30px center; box-shadow: 0 0 16px 2px rgba(254,8,6,0.2); border-radius: 0 20px 20px 0; z-index: 15; } .seconds:after { content: ''; display: block; position: absolute; left: 25px; top: -4px; height: 10px; wid.........完整代码请登录后点击上方下载按钮下载查看
网友评论0