纯css布局实现逼真手表秒表指针走动效果代码

代码语言:html

所属分类:布局界面

代码描述:纯css布局实现逼真手表秒表指针走动效果代码

代码标签: 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